Dockerコンテナのイメージをセーブして先方に送る方法
docker images をやったのですが、同じ名前のdocker imagesが出てくるのですが、どれが最新なのか見分ける方法を教えて下さい。
↓
同じ名前のdocker imagesが出てくるのですが、どれが最新なのか見分ける方法を教えて下さい。
↓
CREATED も同じく"2months"になっていて見分けがつきません。 ですので、例えば、Dockerコンテナを動かして確認する方法はありませんか。現在、私は "docker-compose start" をした後にシェルでDocker内部に入っているのですが、この状況からの確認方法を教えて下さい
Dockerの外側(ホストOS)から稼働中のDockerコンテナを確認するには、いくつかの方法があります。以下は、その代表的な方法です。
1. docker ps
コマンドで稼働中のコンテナを確認
ホストOS上で、現在稼働中のコンテナを一覧表示するために、以下のコマンドを使用します。
docker ps
cam@cam-desktop:~$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c928a6ab4e6b u2404b-dev-environment "/bin/bash" 4 days ago Up About an hour u2404b-dev-environment-1という表示がでてきました。
このイメージをsaveする方法を教えてください。
1. イメージを保存する
まず、docker save コマンドを使用してイメージをファイルに保存します。以下のコマンドを実行してください。
$ docker save -o u2404b-dev-environment.tar u2404b-dev-environment
このコマンドは、u2404b-dev-environment という名前のイメージを u2404b-dev-environment.tar というファイルに保存します。
2. 保存されたファイルを確認する
保存が完了したら、ファイルが正しく作成されたか確認します。
$ ls -lh u2404b-dev-environment.tar
このコマンドで、保存されたファイルが存在し、適切なサイズであることを確認できます。
あとは、zip等で固めて、先方に送付すればO.K.
-----
保存したイメージを他の環境でロードするには、どうしたら良いですか。
もし他の環境に移動してこのイメージを使用したい場合、docker load コマンドを使用してイメージをロードします。
ファイルを解凍して、
$ docker load -i u2404b-dev-environment.tar
これにより、保存されたイメージが再びDockerにインポートされ、使用可能になります。
ところが、この方法では、自力で設定した環境などが全く引き継がれないらしいです。
送付いただいたものはgstreamer、コンパイル環境が入っていない状態でした。
お手数ですが、コンテナをcommitしてsaveしたものを送付願います。
(参考:https://sagantaf.hatenablog.com/entry/2018/09/04/190801)
上記の参考資料の通りにやってみることにしました。
(Step.1) まず、ゲストOSを立ち上げておいて、ホストOSから以下のコマンドを投入します
cam@cam-desktop:~$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c928a6ab4e6b u2404b-dev-environment "/bin/bash" 4 days ago Up 3 hours u2404b-dev-environment-1
(Step.2) 次に、このc928a6ab4e6bを使って、20240828_shajyoという名前(名前は好きなように)でコミットします
cam@cam-desktop:~$ sudo docker commit c928a6ab4e6b
20240828_shajyo
sha256:ac3405c474d294e5b5d0bd9a8cdc51a600f8cd3d04685877cecfb772e284b17e
# コミットしている最中、ゲストOSにアクセスできなくなるようですが、恐れず、じっと我慢しましょう。
(Step.3) コミットに成功しているかを確認します
cam@cam-desktop:~$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
20240828_shajyo latest ac3405c474d2 4 minutes ago 2.5GB ← できている
u2404b-dev-environment latest 48248de5e524 2 months ago 1.23GB
<none> <none> dcb4a05fb5a5 2 months ago 1.23GB
<none> <none> 132165fbb602 2 months ago 986MB
u2404_dev-environment latest 940f87bcbccf 2 months ago 986MB
<none> <none> a4252fdea034 2 months ago 988MB
u2404-dev-environment latest a042684decc4 2 months ago 971MB
ubuntu 24.04 ffb64c9b7e8b 2 months ago 101MB
hello-world latest ee301c921b8a 16 months ago 9.14kB
(Step.3) 20240828_shajyoをセーブします
cam@cam-desktop:~$ docker save 20240828_shajyo -o 20240828_shajyo.tar
あとは、これをzip等で圧縮して、先方にお送りすれば良いです。
cam@cam-desktop:~$zip 20240828_shajyo.tar.zip 20240828_shajyo.tar
-----
これを展開するのは、多分、以下のようになると思います(というのは、私が試していないからです)
(Step. 1) 一旦、ホストOSからイメージを削除する
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE 20240101_shajyo latest 3c053ce8d919 25 minutes ago 193MB
$ docker rmi 20240101_shajyo
(Step. 2) ホストOSから、ファイルからイメージを作成する
$ sudo docker load < 20240828_shajyo.tar
これでイメージが復活する(ハズ)とのことです。
ご対応ありがとうございました。
コンパイル環境と各プログラムがイメージに入っていることを確認しました。
というコメントをいただいたので、多分大丈夫です。
以上