본문 바로가기
Infra/Docker & Kubernetes

Docker 이미지 구조와 흐름 이해하기

by 워니 wony 2025. 6. 6.

도커를 다룬다면 이미지에 대한 이해는 필수다. 이미지가 있어야 컨테이너가 동작하고, 이미지를 잘 다뤄야 배포와 테스트가 효율적이기 때문이다. 이 글에서는 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
 

 

도커 이미지는 단순한 실행 파일이 아니라, 계층 구조로 구성된 불변의 인프라로 캐시 최적화, 이미지 슬림화, 배포 자동화 등 다양한 영역에서 효율적인 작업이 가능해진다.

반응형

댓글