docker image save
docker image save
하나 이상의 이미지를 tar 아카이브로 저장하는 명령이에요. 기본적으로 STDOUT으로 스트리밍해요. 이미지를 백업하거나 다른 환경으로 옮길 때 사용해요. 별칭으로 docker save를 쓸 수 있어요.
출처: 문서
본문
docker image save는 표준 출력 스트림으로 tar 처리된 저장소를 만들어요. 제공된 각 인자에 대해 모든 부모 레이어와 모든 태그·버전(또는 지정한 repo:tag)을 포함해요.
docker image save [OPTIONS] IMAGE [IMAGE...]
지원하는 옵션은 다음과 같아요.
| 옵션 | 기본값 | 설명 |
|---|---|---|
-o, --output |
STDOUT 대신 파일에 써요 | |
--platform |
API 1.48+ 주어진 플랫폼만 저장. os[/arch[/variant]]의 쉼표 구분 목록 형식 (예: linux/amd64,linux/arm64/v8) |
docker load와 함께 쓸 백업 만들기
$ docker save busybox > busybox.tar
$ ls -sh busybox.tar
2.7M busybox.tar
$ docker save --output busybox.tar busybox
$ ls -sh busybox.tar
2.7M busybox.tar
$ docker save -o fedora-all.tar fedora
$ docker save -o fedora-latest.tar fedora:latest
gzip으로 tar.gz 파일에 이미지 저장
gzip으로 이미지 파일을 압축해 백업을 더 작게 만들 수 있어요.
$ docker save myimage:latest | gzip > myimage_latest.tar.gz
특정 태그만 골라내기
이미지 저장소의 특정 태그만 골라낼 수도 있어요.
$ docker save -o ubuntu.tar ubuntu:lucid ubuntu:saucy
특정 플랫폼 저장 (--platform)
--platform 옵션은 이미지의 어떤 플랫폼 변형을 저장할지 지정해요. 기본적으로 docker save는 데몬의 이미지 저장소에 있는 모든 플랫폼 변형을 저장해요. --platform 옵션으로 이미지의 어떤 플랫폼 변형을 저장할지 정할 수 있어요. 주어진 플랫폼이 로컬 이미지 저장소에 없으면 오류가 발생해요.
플랫폼 옵션은 os[/arch[/variant]] 형식을 취해요. 예를 들어 linux/amd64 또는 linux/arm64/v8이에요. 아키텍처와 변형은 선택 사항이고, 생략하면 데몬 네이티브 아키텍처로 기본값을 정해요.
다음 예제는 alpine:latest 이미지의 RISC-V 변형을 풀해서 tar 아카이브로 저장해요.
$ docker pull --platform=linux/riscv64 alpine:latest
latest: Pulling from library/alpine
8c4a05189a5f: Download complete
Digest: sha256:beefdbd8a1da6d2915566fde36db9db0b524eb737fc57cd1367effd16dc0d06d
Status: Downloaded newer image for alpine:latest
docker.io/library/alpine:latest
$ docker image save --platform=linux/riscv64 -o alpine-riscv.tar alpine:latest
$ ls -lh image.tar
-rw------- 1 thajeztah staff 3.9M Oct 7 11:06 alpine-riscv.tar
다음 예제는 로컬 이미지 저장소에 존재하지 않는 alpine:latest의 플랫폼 변형을 저장하려 해서 오류가 나는 상황이에요.
$ docker image ls --tree
IMAGE ID DISK USAGE CONTENT SIZE IN USE
alpine:latest beefdbd8a1da 10.6MB 3.37MB
├─ linux/riscv64 80cde017a105 10.6MB 3.37MB
├─ linux/amd64 33735bd63cf8 0B 0B
├─ linux/arm/v6 50f635c8b04d 0B 0B
├─ linux/arm/v7 f2f82d424957 0B 0B
├─ linux/arm64/v8 9cee2b382fe2 0B 0B
├─ linux/386 b3e87f642f5c 0B 0B
├─ linux/ppc64le c7a6800e3dc5 0B 0B
└─ linux/s390x 2b5b26e09ca2 0B 0B
$ docker image save --platform=linux/s390x -o alpine-s390x.tar alpine:latest
Error response from daemon: no suitable export target found for platform linux/s390x