目次
概要
今回はApacheがインストールされたコンテナを実行して、Webサーバーを動かすまでの操作をやります。
(注) EC2インスタンス自体にApacheをインストールしても、WebサーバーとしてEC2インスタンスを機能させることができます。コンテナを使うことで、EC2インスタンスに直接Apacheをインストールしなくても良くなります。
dockerコマンドの書式
dockerコマンドは、次のような書式を取ります。
docker コマンド 操作対象 オプション
Docker操作の大まかな流れ
今回は、下記の流れでDockerを操作します。
イメージを探す
Docker Hubから、目的のコンテナの元となるイメージを探します。コンテナを作成する
dockerコマンドでイメージからコンテナを作成します。これでWebサーバーが起動します。コンテンツを作る
Webサーバーで見せたいコンテンツとしてindex.htmlを作成します。コンテナの停止と再開
コンテナはいつでも停止することができ、また再開できます。停止中はWebサーバーとして機能しないことを確認し、再開すれば、また動き出すことを確認します。ログの確認
コンテナを運用する上では、ログを確認する必要があります。起動したWebサーバーのログを確認してみます。コンテナを破棄する
使用しないコンテナは破棄します。イメージを破棄する
ディスクを消費するので、最後にダウンロードしたイメージを削除しておきます。
作業手順
手順1:
Docker HubのサイトでApacheを検索して、httpdというDockerイメージが存在するかを確認します。
手順2:
以下のコマンドを実行して、DockerイメージをDocker Hubからプルしてきて、Dockerコンテナを起動します。nameの部分には命名したいコンテナ名を指定します。
docker run -dit --name my-apache-app -p 8080:80 -v "$PWD":/usr/local/apache2/htdocs/ httpd:2.4
↓ コマンドを実行した時のログ
ubuntu@ip-10-0-12-65:~$ 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 e9995326b091: Pull complete ee55ccd48c8f: Pull complete bc66ebea7efe: Pull complete 5d0f831d3c0b: Pull complete e559e5380898: Pull complete Digest: sha256:5fa96551b61359de5dfb7fd8c9e97e4153232eb520a8e883e2f47fc80dbfc33e Status: Downloaded newer image for httpd:2.4 141390abadd3e74a4f379557236891b159bc42551b71946debcef02320b4c758 ubuntu@ip-10-0-12-65:~$
手順3:
「docker ps」と入力すると、稼働中のコンテナの一覧が表示されます。「STATUS」の部分が「Up」と表示されていれば、コンテナが起動しています。
ubuntu@ip-10-0-12-65:~$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 141390abadd3 httpd:2.4 "httpd-foreground" 3 minutes ago Up 3 minutes 0.0.0.0:8080->80/tcp, :::8080->80/tcp my-apache-app
手順4:
EC2インスタンスのIPアドレスでEC2インスタンスにアクセスすると、ApacheのWebページが表示されます。
手順5:
コンテナを停止するためには、「docker stop」コマンドを使用します。
stopコマンドにはコンテナ名 or コンテナIDを指定します。
docker stop コンテナ名 or コンテナID
docker psは稼働中のコンテナしか表示しないので、稼働中ではないものを含むすべてのコンテナを表示したい場合は-aオプションを指定します。 STATUSが「Exited」になっていれば、終了していることが分かります。
ubuntu@ip-10-0-12-65:~$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 141390abadd3 httpd:2.4 "httpd-foreground" 16 minutes ago Exited (0) 19 seconds ago my-apache-app
(注) docker stopコマンドはコンテナを停止させるだけであって、コンテナは残り続けるので、注意が必要です。
手順6:
コンテナを再開させるためには、docker startコマンドを使用します。
docker start コンテナ名 or コンテナID
手順7:
実行中のコンテナのログを確認したい場合、docker logsコマンドを使用します。
docker logs コンテナ名 or コンテナID
手順8:
docker stopしてもコンテナは停止するだけで残り続けます。そのため、ディスクを圧迫します。コンテナを使わないのであれば、コンテナを停止するのではなく、docker rmコマンドでコンテナを削除します。コンテナを削除するためには、docker stopコマンドでコンテナを一旦停止させる必要があります。
手順9:
実際にどのようなイメージをダウンロードしたのかは、docker image lsコマンドで確認できます。
ubuntu@ip-10-0-12-65:~$ docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE httpd 2.4 fe8735c23ec5 2 weeks ago 145MB
コンテナを破棄しても、ダウンロードしたイメージは残ったままです。これは同じDockerイメージからコンテナを作るときに再ダウンロードしないようにするためです。Dockerイメージはディスクを消費するので、使わない場合は削除しましょう。 docker image rmコマンドでDockerイメージを削除します。 削除したいイメージ名を指定します。イメージ名は「REPOSITORY:TAG」の書式で指定します。
docker image rm REPOSITORY:TAG
参考記事
さわって学ぶクラウドインフラ docker基礎からのコンテナ構築 | 大澤 文孝, 浅居 尚 |本 | 通販 | Amazon