Docker Image - 추출, 생성, 복원

y001·2025년 2월 23일
0
post-thumbnail

1. 주요 명령어

명령어설명
docker export컨테이너의 파일 시스템을 .tar 파일로 저장 (레이어 정보 없음)
docker save도커 이미지를 .tar 파일로 저장 (레이어 정보 포함)
docker importexport한 컨테이너 파일 시스템을 이미지로 변환
docker loadsave한 도커 이미지를 그대로 복원
docker commit실행 중인 컨테이너 상태를 새로운 이미지로 저장
docker buildDockerfile을 사용하여 이미지를 생성
docker attach실행 중인 컨테이너에 다시 접속

2. docker export vs docker save

도커에서 컨테이너나 이미지를 파일로 저장할 수 있는데, exportsave의 차이를 이해하는 것이 중요하다.

명령어대상특징활용 사례
docker export컨테이너레이어 정보 없이 파일 시스템만 저장컨테이너 상태를 저장하고 단순 백업할 때
docker save이미지모든 레이어와 메타데이터까지 포함다른 환경에서 그대로 이미지를 복원할 때

예제

컨테이너를 .tar 파일로 저장 (레이어 정보 없음)

docker export -o container.tar <컨테이너_ID>

저장한 컨테이너를 다시 가져오기

cat container.tar | docker import - my_custom_image

이미지를 .tar 파일로 저장 (레이어 정보 포함)

docker save -o image.tar my_image

이미지를 다시 로드하기

docker load -i image.tar

3. docker commit vs docker build

도커 이미지를 생성하는 방법은 크게 두 가지가 있다.

방식특징장점단점
docker commit컨테이너 상태를 기반으로 이미지 생성빠르게 커스텀 이미지 생성 가능변경 내역이 기록되지 않아 관리 어려움
docker buildDockerfile 기반으로 이미지 생성버전 관리 용이, 재현성 확보Dockerfile 작성 필요

예제

컨테이너 변경 사항을 포함하여 새로운 이미지 생성

docker commit <컨테이너_ID> my_custom_image

Dockerfile을 사용하여 이미지 생성

docker build -t my_custom_image .

결론: 실무에서는 유지보수가 용이한 docker build 방식을 권장한다.


4. Control + P + Q로 컨테이너에서 빠져나오는 이유

도커 컨테이너 내부에서 실행 중인 상태를 유지하면서 터미널을 빠져나오려면 Control + P + Q 단축키를 사용할 수 있다.

동작설명
Ctrl + C컨테이너가 종료됨
quit (일반적인 종료 명령)컨테이너가 Exited 상태가 됨
Control + P + Q컨테이너 실행 상태를 유지한 채 터미널에서 빠져나옴
docker attach <컨테이너_ID>다시 컨테이너에 접속

예제

  1. 컨테이너 실행
    docker run -it --name test_container ubuntu /bin/bash
  2. quit 또는 exit 입력 시 컨테이너가 종료(Exited) 상태가 되어버림.
    exit
    docker ps -a  # 컨테이너 상태 확인 -> Exited 상태가 됨
  3. 컨테이너를 종료하지 않고 빠져나오려면
    Control + P + Q를 사용해야 함.
  4. 다시 컨테이너로 접속하려면
    docker attach test_container

주의점

  • 일반적으로 quitexit을 입력하면 컨테이너가 종료됨(Exited 상태)
  • 컨테이너를 종료하지 않고 터미널에서 빠져나오려면 Control + P + Q를 사용해야 함
  • 이미 종료된 컨테이너를 재시작하려면 docker start -ai <컨테이너_ID>를 사용

5. docker image import vs docker load

컨테이너 또는 이미지를 .tar 파일로 저장할 때, 이를 다시 가져오는 방법은 두 가지가 있다.

명령어대상특징
docker import컨테이너 파일 시스템레이어 정보 없이 새로운 이미지로 생성
docker load이미지 파일레이어 정보 유지, 원본 이미지 그대로 복원

예제

컨테이너 파일 시스템을 import하여 이미지 생성

cat rootfs.tar | docker import - my_custom_image

도커 이미지 전체를 load하여 복원

docker load -i image.tar

결론: 원본 이미지 그대로 사용하려면 docker save/load가 적합하며, 불필요한 레이어를 제거하고 싶은 경우 docker export/import를 사용할 수 있다.

0개의 댓글