このページで解説している内容は、以下の 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 pullquay.io/centos/centos:stream9
イメージのダウンロードレジストリ/イメージ名stream9 タグ(バージョン)
タグを省略すると最新版(latest) が取得される。
docker image pull コマンド
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 -dcentos:stream7
コンテナの作成と実行コンテナ名の指定オプションイメージ名タグ
docker container run コマンド

オプションの意味

 「-it」オプションを付けることで ターミナルでコンテナを実行することができるようになります。このコマンドに付けておく「お約束事」だと覚えておきましょう。

オプション説明
-it-i オプションと -t オプションを合わせたもの。
オプションは並べた表記ができる。
-i標準入力を開く。
-ttty を割り当てる。
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 -itstream9echo “Hello India”
稼働中のコンテナへの接続オプションコンテナの指定echo コマンド
docker container run コマンド
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>