Docker 이미지를 생성하고 관리하는 방법
- Docker 이미지 빌드 워크플로
- 컨테이너 생성:
docker container run
명령으로 기존 이미지를 기반으로 새 컨테이너 생성. - 파일 시스템 수정: 컨테이너 내에서 파일을 추가, 수정, 삭제 등 변경 작업 수행.
- 이미지로 커밋:
docker container commit
명령으로 컨테이너의 변경 사항을 새로운 이미지로 저장.
- 컨테이너 생성:
- 유니온 파일 시스템(UFS)
- 레이어 구조: Docker 이미지는 여러 레이어로 구성되며, 최상위 레이어에서 변경 사항이 기록.
- Copy-on-Write: 파일이 수정되거나 삭제되면 새로운 레이어에 변경 사항이 기록되고, 기존 레이어는 불변.
- 이미지 생성 예제
- 간단한 "Hello, World" 파일 추가:
docker container run --name hw_container ubuntu:latest touch /HelloWorld docker container commit hw_container hw_image docker container rm hw_container
- Git 설치:
docker container run -it ubuntu:latest /bin/bash apt-get update apt-get install -y git exit docker container commit image-dev ubuntu-git
- 간단한 "Hello, World" 파일 추가:
- 이미지 속성 관리
ENTRYPOINT
와CMD
로 기본 실행 명령 설정.- 환경 변수, 작업 디렉터리, 노출된 포트 등을 컨테이너 메타데이터에 포함 가능.
- 레이어와 파일 시스템 변경 관리
docker container diff
명령으로 변경된 파일 확인.- 파일 삭제(
D
), 추가(A
), 변경(C
) 상태를 출력.
- 이미지 크기 최적화
- 변경된 파일은 상위 레이어에 기록되므로 삭제된 파일도 이미지 크기를 증가시킬 수 있음.
- 필요 없는 파일과 레이어를 최소화하여 이미지 크기 관리.
- 플랫 이미지
docker container export
로 플랫한.tar
파일 생성.docker import
로 플랫 이미지를 다시 Docker로 가져와 간결한 이미지를 생성.- 예: 최소 실행 파일로 구성된 Go 애플리케이션 이미지 생성.
- 이미지 버전 관리
- 이미지에 태그(
docker tag
)를 추가하여 버전을 구분. - 기존 이미지를 수정하기보다 새 태그로 브랜치 생성 추천.
- 이미지에 태그(
- Dockerfile 활용
- 수작업 대신 Dockerfile로 빌드 프로세스를 자동화.
- Scratch 이미지를 사용해 최소화된 새 이미지를 빌드 가능.
핵심 포인트:
- Docker 이미지는 유니온 파일 시스템으로 동작하며, 변경 사항은 새로운 레이어로 기록.
- 이미지 크기를 관리하고, 재사용성을 높이기 위해 레이어와 메타데이터를 효율적으로 설계.
- Dockerfile을 사용하여 반복 작업을 자동화하고 이미지를 체계적으로 관리.
'Docker' 카테고리의 다른 글
바인드 마운트(Bind Mount)와 볼륨(Volumes) (0) | 2024.12.10 |
---|---|
도커 인 액션 8장 (2) | 2024.12.06 |
Dockerfile 명령어 (0) | 2024.12.06 |
유니온 파일시스템 (1) | 2024.12.06 |
Docker의 CMD와 ENTRYPOINT (0) | 2024.12.06 |