初めてのDocker利用-その2 ~作成済みコンテナの操作等~
今回の記事の内容は主に前の記事の続きで、以下の内容について書いていく。
- 作業用コンテナから抜ける方法
- 作業用コンテナの終了方法
- 作業用コンテナの起動方法
- 作業用コンテナの削除方法
- イメージのローカルリポジトリへの保存
ここで現在、コマンドラインは
作業用コンテナから抜ける方法
調べた結果だけまとめてしまうと以下の2つがある。
- コマンドラインで
exit
を実行(コンテナが同時に終了される) -
ctrl + p + q
を実行する(コンテナが終了されることはない)
このうち、個人的にいいと思ったのは前者の方法である。後者の場合ショートカットキーの設定が必要なことがわかったためである。ただし、前者の方法では、なぜか私のパソコンではコンテナが終了されることはなかった。なぜだろう?
作業用コンテナの終了方法
Macのterminalで実行するコマンドの文法は以下のようになる。
$ docker stop [OPTIONS] CONTAINER [CONTAINER...]
今回の場合でいくと
$ docker stop ubuntu2310
を実行するとコンテナが終了することになる。ここで注意すべきポイントは上のコマンドを実行してから終了するまで10秒程度かかること。パソコンが故障したとかそういうわけではないので安心してください。docker ps -a
コマンドでコンテナの状態を確かめると
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fbd643fda14c ubuntu:23.10 "/bin/bash" 25 hours ago Exited (137) About a minute ago ubuntu2310
となり、停止していることがわかる。
作業用コンテナの起動方法
まず先に実行するコマンドの文法を示す。
$ docker start [OPTIONS] CONTAINER [CONTAINER...]
今回の場合、
$ docker start ubuntu2310
を実行すればよく、これを実行後docker ps
コマンドでコンテナの状態を確かめると
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fbd643fda14c ubuntu:23.10 "/bin/bash" 25 hours ago Up 6 seconds ubuntu2310
作業用コンテナの削除方法
まず先に実行するコマンドの文法を示す。
$ docker rm [OPTIONS] CONTAINER [CONTAINER...]
今回の場合、
$ docker rm ubuntu2310
を実行すればよく、これを実行後docker ps -a
コマンドでコンテナの状態を確かめると
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
となり、削除されていることがわかる。
ここで注意したいのは作業用コンテナの削除はそのコンテナが停止している時のみ有効である。今回ubuntu2310
を起動状態で削除しようとした時以下のようなエラーが出た。
Error response from daemon: You cannot remove a running container fbd643fda14cabc88f525f7f59cefb62e1cf8c84bf174e035dcf8393b4897a76. Stop the container before attempting removal or force remove
イメージのローカルリポジトリへの保存
ここではイメージをローカルリポジトリに保存する方法を書く。「初めてのDocker利用-その1」ではdockerイメージの取得からpythonの環境構築までの流れを書いたが、新しくコンテナを立ち上げて、同様のコンテナを作成するときにいちいちコマンドを実行していくというのは面倒である。イメージをローカルリポジトリに保存することで、このような場面での手間を省くことができるのである。
実行するコマンドの文法は
$ docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
である。今回具体的に実行するコマンドについて、コマンド文法のCONTAINER
にはubuntu2310
、REPOSITORY[:TAG]
にはsaved_image:1.1
を代入した。これはコンテナubuntu2310
の
$ docker commit ubuntu2310 saved_image:1.1
となる。これを実行したのち、docker image
コマンドを実行すると、
$ docker iamges
REPOSITORY TAG IMAGE ID CREATED SIZE
saved_image 1.1 b53bd2ecdba7 25 seconds ago 174MB
と出力され、saved_image:v1.1がimageとして追加されていることがわかる。
試しに、今回作成したsaved_image:1.1
イメージを利用してsaved_container
というコンテナを立ち上げる。以降は実行したコマンドである。
$ docker container run -itd --name saved_container saved_image:1.1
d58e78498fecb09a19557de0b681307212792628bacaab094cd567482b4d4f89
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d58e78498fec saved_image:1.1 "/bin/bash" 15 seconds ago Up 14 seconds saved_container
$ docker comtainer exec -it saved_container /bin/bash
root@d58e78498fec:/# python3 --version
Python 3.11.4
以上を見てもらうと立ち上げたsaved_container
コンテナ内に入ってpythonのバージョンを確認するとPython 3.11.4
と出力されており、pythonがすでに利用可能な状態になっていることがわかる。
今回の内容は以上です。最後まで読んでいただいてありがとうございました。
Discussion