도커를 다룬다면 이미지에 대한 이해는 필수다. 이미지가 있어야 컨테이너가 동작하고, 이미지를 잘 다뤄야 배포와 테스트가 효율적이기 때문이다. 이 글에서는 Docker 이미지의 구조, 명령어 흐름, 내부 확인 방법까지 하나씩 정리해본다.
Docker image
- 컨테이너를 실행하기 위한 인프라 템플릿
- 애플리케이션 실행에 필요한 라이브러리, 설정, 패키지 등을 포함함
- 불변(Read-only) 구조
- 직접 수정은 불가능, 새로운 이미지를 생성하는 방식으로 갱신함
Docker 이미지 흐름 : Workflow
단계 | 설명 | 관련 명령어 |
1 | 이미지 생성 | docker build |
2 | 이미지 확인 | docker images, docker inspect, docker history |
3 | 이미지 실행 | docker run |
4 | 컨테이너 조작 후 새로운 이미지 생성 | docker commit |
5 | 도커 허브에 업로드 | docker tag, docker push |
6 | 다른 환경에서 다운로드 | docker pull |
예시
# Dockerfile을 기반으로 이미지 빌드
docker build -t myapp:latest .
# 실행
docker run -d --name my-container myapp:latest
# 변경 후 커밋
docker commit my-container myapp:updated
# 태그 후 푸시
docker tag myapp:updated myrepo/myapp:v2
docker push myrepo/myapp:v2
# 다른 서버에서 pull
docker pull myrepo/myapp:v2
Docker 이미지 구조
도커 이미지는 레이어 기반 구조를 가진다. 이 구조 덕분에 효율적인 캐싱과 공간 절약이 가능하다.
레이어 구조 예시
이미지 A
└─ Layer 1: OS (Ubuntu)
└─ Layer 2: Python 설치
└─ Layer 3: 애플리케이션 복사
└─ Layer 4: 설정 파일
컨테이너 실행 시
└─ Layer 5: 컨테이너 레이어 (읽기/쓰기 가능)
- 이미지 레이어는 읽기 전용
- 컨테이너가 실행되면 최상단에 쓰기 가능한 레이어가 추가됨
- 이 구조는 Union File System 기반
내부 구조 확인 명령어
명령어 | 설명 |
docker inspect <image> | 이미지의 메타 정보 확인 |
docker history <image> | Dockerfile 명령 단위 레이어 추적 |
docker image ls | 이미지 목록 보기 |
docker image rm <image> | 이미지 삭제 |
docker inspect 예시
docker inspect myapp:latest
docker history 예시
docker history myapp:latest
IMAGE CREATED CREATED BY SIZE
<image-id> 3 minutes ago COPY app.py /app/app.py 1.2kB
<image-id> 3 minutes ago RUN pip install -r requirements.txt 89.4MB
<image-id> 3 minutes ago FROM python:3.9 0B
이미지와 컨테이너 관계
항목 | 설명 |
이미지 | 불변(Read-only), 재사용 가능한 코드 스냅샷 |
컨테이너 | 이미지 기반으로 실행된 인스턴스. Read/Write 가능한 계층 추가 |
커밋(commit) | 컨테이너 변경 내용을 새 이미지로 저장 |
태그(tag) | 이미지에 이름 붙이기 |
digest | 이미지의 고유 해시값, 정확한 식별자 역할 |
예제 : 간단한 웹 서버 이미지 만들기
Dockerfile
FROM python:3.9-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["python", "app.py"]
명령어 실행
# 이미지 빌드
docker build -t simple-web:latest .
# 실행
docker run -d -p 5000:5000 --name web simple-web
# 이미지 확인
docker inspect simple-web
docker history simple-web
도커 이미지는 단순한 실행 파일이 아니라, 계층 구조로 구성된 불변의 인프라로 캐시 최적화, 이미지 슬림화, 배포 자동화 등 다양한 영역에서 효율적인 작업이 가능해진다.
반응형
'Infra > Docker & Kubernetes' 카테고리의 다른 글
Docker CLI 명령어 총정리 (0) | 2025.06.17 |
---|---|
Docker Hub 및 Private Registry에 이미지 Push하는 방법 (2) | 2025.06.08 |
Docker란? 컨테이너 기반 가상화 플랫폼의 핵심 이해 (1) | 2025.05.31 |
컨테이너란? 개발자라면 꼭 알아야 할 기초 개념 (5) | 2025.05.29 |
댓글