docker imageの保存(コンテナ納品)

投稿者: | 10月 11, 2022

ちょっとしたイメージを自作することになったが、手元の環境からどうやって取り出すか。docker hubにアップロードして渡してもいいが、それほどのものでは無いし。。。自分のプライベートレジストリを公開してもいいが、常に立てているとは限らない。どうにかしてVMイメージのようにオフラインにしたいという話。

閑話休題

自作のイメージをプライベートレジストリに保存したが、そのイメージを他の環境にオフラインで渡したい。Dockerfileを渡してそっちでBuildしてくれでいいのだが、

  • Buildするためのリソースが無い
  • 中身を教えたくない

そんなケースでイメージだけを渡したいことがある。

エクスポート

docker saveを使う。(プルして、saveする。いらないイメージを削除)

docker pull 192.168.16.2:5000/bitnami/wordpress:6.0.2-debian-11-r9
docker save 192.168.16.2:5000/bitnami/wordpress:6.0.2-debian-11-r9 > example_save.tar
docker rmi 192.168.16.2:5000/bitnami/wordpress:6.0.2-debian-11-r9

ダウンロードされたファイル

ls -lh example_save.tar

-rw-r–r– 1 root root 577M Oct 11 07:51 example_save.tar

tar tvf example_save.tar

drwxr-xr-x 0/0 0 2022-09-23 13:03 08dbe632267bf93515868351c84cd901a132fef221e1741a2b03e54cb121cc3a/
-rw-r–r– 0/0 3 2022-09-23 13:03 08dbe632267bf93515868351c84cd901a132fef221e1741a2b03e54cb121cc3a/VERSION
-rw-r–r– 0/0 3039 2022-09-23 13:03 08dbe632267bf93515868351c84cd901a132fef221e1741a2b03e54cb121cc3a/json
-rw-r–r– 0/0 522860032 2022-09-23 13:03 08dbe632267bf93515868351c84cd901a132fef221e1741a2b03e54cb121cc3a/layer.tar
drwxr-xr-x 0/0 0 2022-09-23 13:03 30caaaa50f929abfc70424a9d130874cbcb363fe0885c897a11e265f305b3319/
-rw-r–r– 0/0 3 2022-09-23 13:03 30caaaa50f929abfc70424a9d130874cbcb363fe0885c897a11e265f305b3319/VERSION
-rw-r–r– 0/0 401 2022-09-23 13:03 30caaaa50f929abfc70424a9d130874cbcb363fe0885c897a11e265f305b3319/json
-rw-r–r– 0/0 81960960 2022-09-23 13:03 30caaaa50f929abfc70424a9d130874cbcb363fe0885c897a11e265f305b3319/layer.tar
-rw-r–r– 0/0 15195 2022-09-23 13:03 cf3d1c7c62fad098565376de884b2fd08a97a3c2c308662ffe5b2a033385c592.json
-rw-r–r– 0/0 320 1970-01-01 00:00 manifest.json
-rw-r–r– 0/0 130 1970-01-01 00:00 repositories

だった。docker exportで取り出すとメタデータがなく、tarのファイルには、ファイルシステムそのままが入っている。

 

インポート

以下のコマンドを使う。

docker load < example_save.tar

あとは、タグを付け替えて使うなり、自身のプライベートレポジトリにプッシュすればOK。

 

何気に、コンテナを使うコマンドの種類が多くて困るなぁ、結局dockerコマンドを使ってしまったが。ctrコマンドも結構使うんですよね。まだまだ精進が必要。

コメントを残す