GAGA LIFE.

インフラエンジニアブログ

スポンサーリンク

Docker上にNginx環境構築

概要

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
f:id:undercovergeek:20181004224106j:plain
上記の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

f:id:undercovergeek:20181004224123j:plain

コンテナ起動

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

スポンサーリンク