概要
Docker環境にNginx(Webサーバー)を構築してみます。
Nginx
Nginx(エンジンエックス)は、OSSの高速Webサーバーソフトウェアで処理性能/並行処理/メモリ使用量削減に焦点を当てて開発されているWebサーバです。
ロードバランサーやHTTPキャッシュのなどの機能も備えています。
また、Webサーバとしてだけでなく、リバースプロキシやロードバランサとしても利用できます。
https://ja.wikipedia.org/wiki/Nginx
公式サイト:https://nginx.org/
環境情報
・ホストOS:Windows 10
・VirtualBox:Ver 5.2.18
・ゲストOS:Ubuntu 18.04
・Docker:18.06.1-ce
Dockerイメージダウンロード
Dockerコンテナを起動するためにDockerコンテナの基となるDockerイメージを入手します。
以下(Docker Hub)からNginxの公式イメージが提供されています。
https://hub.docker.com/_/nginx
イメージダウンロード
docker@LesPaul:~$ docker pull nginx Using default tag: latest latest: Pulling from library/nginx 802b00ed6f79: Pull complete 5291925314b3: Pull complete bd9f53b2c2de: Pull complete Digest: sha256:9ad0746d8f2ea6df3a17ba89eca40b48c47066dfab55a75e08e2b70fc80d929e Status: Downloaded newer image for nginx:latest
※公式イメージにはDockerでNginxを動作させるための必要なパッケージがインストールされています。
イメージ確認
docker@LesPaul:~$ docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest be1f31be9a87 42 hours ago 109MB ubuntu latest cd6d8154f1e1 4 weeks ago 84.1MB
Nginx起動
Dockerコンテナの基になるDockerイメージを使用してNginxサーバを起動。
下記の例では、「nginx」を使用して「webserver」という名称のDockerコンテナを起動しています。
ブラウザからHTTP(port:80)アクセスを許可するために-pオプションでコンテナからの転送を許可してます。
docker@LesPaul:~$ docker container run --name webserver -d -p 80:80 nginx 43e7fd9aabb6d6407bf9cebd469f000ed4537f3eb2c7cc99b5757e5e9601270a
英数字の文字列は、コンテナIDと呼ばれ、Dockerコンテナの一意の識別子です。
Nginx動作確認
http://localhost:80
上記のNginxのトップ画面が表示されれば、Webサーバは問題なく動作していると確認できます。
Nginxサーバ状態の確認
docker@LesPaul:~$ docker container ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 43e7fd9aabb6 nginx "nginx -g 'daemon of…" 14 minutes ago Up 14 minutes 0.0.0.0:80->80/tcp webserver
---> 上記より「webserver」という名称のDockerコンテナでNginxのサーバプロセスが起動しており、ポート80番で転送しています。
Nginx起動/停止
コンテナ停止
docker@LesPaul:~$ docker stop webserver
webserver
docker@LesPaul:~$ docker container ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
コンテナ起動
docker@LesPaul:~$ docker start webserver webserver docker@LesPaul:~$ docker container ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 43e7fd9aabb6 nginx "nginx -g 'daemon of…" 22 minutes ago Up 3 seconds 0.0.0.0:80->80/tcp webserver