본문 바로가기
MLOps/Docker

Docker 이미지 저장 및 압축하는 방법

by 해피ing 2025. 2. 4.
반응형

명령어 입력은 파란색, 출력 결과는 붉은색입니다.

Docker 이미지 목록을 확인하기 위한 명령어를 입력합니다.
docker images
Docker 이미지 목록을 확인합니다.
REPOSITORY                                                     TAG                                               IMAGE ID       CREATED         SIZE
curlimages/curl                                                latest                                            7551dbeefe0d   7 weeks ago     21.8MB
rancher/mirrored-coredns-coredns                               1.12.0                                            1cf5f116067c   2 months ago    70.1MB
rancher/local-path-provisioner                                 v0.0.30                                           b580d47bc23d   3 months ago    51.7MB
rancher/mirrored-library-traefik                               2.11.10                                           1741c0b1ff49   4 months ago    168MB
rancher/mirrored-metrics-server                                v0.7.2                                            48d9cfaaf390   5 months ago    67.1MB
rancher/klipper-lb                                             v0.4.9                                            11a5d8a9f31a   6 months ago    12.2MB
kubeflownotebookswg/profile-controller                         v1.9.0                                            743a6007d891   6 months ago    83.2MB
kubeflownotebookswg/volumes-web-app                            v1.9.0                                            068128775c16   6 months ago    314MB
kubeflownotebookswg/jupyter-web-app                            v1.9.0                                            bc4a8b97638e   6 months ago    314MB
kubeflownotebookswg/tensorboards-web-app                       v1.9.0                                            2c6a91816c0d   6 months ago    234MB
kubeflownotebookswg/tensorboard-controller                     v1.9.0                                            e403a2c4e71e   6 months ago    48.6MB
kubeflownotebookswg/notebook-controller                        v1.9.0                                            57b7d4827981   6 months ago    74.3MB
kubeflownotebookswg/centraldashboard                           v1.9.0                                            f232a03fd7d7   6 months ago    217MB
kubeflownotebookswg/pvcviewer-controller                       v1.9.0                                            5907394cdf85   6 months ago    56.8MB
kubeflownotebookswg/poddefaults-webhook                        v1.9.0                                            a9c9ee4be162   6 months ago    50.8MB
kubeflownotebookswg/kfam                                       v1.9.0                                            301946ff0fa8   6 months ago    61.2MB
kubeflow/training-operator                                     v1-9e52eb7                                        7472ae1eeaf8   6 months ago    65.9MB
kubeflowkatib/katib-ui                                         v0.17.0                                           d4d8b4ff0a00   6 months ago    170MB
kubeflowkatib/katib-controller                                 v0.17.0                                           0ab95b53dca3   6 months ago    75.3MB
kubeflowkatib/katib-db-manager                                 v0.17.0                                           ca8eb9fc20f9   6 months ago    21.4MB
kserve/models-web-app                                          v0.13.0-rc.0                                      06bc538dbc48   7 months ago    323MB
kserve/kserve-controller                                       v0.13.0                                           3196ab97f8af   8 months ago    74.8MB
istio/proxyv2                                                  1.22.1                                            ef207139acc0   8 months ago    271MB
istio/pilot                                                    1.22.1                                            77cf8fb5119d   8 months ago    200MB
gcr.io/ml-pipeline/metadata-envoy                              2.2.0                                             bfdc24b0d7b9   9 months ago    247MB
gcr.io/ml-pipeline/viewer-crd-controller                       2.2.0                                             6a3ed4bc77aa   9 months ago    104MB
gcr.io/ml-pipeline/frontend                                    2.2.0                                             7e668c340bd6   9 months ago    509MB
gcr.io/ml-pipeline/api-server                                  2.2.0                                             f90f33b94fea   9 months ago    355MB
gcr.io/ml-pipeline/cache-server                                2.2.0                                             2b8baf09165d   9 months ago    81.2MB
gcr.io/ml-pipeline/scheduledworkflow                           2.2.0                                             2a889141225e   9 months ago    87.2MB
gcr.io/ml-pipeline/persistenceagent                            2.2.0                                             429305b12e9f   9 months ago    79.2MB
gcr.io/ml-pipeline/visualization-server                        2.2.0                                             7f8d7994538f   9 months ago    5.11GB
gcr.io/ml-pipeline/metadata-writer                             2.2.0                                             6f21e48d7481   9 months ago    1.1GB
quay.io/jetstack/cert-manager-controller                       v1.14.5                                           3d272ec03f99   9 months ago    66.3MB
quay.io/jetstack/cert-manager-cainjector                       v1.14.5                                           67fe8c356b49   9 months ago    41.6MB
quay.io/jetstack/cert-manager-webhook                          v1.14.5                                           f37c09a3d900   9 months ago    54.1MB
ghcr.io/dexidp/dex                                             v2.39.1                                           4c906a1108fd   10 months ago   99.1MB
gcr.io/ml-pipeline/workflow-controller                         v3.4.16-license-compliance                        867575cd23b9   10 months ago   84.2MB
quay.io/oauth2-proxy/oauth2-proxy                              v7.6.0                                            c5c6a16763cb   11 months ago   34.5MB
nvidia/cuda                                                    12.2.0-devel-ubuntu22.04                          5307765dadf8   15 months ago   6.58GB
gcr.io/tfx-oss-public/ml_metadata_store_server                 1.14.0                                            7eb57eef7902   18 months ago   155MB
python                                                         3.7                                               16d93ae3411b   18 months ago   994MB
rancher/mirrored-library-busybox                               1.36.1                                            c1f39daffdef   20 months ago   4.26MB
nvcr.io/nvidia/k8s-device-plugin                               v0.14.0                                           d76219bf33d7   22 months ago   284MB
gcr.io/kubebuilder/kube-rbac-proxy                             v0.13.1                                           eb5a02daef2f   2 years ago     55.2MB
mysql                                                          8.0.29                                            33037edcac9b   2 years ago     444MB
gcr.io/ml-pipeline/mysql                                       8.0.26                                            9da615fced53   3 years ago     514MB
rancher/mirrored-pause                                         3.6                                               6270bb605e12   3 years ago     683kB
metacontrollerio/metacontroller                                v2.0.4                                            108b287e7067   3 years ago     54.6MB
gcr.io/kubebuilder/kube-rbac-proxy                             v0.8.0                                            ad393d6a4d1b   4 years ago     49MB
gcr.io/ml-pipeline/minio                                       RELEASE.2019-08-14T20-37-41Z-license-compliance   290a74f42cdf   5 years ago     215MB
gcr.io/knative-releases/knative.dev/net-istio/cmd/controller   <none>                                            8c2c9203e847   N/A             54.3MB
gcr.io/knative-releases/knative.dev/net-istio/cmd/webhook      <none>                                            123913b7026c   N/A             51.9MB
gcr.io/knative-releases/knative.dev/serving/cmd/autoscaler     <none>                                            94130c1b1958   N/A             54.8MB
gcr.io/knative-releases/knative.dev/serving/cmd/activator      <none>                                            b75bbbeecb4a   N/A             54.2MB
gcr.io/knative-releases/knative.dev/eventing/cmd/controller    <none>                                            dd50a99f74a8   N/A             58.9MB
gcr.io/knative-releases/knative.dev/eventing/cmd/webhook       <none>                                            c0e57498c620   N/A             57.9MB
gcr.io/knative-releases/knative.dev/serving/cmd/controller     <none>                                            41dc7e46dd6f   N/A             60.7MB
gcr.io/knative-releases/knative.dev/serving/cmd/webhook        <none>                                            89e495e2d655   N/A             53.8MB
Linux에서 진행 상황을 확인하기 위해 PV(Pipe Viewer) 패키지를 설치하는 명령어를 입력합니다.
sudo apt install -y pv
PV 설치 과정을 확인합니다.
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Suggested packages:
  doc-base
