Docker

[Docker] 이미지/컨테이너 파일로 저장/로드

비번변경 2022. 6. 30. 17:02

docker commit

도커는 일반적으로 build, commit 명령으로 만든 이미지를 저장소에 업로드하고, 업로드한 이미지를 내려받아 사용한다.

다만 간혹 저장소를 거치지 않고 도커 이미지를 옮겨야 할 때가 존재하는데, 이 경우에는 도커 이미지와 컨테이너를 tar 형식으로 저장할 수 있다.

 

 

도커 이미지를 tar로 저장

도커 이미지를 tar 형식으로 저장한다. save 시 도커 이미지 태그를 지정하지 않으면, 이름이 같고 태그가 다른 모든 이미지를 저장한다.

docker save [OPTIONS] IMAGE [IMAGE...]
# -o : --output. 표준 출력 대신 파일로 저장한다.

# 예시
docker save ubuntu -o ubuntu.tar

docker save ubuntu -o ubuntu.tar

또는 아래와 같이 파일 리다이렉션으로도 실행할 수 있다.

docker save <IMAGE> > <FILE.tar>

docker save busybox > busybox.tar

 

tar 파일을 docker image로 변환

docker save 명령으로 tar 형식으로 저장한 도커 이미지 파일을 컨테이너로 실행할 수 있는 이미지로 로드한다.

docker load [OPTIONS]
# -i : --input. 로드할 tar 파일 지정

# 예시
docker load -i docker/ubuntu.tar

docker load

또는 save와 마찬가지로 파일 리다이렉션으로 로드할 파일을 지정할 수 있다.

docker load < busybox.tar.gz

 

 

컨테이너를 tar로 저장

도커 컨테이너를 tar 형식으로 저장한다. 단, 컨테이너와 연결된 볼륨의 내용을 내보내지는 않는다.

docker export [OPTIONS] CONTAINER
# -o : --output. 표준 출력 대신 파일로 저장

# 예시
docker export 350c0e3dc224 -o nginx.tar

docker export 350c0e3dc224 -o nginx.tar

-o 옵션 대신 파일 리다이렉션을 이용해 내보낼 수도 있다.

docker export red_panda > latest.tar

 

export 한 tar 파일을 docker image로 변환

export로 내보낸 컨테이너 tar를 도커 컨테이너로 실행할 수 있는 image로 변환한다. URL 또는 표준 입력에서 데이터를 직접 가져오도록 - 지정할 수 있다. 

docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]

# 예시
docker import https://example.com/exampleimage.tgz
cat exampleimage.tgz | docker import - exampleimagelocal:new
docker import docker/nginx.tar ubuntu:custom-1

docker import docker/nginx.tar ubuntu:custom-1

root 권한으로 실행하지 않으면, 권한이 없는 파일이 포함되지 않을 수 있어 주의해야 한다.

 

 

참고 문서

https://www.leafcats.com/240

https://docs.docker.com/engine/reference/commandline/save/

https://docs.docker.com/engine/reference/commandline/load/

https://docs.docker.com/engine/reference/commandline/export/

https://docs.docker.com/engine/reference/commandline/import/