기록하고 정리하는 공간

[Docker] Docker commit, save, load 차이점 정리

by ymkim

01. docker commit(docker container -> docker image)

# -a: author
# -m: message
# -c: commit시, Dockerfile 명령 지정 [CMD, ENV]
# -p: 컨테이너 일시 정지 후 commit
# docker commit [option] [contianer id] [image:tag]
docker commit 5ca230103304 custom:latest

컨테이너 내에서 작업 진행 중 현재 상태를 기억하기 위해 commit 사용
commit을 사용하면 해당 컨테이너를 기반으로 image 생성 가능

  • 실행중인 컨테이너변경 사항저장새로운 이미지 생성
  • export와 다른 부분은 commit새로운 image 생성
  • export/save 모두 imagefile로 생성
  • 새로운 이미지 생성하면서 -c 옵션을 통해 CMD, ENV 명령어 적용 가능

02. docker save(docker image -> tar)

# 특정 이미지를 tar 파일로 export
# save는 image를 대상으로 file로 export
$ docker save -o export.tar ubuntu_test_image

docker save를 사용하면 특정 image를 기반으로 .tar 파일 생성 가능
export와 다른 부분은 레이어 계층만 archive를 한다는 부분과 해당 tar 파일은 load를 통해 다시 image화 진행
즉, image -> .tar 변환 시 사용

  • Docker imagetar 파일로 저장
    • ubuntu image를 export.tar 파일로 저장 가능
  • export컨테이너를, save이미지archive 하는 차이점 존재
  • export한 tar 파일은 import로, save로 생성한 파일은 load로 이미지화 필요
    • export, save압축하는 파일 구조디렉토리가 다름
      • export: 컨테이너루트 파일 시스템 전체가 들어가있음
      • save: 레이어 구조까지 포함한 형태로 압축

03. docker load(tar -> docker image)

# tar 파일 image로 변환
$ docker load -i <tar_파일명>

.tar 파일 image 변환 시 사용

  • save에 의해 tar로 만들어진 .tar 파일을 다시 이미지로 로드

04. docker export(docker container -> tar)

# tar 파일로 생성
# 루트 디렉토리까지 모두 아카이빙
$ docker export -o <파일명.tar> <container_id>
  • export는 image가 아닌 실행중인 container 대상 .tar 파일 저장 제공

05. docker import(tar -> docker image)

# tar 파일 기반 docker image 생성
$ docker import <파일명.tar> <이미지명>
  • export 커멘드를 기반으로 만든 .tar 파일을 docker image로 생성하는 명령어

99. 참고 자료

 

[docker] import vs save vs commit

docker hub를 이용하지 않고, docker image를 배포하기 위해서는 기존 docker image를 복제하여 remote 서...

blog.naver.com

 

[DevOps/Docker] 이미지 생성 (commit, export, import, save, load) & docker system prune

Docker 컨테이너는 Docker 이미지를 바탕으로 작성하지만 반대로 Docker 컨테이너를 바탕으로 Docker Image를 작성할 수도 있다. 예를 들어 저장소에서 취득한 공식 이미지를 바탕으로 컨테이너를 만들

nomad-programmer.tistory.com

 

docker image를 tar 파일로 저장 (export / import / save / load)

docker build나 commit으로 만들어진 이미지는 일반적으로 docker hub와 같은 registry에 push되고, 이를 다시 pull 받는 방식으로 사용된다. 하지만, 간혹 docker 이미지를 registry를 거치지 않고 이동해야 할 때

www.leafcats.com

블로그의 정보

기록하고 정리하는 공간

ymkim

활동하기