The following NEW packages will be installed:
  pv
0 upgraded, 1 newly installed, 0 to remove and 227 not upgraded.
Need to get 73.9 kB of archives.
After this operation, 188 kB of additional disk space will be used.
Get:1 http://kr.archive.ubuntu.com/ubuntu noble/main amd64 pv amd64 1.8.5-2build1 [73.9 kB]
Fetched 73.9 kB in 1s (74.3 kB/s)
Selecting previously unselected package pv.
(Reading database ... 195271 files and directories currently installed.)
Preparing to unpack .../pv_1.8.5-2build1_amd64.deb ...
Unpacking pv (1.8.5-2build1) ...
Setting up pv (1.8.5-2build1) ...
Processing triggers for man-db (2.12.0-4build2) ...
PV를 활용하여 Docker 이미지 목록에서 Repository를 기준으로 <none> Tag를 제외한 모든 이미지를 압축하고 저장하기 위한 create.sh 파일을 생성합니다. 이 때, OUTPUT_FILE, LOG_FILE, ERROR_FILE 경로는 변경 가능합니다.
vim create.sh
create.sh 파일 내용을 작성합니다.
#!/bin/bash

OUTPUT_FILE="./image_all.tar"
LOG_FILE="./image_save.log"
ERROR_FILE="./image_save_error.log"

