このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
【Docker入門】DockerでCentOS7を動かしてみる
ここでは、DockerでCentOS7を動かしてみます。
Centos7イメージのダウンロード
CentOS7イメージをDocker Hub からダウンロードします。
「docker image pull centos:centos7」コマンドを実行します。
docker image pull | centos | :centos7 |
イメージのダウンロード | イメージ名 | centos7 タグ(バージョン) タグを省略すると最新版(latest) が取得される。 |
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 -d | centos | :centos7 |
コンテナの作成と実行 | コンテナ名の指定 | オプション | イメージ名 | タグ |
オプションの意味
「-it」オプションを付けることで ターミナルでコンテナを実行することができるようになります。このコマンドに付けておく「お約束事」だと覚えておきましょう。
オプション | 説明 |
---|---|
-it | -i オプションと -t オプションを合わせたもの。 オプションは並べた表記ができる。 |
-i | 標準入力を開く。 |
-t | tty を割り当てる。 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 | -it | centos7 | echo "Hello Japan" |
稼働中のコンテナへの接続 | オプション | コンテナの指定 | echo コマンド |
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>