[Docker] Docker commit, save, load 차이점 정리
by ymkim01. 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 모두 image를 file로 생성
- 새로운 이미지 생성하면서 -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 image를 tar 파일로 저장
- ubuntu image를 export.tar 파일로 저장 가능
- export는 컨테이너를, save는 이미지를 archive 하는 차이점 존재
- export한 tar 파일은 import로, save로 생성한 파일은 load로 이미지화 필요
- export, save는 압축하는 파일 구조 및 디렉토리가 다름
- 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
'Containerize > Docker - hands-on' 카테고리의 다른 글
[Docker] Docker namespace, cgroup 정리 (0) | 2025.01.06 |
---|---|
[Docker] Dockerfile 옵션 관련 정리(ADD, COPY, ENV, ARG, ENTRYPOINT, FROM) (1) | 2024.02.07 |
[Docker] Docker, Kubernetes, EKS 까지의 흐름 (0) | 2023.04.23 |
[Docker] Docker 기본 명령어 정리 (0) | 2023.04.23 |
블로그의 정보
기록하고 정리하는 공간
ymkim