docker export와 docker import를 먼저 살펴본다.
1. docker export : container를 tar파일로 저장한다.
$ docker export (컨테이너명 or 컨테이너 ID) > (컨테이너).tar
2. docker import : tar 파일을 다시 docker 이미지로 생성한다. export의 반대이다.
$ docker import (파일 또는 URL)
docker save와 docker load를 살펴본다.
1. docker save : docker 이미지를 tar 파일로 저장한다
$ docker save -o rabbitmq_managment.tar rabbitmq:managment
2. docker load : tar파일 이미지를 docker 이미지로 저장한다.
$ docker load -i rabbitmq_managment.tar
간단히 보면 그냥 간단해 보이는데. 사실은 좀 차이가 있다.
커맨드 |
결과 유형 |
사용처 |
소스 유형 |
export |
|
컨테이너 파일 시스템 |
컨테이너 |
import |
도커 이미지 |
플랫 파일 시스템 |
TAR 파일 |
save |
TAR 파일 |
도커 이미지(히스토리 포함) |
이미지 |
load |
도커 이미지 |
도커 이미지(히스토리포함) |
TAR 파일 |
플랫(flat) 파일 시스템 - 하위 디렉토리 없이 파일들을 포함하는 하나의 디렉토리를 의미한다
docker export와 import 커맨드는 플랫 파일 시스템에서 동작한다.
docker export 커맨드는 컨테이너 상태를 구성하는 TAR 파일을 생성한다. 도커와 마찬가지로 프로세스 실행 상태는 저장되지 않는다. 즉 파일만 저장한다. docker import 커맨드는 TAR 파일에서 히스토리 또는 메타 데이터가 없는 도커 이미지를 생성한다.
docker import 및 docker export 커맨드는 대칭적이지 않다.
즉 docker import 및 docker export 커맨드만 사용해서는 기존 컨테이너에서 컨테이너를 생성할 수 없다. 비대칭은 유용하다. docker export는 이미지를 TAR 파일로 내보내고 docker import는 모든 계층 히스토리와 메타 데이터를 “삭제”하기에 비대칭이 유용할 수 있다.
TAR 파일로 내보내거나 저장하고 싶다면 기본적으로 stdout으로 전송되기에 다음처럼 파일로 저장한다.
$ docker save rabbitmq:management > rabbitmq_management.tar
방금 생성 한 것처럼 TAR 파일을 네트워크으로 안전하게 전송할 수 있다. 전송 전에 미리 gzip으로 압축할 수도 있다. 다른 사람들이 TAR 파일을 사용해 이미지를 그대로 가져올 수 있다. 접근 권한이 있으면 이메일이나 scp로 전송할 수 있다.
$ scp rabbitmq_management.tar ex.google.com:/tmp/
rabbitmq_management.tar
그리고 다른 사용자의 도커 데몬에 직접 이미지를 전송할 수 있다
docker save rabbitmq:management | \
ssh ex.google.com \
docker load -
도커 이미지의 기록을 삭제하고 싶다면 load 대신 import를 사용할 수 있다.
docker export $(docker run -d rabbitmq:management true) | \
ssh ex.google.com docker import
'docker' 카테고리의 다른 글
[docker] echo를 사용해 여러 라인을 파일로 저장하기 (0) | 2019.09.04 |
---|---|
Rpmdb checksum is invalid: dCDPT(pkg checksums): 해결하기 (0) | 2019.09.04 |
[docker] 도커 이미지 또는 컨테이너 크기를 구하기 (0) | 2019.08.29 |
Dockerfiles의 CMD에서 추가 매개 변수 사용하기 (0) | 2019.08.07 |
k8s의 hostNetwork: true와 docker의 host 네트워크 모드 (0) | 2019.07.12 |