> "$LOG_FILE"
> "$ERROR_FILE"

echo "이미지 목록을 가져옵니다."

# none 제외
IMAGES=$(docker images --format "{{.Repository}}:{{.Tag}}" | grep -v "<none>")

if [[ -z "$IMAGES" ]]; then
  echo "저장할 이미지가 없습니다."
  exit 1
fi

for IMAGE in $IMAGES; do
  if docker save "$IMAGE" | pv -bart >> "$OUTPUT_FILE"; then
    echo "[성공] $IMAGE 저장 완료" | tee -a "$LOG_FILE"
  else
    echo "[실패] $IMAGE 저장 실패" | tee -a "$ERROR_FILE"
  fi
done

echo "이미지 저장 완료. 로그 파일: $LOG_FILE, 오류 파일: $ERROR_FILE"
생성된 create.sh 파일의 권한을 변경하고 실행합니다. 이미지 크기에 따라 저장 시간은 달라질 수 있습니다.
sudo chmod +x create.sh
./create.sh
Docker 이미지 저장 상황을 확인합니다.
이미지 목록을 가져옵니다.
21.2MiB 0:00:00 [ 114MiB/s] [ 114MiB/s]
[성공] curlimages/curl:latest 저장 완료
67.9MiB 0:00:00 [ 126MiB/s] [ 126MiB/s]
[성공] rancher/mirrored-coredns-coredns:1.12.0 저장 완료
49.6MiB 0:00:00 [ 190MiB/s] [ 190MiB/s]
[성공] rancher/local-path-provisioner:v0.0.30 저장 완료
 160MiB 0:00:00 [ 182MiB/s] [ 182MiB/s]
[성공] rancher/mirrored-library-traefik:2.11.10 저장 완료
65.0MiB 0:00:00 [ 134MiB/s] [ 134MiB/s]
[성공] rancher/mirrored-metrics-server:v0.7.2 저장 완료
12.1MiB 0:00:00 [87.0MiB/s] [87.0MiB/s]
[성공] rancher/klipper-lb:v0.4.9 저장 완료
81.6MiB 0:00:00 [ 121MiB/s] [ 121MiB/s]
[성공] kubeflownotebookswg/profile-controller:v1.9.0 저장 완료
 308MiB 0:00:03 [94.1MiB/s] [94.1MiB/s]
[성공] kubeflownotebookswg/volumes-web-app:v1.9.0 저장 완료
 308MiB 0:00:02 [ 147MiB/s] [ 147MiB/s]
[성공] kubeflownotebookswg/jupyter-web-app:v1.9.0 저장 완료
 231MiB 0:00:02 [ 113MiB/s] [ 113MiB/s]
[성공] kubeflownotebookswg/tensorboards-web-app:v1.9.0 저장 완료
47.4MiB 0:00:00 [ 131MiB/s] [ 131MiB/s]
[성공] kubeflownotebookswg/tensorboard-controller:v1.9.0 저장 완료
73.3MiB 0:00:00 [ 117MiB/s] [ 117MiB/s]
[성공] kubeflownotebookswg/notebook-controller:v1.9.0 저장 완료
 217MiB 0:00:02 [92.6MiB/s] [92.6MiB/s]
