Dockerでコンテナを動かしてみよう。
今回の目的
① コンテナを起動する。
② コンテナを停止する。
③ コンテナを削除する。
DockerでApacheコンテナを動かしてみる
DockerでApacheコンテナを起動してみます。
下記Docker Hubによると次のコマンドで起動可能なようである。
先ずはDocker Hubに倣ってコマンドを打ってみます。
$ docker run -dit --name my-apache-app -p 8080:80 -v "$PWD":/usr/local/apache2/htdocs/ httpd:2.4
Unable to find image 'httpd:2.4' locally
2.4: Pulling from library/httpd
42c077c10790: Pull complete
77a357ba66a8: Pull complete
c56c780a8904: Pull complete
90bcc5e941a7: Pull complete
571750298b32: Pull complete
Digest: sha256:c479bec894c5a7f8878b28e52d03cc95b1e784612ecd01ac7c7394fc5fa2e6e2
Status: Downloaded newer image for httpd:2.4
2bc6458b082553786d90c3f8be39a194ea35263c170944ca87cb470ec163ef4f
1行目:$ docker run -dit –name my-apache-app -p 8080:80 -v “$PWD”:/usr/local/apache2/htdocs/ httpd:2.4
1行目:$ docker run -dit –name my-apache-app -p 8080:80 -v “$PWD”:/usr/local/apache2/htdocs/ httpd:2.4
が今回のコンテナ起動のために打ったコマンドになります。
ローカルに目的のイメージが見当たらないようなのでプルしていますね。(2行目〜)
コンテナの起動を確認する
次にDockerが起動しているか確認してみる。
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2bc6458b0825 httpd:2.4 "httpd-foreground" 5 minutes ago Up 5 minutes 0.0.0.0:8080->80/tcp my-apache-app
docker psコマンドで確認すると次のことがわかる。
①CREATEDカラム 5 minutes ago:5分前にコンテナが作られたよう。
②STATUSカラム Up 5 minutes:5分前にコンテナが起動したよう。
ブラウザでlocalhost:8080へ通信することで画面への表示ができるようである。しかし、今回は表示用のHTMLファイルを用意していなかったのでそこら辺の動作確認は次回行うこととする。
コンテナを停止する
docker stopコマンドで起動していたコンテナを停止する。
$ docker stop my-apache-app
my-apache-app
停止するコンテナの対象はdocker psコマンドで確認したNAMEカラムの値(今回は「my-apache-app」)で指定することができるようだ。
また、CONTAINER IDの値でも指定可能なようである。(今回の場合、「docker stop 2bc6458b0825」コマンドでも停止できる)
docker psコマンドで起動中のコンテナから「my-apache-app」がなくなっていることを確認する。
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
停止中のコンテナはdocker ps -aコマンドで確認できる。
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2bc6458b0825 httpd:2.4 "httpd-foreground" About an hour ago Exited (0) 11 minutes ago my-apache-app
CONTAINER IDがdocker psで確認した値と一致していることから先ほどまで起動していたコンテナであることがわかる。
また、STATUSカラムの値から11分前に停止したことが確認できる。
停止しているコンテナを削除する。
停止中のコンテナを削除するためにdocker rmコマンドを使用する。
$ docker rm my-apache-app
my-apache-app
そしてdocker ps -aコマンドで停止中のコンテナから対象のものが削除されていることを確認する。
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
取得したコンテナイメージを削除する。
最後に今回取得したコンテナイメージを削除する。今後も使用していくコンテナイメージであれば削除する必要はないがそうでなければ不要なコンテナイメージは片付けておこう。
先ずはdocker image lsコマンドで所持しているコンテナイメージを確認する。
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
httpd 2.4 98f93cd0ec3b 8 days ago 144MB
今回使用しているコンテナイメージは144MBの容量があるようである。要領として決して小さいものではないことが確認できる。
では、docker rmiコマンドでこのコンテナイメージを削除してみよう。
$ docker rmi httpd:2.4
Untagged: httpd:2.4
Untagged: httpd@sha256:c479bec894c5a7f8878b28e52d03cc95b1e784612ecd01ac7c7394fc5fa2e6e2
Deleted: sha256:98f93cd0ec3b2e428f152d265d431bcb3f8a5ff56adaa5023e11a2b3b5a107e7
Deleted: sha256:f4592b579afa218a66285f3652418a826313aac1813be685ff9738dc06c0d8d9
Deleted: sha256:061811c2224e933b8ea3e2e0ffe7ec7bab8c2510f8f938ab13f9c4bacd425bd7
Deleted: sha256:b6ac17bbf3c4d8d63c1a085e9affa7a6c3f6e765f821837ff3d3e7fc0c0706e2
Deleted: sha256:3439b4fb9b4289be9427c14f2840d97e3573dc8d609584d9ceb2ad8bbd3ae9dc
Deleted: sha256:ad6562704f3759fb50f0d3de5f80a38f65a85e709b77fd24491253990f30b6be
対象のコンテナイメージはREPOSITORY:TAGあるいはIMAGE IDで指定可能である。(今回の場合、「docker rmi 98f93cd0ec3b」でも削除可能)
以上でもってコンテナの作成・起動・停止・削除を一通り実施したこととなる。