dockerのどの参考書にも書いてあるであろう、dockerをインストールしたあとに打つ最初のコマンドとして、
docker run hello-world
がある。
"hello-world" コンテナは、Docker のチュートリアルとして用意されたサンプルコンテナです。このコンテナは、Docker のインストールや使い方を確認するためのものであり、特に意味のあるアプリケーションを実行しているわけではありません。
by chatGPT
ということで、ここに書く内容は特に意味のあるものではないが、初学者にとっては、「へぇ」ボタンがあれば押したくなる?内容になっていると思われるので、暇があれば読んでみてほしい。
1.docker run hello-worldの内容
hello-worldというイメージがローカルになければ、Docker-Hubからダウンロードして、そのイメージからコンテナを作成して、起動している。
そのイメージには、
「Hello from Docker!」
と表示したら、コンテナを停止させるコマンドが入っている。
参考書によっては、docker container run hello-world と書いてあるものあるが、docker run コマンドはその省略形であり、どちらでも使える。startも同様。
バージョンが変わって新たにコマンド編成されたので、省略形のほうが古い。サブコマンドを使って書くようにしたほうがよいだろう。
docker はDockerシステム全体を管理するコマンド、docker container は、Dockerコンテナを管理するコマンド。
ex)docker image ls
ex)docker container ls
ex)docker container run
docker ls は無い。-> docker ps
2.Hello form Docker! をもう1度表示したい
最初に実行すると、長い文字が出てきて、なんだかわからないので、もう1回表示したいと思った。
現状、hello-worldコンテナは停止しているので、起動させればいいと思って
docker start [コンテナ名]
と打ってみるが、
コンテナ名が表示されただけで、[Hello form Docker!]は表示されない。
一応
docker container ls -a
で停止しているコンテナも含めて表示するが、Exitedで停止している。
COMMANDという列を発見、このコマンドを打てばいいのか?
調べてみると、このCOMMAND列は、コンテナが実行されるときに実行されるコマンドで、hello-worldのコンテナでは、/hello が実行されている。
docker container exec [コマンド]
を使えば、そのコンテナに対して新たにコマンドを実行することも可能とのこと。
例えば、コンテナ名かIDで指定して、
docker container exec [コンテナID] ls -la
など。
では、もう1度表示するにはどうするか?
結局は、もう1度同じコマンドを打つ。
docker container run hello-world
こうすることで、再度、「Hello from Docker!」が表示された。
しかし、コンテナを確認すると、新たにhello-worldのイメージから作成されたコンテナができている。こちらも停止している。
NAME列に関しては、指定しない限り自動で名前が付けられる。
同じコンテナいらないんだけどな。。。
Dockerは、指定したイメージがローカルにキャッシュされていない場合は、Docker-Hubからイメージをダウンロードして、ローカルにキャッシュします。
そのため、同じコマンドを再度実行すると、前回実行したときに作成されたhello-worldコンテナを再利用せず、新しいhello-worldコンテナを作成します。
by chatGPT
普段ならコンテナを docker start で再起動させればすむ話だが、hello-worldコンテナはすぐに停止してしまうので、再度表示させたい場合は、同じコマンドを実行するしかない。
3.イメージはあるからコンテナ作成から実行したい
docker run は上に書いたように、Docker-Hubからイメージダウンロード、イメージからコンテナ作成、コンテナ起動を行っているので、
最初のイメージダウンロードを省略する方法で行う。
docker runなら1行なので、こちらの方が手っ取り早いが、
参考サイトにあるように、
docker create --name [コンテナ名] [イメージ名]
docker start -a [コンテナ名]
で、「Hello from Docker!」を表示させることができる。
4.コンテナを削除する
何度もコマンドを実行していると、同じイメージから複数のコンテナが作成されるので、コンテナを削除する。
イメージを削除する前にコンテナを削除しないとエラーとなる。
#コンテナを削除
docker container rm [コンテナ名]
#もしくは停止後にコンテナを削除する場合は
docker container run --rm hello-world
#イメージを削除
docker image rm hello-world
以上、こんなことを考える人はまれだと思うが、気になった点をまとめました。