본문 바로가기
Docker

도커 인 액션 7장

by xogns93 2024. 12. 6.

Docker 이미지를 생성하고 관리하는 방법

 

 

  1. Docker 이미지 빌드 워크플로
    • 컨테이너 생성: docker container run 명령으로 기존 이미지를 기반으로 새 컨테이너 생성.
    • 파일 시스템 수정: 컨테이너 내에서 파일을 추가, 수정, 삭제 등 변경 작업 수행.
    • 이미지로 커밋: docker container commit 명령으로 컨테이너의 변경 사항을 새로운 이미지로 저장.
  2. 유니온 파일 시스템(UFS)
    • 레이어 구조: Docker 이미지는 여러 레이어로 구성되며, 최상위 레이어에서 변경 사항이 기록.
    • Copy-on-Write: 파일이 수정되거나 삭제되면 새로운 레이어에 변경 사항이 기록되고, 기존 레이어는 불변.
  3. 이미지 생성 예제
    • 간단한 "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
  4. 이미지 속성 관리
    • ENTRYPOINTCMD로 기본 실행 명령 설정.
    • 환경 변수, 작업 디렉터리, 노출된 포트 등을 컨테이너 메타데이터에 포함 가능.
  5. 레이어와 파일 시스템 변경 관리
    • docker container diff 명령으로 변경된 파일 확인.
    • 파일 삭제(D), 추가(A), 변경(C) 상태를 출력.
  6. 이미지 크기 최적화
    • 변경된 파일은 상위 레이어에 기록되므로 삭제된 파일도 이미지 크기를 증가시킬 수 있음.
    • 필요 없는 파일과 레이어를 최소화하여 이미지 크기 관리.
  7. 플랫 이미지
    • docker container export로 플랫한 .tar 파일 생성.
    • docker import로 플랫 이미지를 다시 Docker로 가져와 간결한 이미지를 생성.
    • 예: 최소 실행 파일로 구성된 Go 애플리케이션 이미지 생성.
  8. 이미지 버전 관리
    • 이미지에 태그(docker tag)를 추가하여 버전을 구분.
    • 기존 이미지를 수정하기보다 새 태그로 브랜치 생성 추천.
  9. 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