지난번 Image / Container가 UnionFS를 이용해 어떻게 레이어을 구성하는 지도 봤고
이를 통해 docker run을 했을 때 내부에서 어떻게 구현되는 지도 간단히 살펴봤다.
오늘은 이 핵심 요소 이미지, 컨테이너에 대한 정의와 명령어들에 대해 알아본다.
Image
이미지는 컨테이너를 위한 blueprint, 템플릿이다.
- 특징
- 읽기 전용(Read-only)이며, 애플리케이션뿐만 아니라 필요한 환경(OS, 런타임, 도구 등)을 모두 포함한다.
- 이미지 자체는 실행되지 않으며, 컨테이너로서 실행되어야 한다.
- 생성 방식
- DockerHub 등에 있는 공식 이미지를 사용하거나, Dockerfile을 정의하여 직접 빌드할 수 있다.
- Dockerfile 명령어들은 이미지 빌드 시 실행되며, 각 명령어는 하나의 레이어를 형성한다.
- 이 레이어 방식을 통해 효율적인 재빌드, 공유가 가능하다.
- CMD 명령어
- Dockerfile 내의 CMD 명령어는 빌드 시점이 아니라, 이미지를 기반으로 컨테이너가 생성되고 시작될 때 실행된다.
Container
이미지의 실행 인스턴스다.
생명주기

- 특징
- 이미지 위에 얇은 Read Write Layer가 추가된 형태다.
- 하나의 이미지로 여러 개의 컨테이너를 시작할 수 있다.
- 모든 컨테이너는 격리된 상태로 실행되며, 애플리케이션 상태나 데이터를 공유하지 않는다.
- 애플리케이션을 시작하려면 반드시 컨테이너를 생성하고 시작해야 한다.
- 개발 및 운영 환경에서 실제로 실행되는 주체다.
Commands
- 빌드 및 실행
- docker build . : Dockerfile을 기반으로 이미지를 생성한다.
-
-t NAME:TAG: 이미지에 이름과 태그를 지정한다.
-
- docker run IMAGE_NAME: 이미지를 기반으로 새 컨테이너를 생성하고 시작한다.
- --name NAME: 컨테이너에 이름을 부여한다. (중지/삭제 시 유용)
- -d: Detached 모드. 백그라운드에서 실행되며 터미널에 출력이 보이지 않고 멈추지 않는다.
- -it: Interactive 모드. 터미널 입력을 받을 수 있는 상태로 실행된다.
- 이 모드에서는 cmd + c 로 컨테이너를 중지할 수 있다.
- --rm: 컨테이너가 중지되면 자동으로 삭제한다.
- docker run 옵션 추가
- -p HOST_PORT:CONTAINER_PORT: 포트 매핑 (외부 접근 허용)
- -v HOST_PATH:CONTAINER_PATH: 볼륨 마운트 (데이터 영속성)
- -e KEY=VALUE: 환경 변수 설정
- --network NETWORK: 네트워크 지정
- docker build . : Dockerfile을 기반으로 이미지를 생성한다.
- 조회 및 관리
- docker ps : 현재 실행 중인 컨테이너 목록을 보여준다.
- -a : 중지된 것을 포함한 모든 컨테이너를 보여준다/
- docker images: 로컬에 저장된 모든 이미지를 나열한다.
- docker rm CONTAINER : 컨테이너(이름 또는 ID)를 삭제한다.
- docker rmi IMAGE : 이미지(이름 또는 ID)를 삭제한다.
- docker ps : 현재 실행 중인 컨테이너 목록을 보여준다.
- 정리(Prune)
- docker container prune : 중지된 모든 컨테이너를 삭제한다.
- docker image prune : 이름이 없는(dangling) 이미지를 삭제한다.
- -a : 로컬에 저장된 모든 이미지를 삭제한다.
- 배포 및 가져오기
- docker push IMAGE : DockerHub나 레지스트리에 이미지를 업로드한다.
- 이미지 이름에 저장소 URL이 포함되어야 한다.
- docker pull Image : 이미지를 다운로드 한다.
- docker run 시 이미지가 없으면 자동으로 수행된다.
- docker push IMAGE : DockerHub나 레지스트리에 이미지를 업로드한다.
- 컨테이너 제어 & 디버깅
- docker start CONTAINER : 중지된 컨테이너를 다시 시작
- docker stop CONTAINER : 실행 중인 컨테이너를 정지 (SIGTERM)
- docker logs CONTAINER : 컨테이너의 로그 확인
- -f : 실시간으로 로그 따라긱
- docker exec -it CONTAINER sh/bash : 실행 중인 컨테이너 내부에 접속
- docker inspect CONTAINER/IMAGE : 상세 정보 확인 (JSON 형식)
- 이미지 관리
- docker tag SOURCE_IMAGE TARGET_IMAGE: 이미지에 새로운 태그 추가
- docker history IMAGE: 이미지 레이어 히스토리 확인
반응형
'Infra > Docker' 카테고리의 다른 글
| Docker Networks (0) | 2025.12.12 |
|---|---|
| Docker Data & Volumes (0) | 2025.12.12 |
| Container의 근반이 되는 기술에 대해 알아보자(완) UnionFS (0) | 2025.12.11 |
| Container의 근반이 되는 기술에 대해 알아보자(2) cgroup (0) | 2025.12.11 |
| Container의 근반이 되는 기술에 대해 알아보자(1) namespace (0) | 2025.12.11 |