[Docker] 도커 컨테이너 구조, 도커 명령어

2026. 2. 3. 11:55·프로젝트/Docker

1. 도커 컨테이너 레이어 구조

 

  • 이미지 레이어 (Read-Only): 도커 허브에서 내려받은 이미지는 수정이 불가능한 읽기 전용 상태.
  • 컨테이너 레이어 (Read/Write): 이미지를 기반으로 컨테이너를 실행하면 그 위에 쓰기 가능한 레이어가 한 층 더 쌓인다.
  • 데이터의 저장: 우리가 컨테이너 안에서 파일을 만들거나 설정을 바꿔도 실제 이미지는 변하지 않는다. 모든 변경 사항은 가장 위의 컨테이너 레이어에만 저장되기 때문이다.

 

[이미지와 컨테이너 비교]

  • 이미지는 클래스(Class), 컨테이너는 인스턴스(Instance)에 비유해서 생각해보면 된다.
  • 이미지는 애플리케이션을 실행하기 위한 모든 환경이 응축된 그 실행 당시의 스냅샷이다.
  • 컨테이너는 그 이미지를 실행(run)할 때 메모리에 독립적인 공간이 할당되어 동작하는 것이다.
  이미지 컨테이너
상태 정적임 (실행되지 않는 파일 묶음) 동적임 (실행 중인 프로세스 상태)
속성 읽기 전용 (Read Only) 읽기, 쓰기 가능 (Read/Write)
구성 앱 실행에 필요한 코드, 라이브러리, OS 유저랜드(실행환경) 이미지 + 변경사항을 저장할 추가 레이어

 

 

[레이어 공유 방식의 장점 : 효율성]

  1. 용량 절약: 같은 OS 이미지를 사용하는 컨테이너가 10개 있어도, 읽기 전용 레이어는 단 하나만 저장하고 공유한다.
  2. 속도 및 성능: 동일한 이미지 레이어를 재사용하므로 컨테이너를 생성하고 실행하는 속도가 매우 빠르다.

2. 도커 명령어

docker [대상] [커맨드] [옵션] [인자]

// 예시
docker container run -d ubuntu
  • 대표적인 커맨드 대상: `container`, `image`, `volume`, `network`

 

[도움말 확인법]

  1. `docker` 입력
  2. `docker [커맨드 대상] --help` 입력
  3. 위와 같은 방법으로 커맨드 수준을 높이고 뒤에 `--help` 입력

 

1. `docker container` 이후 작성하는 주요 커맨드

커맨드 설명 주요 옵션
`run` 이미지를 내려받고 컨테이너를 생성 및 실행 `--name`, `-e`, `-p`, `-v`, `-d`, `-i`, `-t`
`start` 컨테이너 실행 `-i`
`stop` 컨테이너 정지  
`create` 컨테이너 생성 `--name`, `-e`, `-p`, `-v`
`ls` 컨테이너 목록 출력 `-a` (a 옵션이 없으면 실행중인 컨테이너만 출력)
`rm` 컨테이너 삭제 `-f`, `-v`
`cp` 컨테이너와 호스트 간 파일 복사  
`exec` 컨테이너를 프로그램에서 실행 `-i`, `-t`
`commit` 컨테이너를 이미지로 변환  

 

 

2. `docker image` 이후 작성하는 주요 커맨드

커맨드 설명 주요 옵션
`pull` 이미지를 내려 받음  
`rm` 이미지 삭제  
`ls` 가지고 있는 이미지 목록을 출력  
`build` 이미지 생성 `-t`

 

 

3. 주요 옵션

옵션 설명
`--name` 컨테이너 이름
`-p` 포트번호 지정 (port)
`-v` 볼륨 지정 (volume)
`-e` 환경변수 지정 (environment variable)
`-d` 백그라운드 실행 (detach)
`-i` 컨테이너에 터미널 연결 (interactive)
`-t` 특수 키를 사용가능하게 설정 (TTY, 터미널 환경 할당 → 화면 출력, 특수 키 입력을 도움)
`-it` 일반적으로 `-i`, `-t`를 묶어서 `-it`로 사용한다. → 상호작용 가능한 터미널 환경을 만들기 위해

 

 

'프로젝트 > Docker' 카테고리의 다른 글

[Docker] Dockerfile 작성하기  (0) 2026.02.05
[Docker] 도커 컨테이너 통신 (포트포워딩)  (0) 2026.02.03
[Docker] 도커는 무엇인가?  (0) 2026.01.30
'프로젝트/Docker' 카테고리의 다른 글
  • [Docker] Dockerfile 작성하기
  • [Docker] 도커 컨테이너 통신 (포트포워딩)
  • [Docker] 도커는 무엇인가?
sophon
sophon
sophon 님의 블로그 입니다.
  • sophon
    sophon 님의 블로그
    sophon
    • 카테고리 (172) N
      • 컴퓨터공학 (36)
        • 데이터베이스 (19)
        • 네트워크 (15)
        • 기타 이슈 (2)
      • 프로젝트 (16) N
        • Java (8)
        • Spring (4) N
        • Docker (4)
      • 코딩테스트 (95) N
        • BOJ (74)
        • 프로그래머스 (7)
        • 프로그래머스 SQL (12) N
        • PS Snippets (2)
      • 🌱 잡담 (22)
        • 자격증 (7)
        • 좋은 시 모음 (12)
        • 책과 영화 (3)
        • 기록 (0)
  • 전체
    오늘
    어제
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
sophon
[Docker] 도커 컨테이너 구조, 도커 명령어
상단으로

티스토리툴바