[성공] kubeflownotebookswg/centraldashboard:v1.9.0 저장 완료
55.2MiB 0:00:00 [ 138MiB/s] [ 138MiB/s]
[성공] kubeflownotebookswg/pvcviewer-controller:v1.9.0 저장 완료
49.6MiB 0:00:00 [ 137MiB/s] [ 137MiB/s]
[성공] kubeflownotebookswg/poddefaults-webhook:v1.9.0 저장 완료
59.7MiB 0:00:00 [ 143MiB/s] [ 143MiB/s]
[성공] kubeflownotebookswg/kfam:v1.9.0 저장 완료
63.9MiB 0:00:00 [ 139MiB/s] [ 139MiB/s]
[성공] kubeflow/training-operator:v1-9e52eb7 저장 완료
 163MiB 0:00:01 [ 162MiB/s] [ 162MiB/s]
[성공] kubeflowkatib/katib-ui:v0.17.0 저장 완료
72.1MiB 0:00:00 [ 176MiB/s] [ 176MiB/s]
[성공] kubeflowkatib/katib-controller:v0.17.0 저장 완료
20.7MiB 0:00:00 [ 138MiB/s] [ 138MiB/s]
[성공] kubeflowkatib/katib-db-manager:v0.17.0 저장 완료
 317MiB 0:00:03 [88.9MiB/s] [88.9MiB/s]
[성공] kserve/models-web-app:v0.13.0-rc.0 저장 완료
72.4MiB 0:00:00 [ 108MiB/s] [ 108MiB/s]
[성공] kserve/kserve-controller:v0.13.0 저장 완료
 262MiB 0:00:01 [ 138MiB/s] [ 138MiB/s]
[성공] istio/proxyv2:1.22.1 저장 완료
 194MiB 0:00:01 [ 161MiB/s] [ 161MiB/s]
[성공] istio/pilot:1.22.1 저장 완료
 240MiB 0:00:02 [ 117MiB/s] [ 117MiB/s]
[성공] gcr.io/ml-pipeline/metadata-envoy:2.2.0 저장 완료
53.9MiB 0:00:00 [ 126MiB/s] [ 126MiB/s]
[성공] gcr.io/ml-pipeline/viewer-crd-controller:2.2.0 저장 완료
 521MiB 0:00:09 [55.0MiB/s] [55.0MiB/s]
[성공] gcr.io/ml-pipeline/frontend:2.2.0 저장 완료
 252MiB 0:00:01 [ 131MiB/s] [ 131MiB/s]
[성공] gcr.io/ml-pipeline/api-server:2.2.0 저장 완료
78.0MiB 0:00:00 [ 246MiB/s] [ 246MiB/s]
[성공] gcr.io/ml-pipeline/cache-server:2.2.0 저장 완료
84.8MiB 0:00:00 [ 184MiB/s] [ 184MiB/s]
[성공] gcr.io/ml-pipeline/scheduledworkflow:2.2.0 저장 완료
76.1MiB 0:00:00 [ 189MiB/s] [ 189MiB/s]
[성공] gcr.io/ml-pipeline/persistenceagent:2.2.0 저장 완료
4.87GiB 0:00:46 [ 106MiB/s] [ 106MiB/s]
[성공] gcr.io/ml-pipeline/visualization-server:2.2.0 저장 완료
1.04GiB 0:00:10 [ 104MiB/s] [ 104MiB/s]
[성공] gcr.io/ml-pipeline/metadata-writer:2.2.0 저장 완료
64.3MiB 0:00:00 [ 130MiB/s] [ 130MiB/s]
[성공] quay.io/jetstack/cert-manager-controller:v1.14.5 저장 완료
40.8MiB 0:00:00 [ 114MiB/s] [ 114MiB/s]
[성공] quay.io/jetstack/cert-manager-cainjector:v1.14.5 저장 완료
52.6MiB 0:00:00 [ 126MiB/s] [ 126MiB/s]
[성공] quay.io/jetstack/cert-manager-webhook:v1.14.5 저장 완료
94.9MiB 0:00:00 [ 163MiB/s] [ 163MiB/s]
[성공] ghcr.io/dexidp/dex:v2.39.1 저장 완료
82.2MiB 0:00:00 [97.9MiB/s] [97.9MiB/s]
[성공] gcr.io/ml-pipeline/workflow-controller:v3.4.16-license-compliance 저장 완료
34.4MiB 0:00:00 [78.8MiB/s] [78.8MiB/s]
[성공] quay.io/oauth2-proxy/oauth2-proxy:v7.6.0 저장 완료
6.14GiB 0:00:32 [ 191MiB/s] [ 191MiB/s]
[성공] nvidia/cuda:12.2.0-devel-ubuntu22.04 저장 완료
 151MiB 0:00:01 [ 112MiB/s] [ 112MiB/s]
