このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

DockerでCentOS7を動かしてみる

ここでは、DockerでCentOS7を動かしてみます。

Centos7イメージのダウンロード

CentOS7イメージをDocker Hub からダウンロードします。

・「docker image pull centos:centos7」コマンドを実行します。
docker image pullcentos:centos7
イメージのダウンロードイメージ名centos7 タグ(バージョン)
タグを省略すると最新版(latest) が取得される。
docker image pull コマンド
PS C:\Users\joeac> docker image pull centos:centos7
centos7: Pulling from library/centos
2d473b07cdd5: Pull complete
Digest: sha256:be65f488b7764ad3638f236b7b515b3678369a5124c47b8d32916d6487418ea4
Status: Downloaded newer image for centos:centos7
docker.io/library/centos:centos7

ダウンロードしたイメージを確認します。

・「docker image ls」コマンドを実行します。

6行目にタグが「centos7」の centos イメージがあることが確認できます。

PS C:\Users\joeac> docker image ls
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
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 centos7 -it -d centos:centos7」コマンドを実行します。
docker container run–name centos7 -it -dcentos:centos7
コンテナの作成と実行コンテナ名の指定オプションイメージ名タグ
docker container run コマンド
・オプションの意味

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

オプション説明
-it-i オプションと -t オプションを合わせたもの。
オプションは並べた表記ができる。
-i標準入力を開く。
-ttty を割り当てる。
tty とは、標準入出力となっている端末デバイスのこと。
仮想コンソールは「/dev/tty1」
-itターミナルでコンテナを実行する。
-dデタッチモードを指定する。バックグラウンドでコンテナを起動します。
オプションの意味
PS C:\Users\joeac> docker container run --name centos7 -it -d centos:centos7
6c1a65344c2e35f271c1f6f67aa26e70838fe86e14a77ac3e6f33662751461ed

コンテナの動作状況の確認

・「docker container ls -a」コマンドを実行します。

 3行目に「centos7」コンテナがあります。STATUS列から、このイメージが実行中であることが確認できます。

PS C:\Users\joeac> docker container ls -a
CONTAINER ID   IMAGE            COMMAND                   CREATED          STATUS                    PORTS     NAMES
6c1a65344c2e   centos:centos7   "/bin/bash"               21 seconds ago   Up 19 seconds                       centos7
8a296d609049   ubuntu:18.04     "/bin/bash"               11 hours ago     Exited (0) 11 hours ago             ubuntu18.04
4f2549619dda   ubuntu:22.04     "/bin/bash"               13 hours ago     Exited (0) 13 hours ago             ubuntu22.04
9dcede2f3b1f   httpd            "httpd-foreground"        34 hours ago     Exited (0) 34 hours ago             webserver3
facb8262f20f   nginx            "/docker-entrypoint.…"   45 hours ago     Exited (0) 39 hours ago             webserver2
18cbe71fe4a8   nginx            "/docker-entrypoint.…"   45 hours ago     Exited (0) 45 hours ago             webserver1

実行中のコンテナへの接続

 実行中(稼働中)のコンテナに接続するコマンドには「docker exec」コマンドと「docker container attach」コマンドがあります。

「docker exec」コマンド

まず、「docker exec」コマンドから試してみます。

・「docker exec -it centos7 echo “Hello America”」コマンドを実行します。
docker exec -itcentos7echo “Hello Japan”
稼働中のコンテナへの接続オプションコンテナの指定echo コマンド
docker container run コマンド
PS C:\Users\joeac> docker exec -it centos7 echo "Hello America"
Hello America # コマンドの実行結果

2行目の「Hello America」の出力は、Linuxのechoコマンドの出力です。

コンテナの動作状況を確認する。
・「docker container ls -a」コマンドを実行します。
PS C:\Users\joeac> docker container ls -a
CONTAINER ID   IMAGE            COMMAND                   CREATED         STATUS                    PORTS     NAMES
6c1a65344c2e   centos:centos7   "/bin/bash"               8 minutes ago   Up 8 minutes                        centos7
8a296d609049   ubuntu:18.04     "/bin/bash"               11 hours ago    Exited (0) 11 hours ago             ubuntu18.04
4f2549619dda   ubuntu:22.04     "/bin/bash"               13 hours ago    Exited (0) 13 hours ago             ubuntu22.04
9dcede2f3b1f   httpd            "httpd-foreground"        34 hours ago    Exited (0) 34 hours ago             webserver3
facb8262f20f   nginx            "/docker-entrypoint.…"   45 hours ago    Exited (0) 39 hours ago             webserver2
18cbe71fe4a8   nginx            "/docker-entrypoint.…"   45 hours ago    Exited (0) 45 hours ago             webserver1

 3行目に注目します。「centos7」コンテナがあります。STATUS列から、このイメージが稼働していることが確認できます。「docker exec」コマンドを実行してもコンテナは停止しないことが分かります。

「docker container attach (コンテナ名)」コマンド

次に「docker container attach」コマンドを試します。

・「docker container attach centos7」コマンドを実行します。

コンテナ名には「centos7」を指定します。

PS C:\Users\joeac> docker container attach centos7
[root@6c1a65344c2e /]#  ←centos7のターミナルに接続される

cnetos7 のターミナルに接続されます。

ターミナルに接続されるので、Linuxのコマンドが使えます。

・「ls」コマンドを実行してみます。
[root@6c1a65344c2e /]# ls
anaconda-post.log  bin  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

Linuxのコマンドが使えることが確認できました。

・「docker container attach」でのコンテナの接続を終了させる。

「docker container attach」コマンドでのコンテナの接続を終了させるには、「exit」コマンドを使用します。

・「exit」コマンドを実行します。
[root@6c1a65344c2e /]# 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
6c1a65344c2e   centos:centos7   "/bin/bash"               22 minutes ago   Exited (0) About a minute ago             centos7
8a296d609049   ubuntu:18.04     "/bin/bash"               12 hours ago     Exited (0) 11 hours ago                   ubuntu18.04
4f2549619dda   ubuntu:22.04     "/bin/bash"               13 hours ago     Exited (0) 13 hours ago                   ubuntu22.04
9dcede2f3b1f   httpd            "httpd-foreground"        34 hours ago     Exited (0) 34 hours ago                   webserver3
facb8262f20f   nginx            "/docker-entrypoint.…"   45 hours ago     Exited (0) 39 hours ago                   webserver2
18cbe71fe4a8   nginx            "/docker-entrypoint.…"   46 hours ago     Exited (0) 45 hours ago                   webserver1

 3行目に注目します。「centos7」コンテナがあります。STATUS列から、このイメージがExited(停止)していることが分かります。「docker container attach」コマンドでは「exit」するとコンテナが停止することが分かりかります。

コンテナを再実行する。

コンテナを再実行させるには、「docker start」コマンドを使用します。

以下のコマンドを実行します。

  • 「docker start centos7」コマンド
  • 「docker container attach centos7」コマンド

接続を確認したら「exit」して接続を終了させます。

PS C:\Users\joeac> docker start centos7
centos7
PS C:\Users\joeac> docker container attach centos7
[root@6c1a65344c2e /]# exit
exit
PS C:\Users\joeac>