このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
【Docker入門】DockerでCentOS Stream9を動かしてみる
ここでは、DockerでCentOS Stream7 を動かしてみます。
CentOS Stream9 イメージのダウンロード
Quay.ioとは
CentOS Stream9 イメージをDocker Hub からダウンロードしたいところですが、CentOS イメージ(https://hub.docker.com/_/centos)はありますが、CentOS Stream9 のイメージがありません。
そこで、代わりに 「Quay.io」に push されている CentOS Stream9 イメージをダウンロードすることにします。
https://quay.io/repository/centos/centos?tab=tags
「Quay.io」はRedHat社が提供するレジストリです。「docker pull」コマンドではレジストリ指定しない場合は、デフォルトでDocker Hub からイメージをダウンロードします。レジストリを指定することで、別のレジストリからでダウンロードすることができます。
ダウンロードのリンクをクリックします。
すると、ダウンロードコマンドが取得できるポップアップが表示されます。
プルダウンメニューから「Docker Pull (by tag)」を選択して、「Copy Command」ボタンをクリックすることで、ダウンロードコマンドをコピーすることができます。
「docker pull quay.io/centos/centos:stream9」コマンドを実行します。
docker image pull | quay.io/centos/centos | :stream9 |
イメージのダウンロード | レジストリ/イメージ名 | stream9 タグ(バージョン) タグを省略すると最新版(latest) が取得される。 |
PS C:\Users\joeac> docker pull quay.io/centos/centos:stream9
stream9: Pulling from centos/centos
8748d659f1ea: Pull complete
Digest: sha256:e3a6cc7964a40a8c959f5edf4094e934a1491990c79cc34b0472f8deb4091a28
Status: Downloaded newer image for quay.io/centos/centos:stream9
quay.io/centos/centos:stream9
What's Next?
View a summary of image vulnerabilities and recommendations → docker scout quickview quay.io/centos/centos:stream9
ダウンロードしたイメージを確認します。
「docker image ls」コマンドを実行します。
6行目にタグが「stream9」の centos イメージがあることが確認できます。
PS C:\Users\joeac> docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
quay.io/centos/centos stream9 427fedeb26a1 37 hours ago 156MB
ubuntu 22.04 ca2b0f26964c 11 days ago 77.9MB
nginx latest e4720093a3c1 3 weeks ago 187MB
httpd latest 2776f4da9d55 7 weeks ago 167MB
ubuntu 18.04 f9a80a55f492 9 months ago 63.2MB
centos centos7 eeb6ee3f44bd 2 years ago 204MB
コンテナの作成と実行
コンテナの作成と実行を行うには、「docker container run」コマンドを使います。
「docker container run --name stream9 -it -d quay.io/centos/centos:stream9
」コマンドを実行します。
docker container run | --name quay.io/centos/centos | -it -d | centos | :stream7 |
コンテナの作成と実行 | コンテナ名の指定 | オプション | イメージ名 | タグ |
オプションの意味
「-it」オプションを付けることで ターミナルでコンテナを実行することができるようになります。このコマンドに付けておく「お約束事」だと覚えておきましょう。
オプション | 説明 |
---|---|
-it | -i オプションと -t オプションを合わせたもの。 オプションは並べた表記ができる。 |
-i | 標準入力を開く。 |
-t | tty を割り当てる。 tty とは、標準入出力となっている端末デバイスのこと。 仮想コンソールは「/dev/tty1」 |
-it | ターミナルでコンテナを実行する。 |
-d | デタッチモードを指定する。バックグラウンドでコンテナを起動します。 |
PS C:\Users\joeac> docker container run --name stream9 -it -d quay.io/centos/centos:stream9
fb84de7ecd18d436770a02b4bfc5d248ce547ecfe326931113d42cd68f0b1f21
コンテナの動作状況の確認
「docker container ls -a」コマンドを実行します。
3行目に「stream9」コンテナがあります。STATUS列から、このイメージが実行中であることが確認できます。
PS C:\Users\joeac> docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fb84de7ecd18 quay.io/centos/centos:stream9 "/bin/bash" 30 seconds ago Up 30 seconds stream9
69ecfc809456 centos:centos7 "/bin/bash" 2 hours ago Exited (0) 2 hours ago centos7
8a296d609049 ubuntu:18.04 "/bin/bash" 14 hours ago Exited (0) 14 hours ago ubuntu18.04
4f2549619dda ubuntu:22.04 "/bin/bash" 16 hours ago Exited (0) 16 hours ago ubuntu22.04
9dcede2f3b1f httpd "httpd-foreground" 37 hours ago Exited (0) 37 hours ago webserver3
facb8262f20f nginx "/docker-entrypoint.…" 2 days ago Exited (0) 42 hours ago webserver2
18cbe71fe4a8 nginx "/docker-entrypoint.…" 2 days ago Exited (0) 2 days ago webserver1
実行中のコンテナへの接続
実行中(稼働中)のコンテナに接続するコマンドには「docker exec」コマンドと「docker container attach」コマンドがあります。
「docker exec」コマンド
まず、「docker exec」コマンドから試してみます。
「docker exec -it stream9 echo “Hello India”」コマンドを実行します。
docker exec | -it | stream9 | echo “Hello India” |
稼働中のコンテナへの接続 | オプション | コンテナの指定 | echo コマンド |
PS C:\Users\joeac> docker exec -it stream9 echo "Hello India"
Hello India # コマンドの実行結果
2行目の「Hello India」の出力は、Linuxのechoコマンドの出力です。
コンテナの動作状況を確認する。
「docker container ls -a」コマンドを実行します。
PS C:\Users\joeac> docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fb84de7ecd18 quay.io/centos/centos:stream9 "/bin/bash" 10 minutes ago Up 10 minutes stream9
69ecfc809456 centos:centos7 "/bin/bash" 2 hours ago Exited (0) 2 hours ago centos7
8a296d609049 ubuntu:18.04 "/bin/bash" 14 hours ago Exited (0) 14 hours ago ubuntu18.04
4f2549619dda ubuntu:22.04 "/bin/bash" 16 hours ago Exited (0) 16 hours ago ubuntu22.04
9dcede2f3b1f httpd "httpd-foreground" 37 hours ago Exited (0) 37 hours ago webserver3
facb8262f20f nginx "/docker-entrypoint.…" 2 days ago Exited (0) 42 hours ago webserver2
18cbe71fe4a8 nginx "/docker-entrypoint.…" 2 days ago Exited (0) 2 days ago webserver1
3行目に注目します。「stream9」コンテナがあります。STATUS列から、このイメージが稼働していることが確認できます。「docker exec」コマンドを実行してもコンテナは停止しないことが分かります。
「docker container attach (コンテナ名)」コマンド
次に「docker container attach」コマンドを試します。
「docker container attach stream9」コマンドを実行します。
コンテナ名には「stream9」を指定します。
PS C:\Users\joeac> docker container attach stream9
[root@fb84de7ecd18 /]# ←stream9のターミナルに接続される
stream9 のターミナルに接続されます。
ターミナルに接続されるので、Linuxのコマンドが使えます。
「ls」コマンドを実行してみます。
[root@fb84de7ecd18 /]# ls
afs boot etc lib lost+found mnt proc run srv tmp var
bin dev home lib64 media opt root sbin sys usr
Linuxのコマンドが使えることが確認できました。
「docker container attach」でのコンテナの接続を終了させる。
「docker container attach」コマンドでのコンテナの接続を終了させるには、「exit」コマンドを使用します。
「exit」コマンドを実行します。
[root@fb84de7ecd18 /]# exit
exit
PS C:\Users\joeac>
コンテナへの接続が終了します。
コンテナの動作状況を確認する。
「docker container ls -a」コマンドを実行します。
PS C:\Users\joeac> docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fb84de7ecd18 quay.io/centos/centos:stream9 "/bin/bash" 17 minutes ago Exited (0) 18 seconds ago stream9
69ecfc809456 centos:centos7 "/bin/bash" 2 hours ago Exited (0) 2 hours ago centos7
8a296d609049 ubuntu:18.04 "/bin/bash" 14 hours ago Exited (0) 14 hours ago ubuntu18.04
4f2549619dda ubuntu:22.04 "/bin/bash" 16 hours ago Exited (0) 16 hours ago ubuntu22.04
9dcede2f3b1f httpd "httpd-foreground" 37 hours ago Exited (0) 37 hours ago webserver3
facb8262f20f nginx "/docker-entrypoint.…" 2 days ago Exited (0) 42 hours ago webserver2
18cbe71fe4a8 nginx "/docker-entrypoint.…" 2 days ago Exited (0) 2 days ago webserver1
3行目に注目します。「stream9」コンテナがあります。STATUS列から、このイメージがExited(停止)していることが分かります。「docker container attach」コマンドでは「exit」するとコンテナが停止することが分かりかります。
コンテナを再実行する。
コンテナを再実行させるには、「docker start」コマンドを使用します。
以下のコマンドを実行します。
- 「docker start stream9」コマンド
- 「docker container attach stream9」コマンド
接続を確認したら「exit」して接続を終了させます。
PS C:\Users\joeac> docker start stream9
stream9
PS C:\Users\joeac> docker container attach stream9
[root@fb84de7ecd18 /]# exit
exit
PS C:\Users\joeac>