[성공] gcr.io/tfx-oss-public/ml_metadata_store_server:1.14.0 저장 완료
 969MiB 0:00:09 [ 105MiB/s] [ 105MiB/s]
[성공] python:3.7 저장 완료
4.30MiB 0:00:00 [63.6MiB/s] [63.6MiB/s]
[성공] rancher/mirrored-library-busybox:1.36.1 저장 완료
 273MiB 0:00:01 [ 139MiB/s] [ 139MiB/s]
[성공] nvcr.io/nvidia/k8s-device-plugin:v0.14.0 저장 완료
53.9MiB 0:00:00 [ 126MiB/s] [ 126MiB/s]
[성공] gcr.io/kubebuilder/kube-rbac-proxy:v0.13.1 저장 완료
 434MiB 0:00:04 [ 101MiB/s] [ 101MiB/s]
[성공] mysql:8.0.29 저장 완료
 495MiB 0:00:03 [ 140MiB/s] [ 140MiB/s]
[성공] gcr.io/ml-pipeline/mysql:8.0.26 저장 완료
 679KiB 0:00:00 [18.7MiB/s] [18.7MiB/s]
[성공] rancher/mirrored-pause:3.6 저장 완료
52.6MiB 0:00:00 [ 146MiB/s] [ 146MiB/s]
[성공] metacontrollerio/metacontroller:v2.0.4 저장 완료
47.9MiB 0:00:00 [ 138MiB/s] [ 138MiB/s]
[성공] gcr.io/kubebuilder/kube-rbac-proxy:v0.8.0 저장 완료
 205MiB 0:00:01 [ 174MiB/s] [ 174MiB/s]
[성공] gcr.io/ml-pipeline/minio:RELEASE.2019-08-14T20-37-41Z-license-compliance 저장 완료
이미지 저장 완료. 로그 파일: ./image_save.log, 오류 파일: ./image_save_error.log
Docker 이미지가 저장된 경로를 확인하기 위한 명령어를 입력합니다. 기본 저장 경로는 /mnt/working/kubeflow 입니다.
ll /mnt/working/kubeflow -h
저장된 기본 경로에서 Docker 이미지를 확인합니다.
total 20G
drwxr-xr-x  3 gpu1 gpu1 4.0K Feb  5 13:37 ./
drwxr-xr-x  3 gpu1 gpu1 4.0K Feb  5 10:54 ../
-rwxr-xr-x  1 gpu1 gpu1  680 Feb  5 13:36 create.sh*
-rw-rw-r--  1 gpu1 gpu1  20G Feb  5 13:40 image_all.tar
-rw-rw-r--  1 gpu1 gpu1    0 Feb  5 13:37 image_save_error.log
-rw-rw-r--  1 gpu1 gpu1 3.2K Feb  5 13:40 image_save.log
-rwxr-xr-x  1 gpu1 gpu1   88 Jan 20 14:08 kubeflow.sh*
-rwxr-xr-x  1 gpu1 gpu1  510 Jan 20 16:42 load.sh*
drwxr-xr-x 11 gpu1 gpu1 4.0K Jan 20 14:08 manifests/
반응형