お問い合わせはこちら

【入門】Dockerでnginxを動かす手順

公開
dockerでnginxを使う

nginx(エンジンエックス)は、オープンソースの高機能なWebサーバーです。機能が豊富で処理性能も高いことから、幅広く利用されています。Dockerを利用することで、nginxを手軽に利用することも可能です。この記事では、Dockerでnginxを動かし始めるまでの手順を分かりやすく解説しています。

Dockerでnginxを動作させるまでの手順

Dockerでは、nginxを非常に簡単な手順で動作させることが可能です。以下、具体的な手順を1つずつみていきましょう。

nginxのイメージを取得する

Dockerでnginxを動作させるのに使える公式イメージは、公式のレジストリサービス「Docker Hub」から取得できます。nginxイメージを取得するためのコマンドは、以下の通りです。

docker image pull nginx

コマンド実行後、数十秒程度で取得が完了します。

nginxを動作させる

次にnginxイメージを実行することで、Dockerコンテナを生成しnginxを動作させます。具体的なコマンドは以下の通りです。

docker container run -d -p 8080:80 --name nginx nginx

このコマンドでは、Dockerイメージを実行するコマンド(docker container run <イメージ名>)の次に、以下内容を追加しています。

・「-p 8080:80」
ホスト側のポート番号(8080)と、Docker側のポート番号(80)を紐づけるオプションです。

・「-d」
Dockerコンテナをバックグラウンドで実行するためのオプションです。

・「–name nginx」
コンテナに「nginx」というコンテナ名を付与するオプションです。

これでnginxの動作が開始されました。「http://コンテナのIPアドレス:8080/」にアクセスすると、以下のようにnginxのページが表示されます。

nginxの確認画面

作成したコンテナは以下コマンドで停止・起動できます。

・停止

docker container stop nginx

・起動

docker container start nginx

nginxで自分の作ったhtmlファイルを表示させる

nginxを動作させた段階では、nginxデフォルトのhtmlが表示されます。これを自分で作ったhtmlにかえてみましょう。

まず、以下コマンドで、nginxコンテナのなかへ入ります。

docker container exec -it nginx bash

次に、以下コマンドでnginx設定ファイルの内容を確認します。

cat /etc/nginx/conf.d/default.conf

設定ファイルを確認すると、以下の箇所にてデフォルトのhtmlファイル(index.html)がある場所を確認できます。

location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;

「/usr/share/nginx/html」がindex.htmlのあるディレクトリ位置です。以下コマンドを実行し、「index.html」を編集しましょう。 まず編集用のコマンド(vi)をインストールします。

apt-get update
apt-get install vim

※途中で質問が表示されますが「Y」→「Enter」キーで先に進んでください。

次に、「viコマンド」でファイルを編集します。

vi /usr/share/nginx/html/index.html
viコマンドの基本的な使い方
  • キーボードの「i」キーで編集が可能な入力モードになります
  • 矢印キーで編集したい箇所へカーソルを移動し、編集して下さい
  • 編集完了後、「Esc」キーで入力モードを終了します
  • 「:wq」と入力後、「Enter」キーで上書き保存されファイル編集を完了します

ここでは以下のように編集してみます。(任意の内容で編集してみてください。)

<html>
 <head><title>test</title></head>
 <body>
hello World!

 </body>
</html>

その後、「http://コンテナのIPアドレス:8080/」へアクセスすると、以下のように表示されます。

hello worldという表示確認
実際の表示内容

Docker+nginxでHTTPS通信ができるようにする

ここではSSLの自己証明書を使いHTTPS通信ができるようにします。 まず以下のコマンドで、443番ポートを待ち受ける新しいnginxコンテナを作成します。

docker container run -d -p 443:443 --name nginx2 nginx

※コンテナ名を「nginx2」としています。

作成したコンテナに入ります。

docker container exec -it nginx2 bash

秘密鍵や証明書を配置するためのディレクトリを作成します。

mkdir /etc/nginx/ssl

秘密鍵を作成します。

openssl genrsa -out /etc/nginx/ssl/server.key 2048

CSR(証明書署名要求)を作成します。

openssl req -new -key /etc/nginx/ssl/server.key -out /etc/nginx/ssl/server.csr

※Country Nameなどを聞かれますが、自己証明書なのでここは全てEnterキーで飛ばしてかまいません。

CRT(SSLサーバ証明書)を作成します。

openssl x509 -days 3650 -req -signkey /etc/nginx/ssl/server.key -in /etc/nginx/ssl/server.csr -out /etc/nginx/ssl/server.crt

CRTが作成されたことを確認します。

ls -l /etc/nginx/ssl/
total 12
-rw-r--r-- 1 root root ****** server.crt
-rw-r--r-- 1 root root  ****** server.csr
-rw-r--r-- 1 root root ****** server.key

nginxの設定ファイル(default.conf)を編集します。その前に編集用のコマンド(vi)をインストールしましょう。

apt-get update
apt-get install vim

※途中で質問が表示されますが「Y」→「Enter」キーで先に進んでください。

/etc/nginx/conf.d/にssl.conf という名前でSSL用の設定ファイルを作成し、以下を追記します。

vi /etc/nginx/conf.d/ssl.conf
server {
  listen 443 default ssl;
  root   /usr/share/nginx/html;
  index  index.html index.htm;
  ssl on;
    ssl_certificate     /etc/nginx/ssl/server.crt;
    ssl_certificate_key /etc/nginx/ssl/server.key;
}

nginxの設定を再読み込みします。

service nginx reload

これでHTTPS通信用の設定は完了です。以下URLにアクセスして確認してみてください。 「https://コンテナのIPアドレス/」

※ 自己証明書を使っているため、「この接続ではプライバシーが保護されません」とのエラーメッセージが表示されます。ただし「詳細設定」→「●●にアクセスする(安全ではありません)」と遷移することでアクセスが可能です。

【参考】nginxで他にできること

nginxは単なるWebサーバーとしてだけでなく、以下にあげる用途で利用することも可能です。

  • ロードバランサー
  • リバースプロキシ
  • FastCGI
  • FLV/MP4ストリーミング
  • メールプロキシ機能

これら機能について興味がある方は、引き続き以下公式ドキュメント(英語)や書籍などで学習をすすめてみてはいかがでしょうか?

【公式ドキュメント】
http://nginx.org/en/docs/

【書籍】
nginx実践ガイド
https://book.impress.co.jp/books/1115101148

まとめ

Dockerでは公式レジストリ「Docker Hub」にて、nginxのイメージが提供されています。そのためDocker Hubからそのイメージを取得して実行するだけで、簡単にnginxを動作させることが可能です。nginxの学習をしたかったり、検証をしたかったりする際は、まずDockerで試してみるのもよいでしょう。

KAGOYA CLOUD VPSでは初期費用無料、月額 550円(日額 20円)~の低価格で手軽にDockerを利用可能です。KAGOYA CLOUD VPSにはDocker CEのアプリケーションセットアップも用意されています。そのためDocker環境を、非常に簡単な手順で手間なく作成可能です。

KAGOYA CLOUD VPSについて詳しくは、以下公式サイトで確認下さい。

日額 20円 で使えるVPS

開発・検証・プログラミング学習に。無駄なコストもかけたくないあなたにおすすめのVPS

カゴヤのVPSは初期費用無料でアカウント登録さえしておけば、必要なときだけ日額課金でサーバーを立ち上げ可能!料金は使った分だけ。