前回の『Mac に Docker インストールしてみた』の続きです。
実際に Nginx + PHP + MySQL 環境を構築するにあたって、今回は Nginx コンテナを起動させて、静的コンテンツの表示までを行いたいと思います。
Docker Machine の起動
前回から、PC をシャットダウンしたり、再起動している場合は、もう一度 Docker Machine を起動させなければいけないので、下記のコマンドで起動させてください。(それ以外の方は次の『Nginx コンテナを起動させる』から読んでください)
$ docker-machine start dev-machine Starting "dev-machine"... (dev-machine) Waiting for an IP... Machine "dev-machine" was started. Waiting for SSH to be available... Detecting the provisioner... Started machines may have new IP addresses. You may need to re-run the `docker-machine env` command.
前回と同じ手順を踏んで、Docker Machine に接続できるようにしていきます。
$ docker-machine env dev-machine export DOCKER_TLS_VERIFY="1" export DOCKER_HOST="tcp://192.168.99.101:2376" export DOCKER_CERT_PATH="/Users/enomotodev/.docker/machine/machines/dev-machine" export DOCKER_MACHINE_NAME="dev-machine" # Run this command to configure your shell: # eval $(docker-machine env dev-machine)
$ eval $(docker-machine env dev-machine)
$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE ubuntu latest 97434d46f197 2 weeks ago 188 MB
無事 docker images
コマンドが実行できました。
Nginx コンテナを起動させる
まずは docker pull
コマンドを実行して、Nginx のイメージを取得します。
$ docker pull nginx:latest latest: Pulling from library/nginx fdd5d7827f33: Pull complete a3ed95caeb02: Pull complete 716f7a5f3082: Pull complete 7b10f03a0309: Pull complete Digest: sha256:f6a001272d5d324c4c9f3f183e1b69e9e0ff12debeb7a092730d638c33e0de3e Status: Downloaded newer image for nginx:latest
docker images
コマンドで確認します。
$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE ubuntu latest 97434d46f197 2 weeks ago 188 MB nginx latest af4b3d7d5401 3 weeks ago 190.5 MB
docker run
コマンドで Nginx のコンテナが起動するのですが、先に Nginx の設定ファイルと Document Root に置く HTML ファイルを準備します。
~/docker/nginx/nginx.conf
server { listen 8080 default_server; root /var/www; index index.html index.htm; }
~/docker/www/index.html
<html> <body> <h1>Hello Docker!</h1> </body> </html>
最低限の設定ですが、必要なファイルが準備できたので、docker run
コマンドで Nginx コンテナを起動します。
$ docker run -p 9090:8080 -v /Users/enomotodev/docker/nginx/nginx.conf:/etc/nginx/conf.d/nginx.conf -v /Users/enomotodev/docker/www:/var/www -d nginx 0902e290559b4a054d72b4cf2615334079cfa879df1cc35d9655d0f0e217c462
ここで docker run
コマンドのオプションを少し確認したいと思います。
-p
オプション
-p
オプションでポートマッピングの設定ができます。
『Mac -> Docker Machine -> Nginx コンテナ』という流れで Nginx に接続していて、今回は 9090:8080
と設定しているので、『Mac -> Docker Machine』の接続に 9090
ポート、『Docker Machine -> Nginx コンテナ』の接続に 8080
ポートを使用するという設定になっています。
-v
オプション
-v
オプションでは、Docker Machine と Nginx コンテナ間で共有するファイル・ディレクトリを指定できます。
Docker Machine には、Mac の /Users
ディレクトリがマウントされているので、例えば Mac 上の /Users/enomotodev/hoge
ディレクトリは、Docker Machine 上でも /Users/enomotodev/hoge
ディレクトリになります。
-v foo:bar
と書くと、Docker Machine の foo
ディレクトリを Nginx コンテナの bar
にマウントさせることができ、それによってファイルやディレクトリを共有できます。
-d
オプション
-d
オプションを使用するとコンテナをバックグラウンドモードで起動することができます。
Nginx コンテナの起動確認
Nginx コンテナを起動させたので Docker Machine の IP を確認して、接続してみましょう。
$ docker-machine ip dev-machine 192.168.99.101
Docker Machine の IP が 192.168.99.101
とわかったので、Nginx コンテナを起動するときに指定した 9090
ポートで接続してみます。
http://192.168.99.101:9090
無事に表示されました!
まとめ
Nginx コンテナを起動し、静的コンテンツの表示までできました。
次回は PHP と連携して、動的なコンテンツの表示も行いたいと思います。
プログラマのためのDocker教科書 インフラの基礎知識&コードによる環境構築の自動化
- 作者: 阿佐志保,山田祥寛
- 出版社/メーカー: 翔泳社
- 発売日: 2015/11/20
- メディア: 大型本
- この商品を含むブログ (3件) を見る