[Linux]Docker で Nginx のコンテナの使用
公開日:2025-11-30
更新日:2025-11-30
更新日:2025-11-30
1. 概要
Docker で Nginx のコンテナを使用します。
2. ネットワークの作成
コンテナ間で通信ができるようにネットワークを作成します。
Nginx を単独で実行する場合は不要です。
Nginx と php-fpm のコンテナを連携する際に必要となります。
ネットワークに関する他のコマンド
Nginx を単独で実行する場合は不要です。
Nginx と php-fpm のコンテナを連携する際に必要となります。
コマンド
docker network create {ネットワーク名}
docker network create my-app-network
ネットワークに関する他のコマンド
コマンド
docker network ls # ネットワーク一覧の表示
docker network rm my-app-network # ネットワークの削除3. Nginx の conf とテスト HTML の作成
3.1 ディレクトリの作成
Nginx 用の conf と html のディレクトリを Docker のホスト側に作成します。
Nginx のコンテナ起動時に、
このディレクトリをコンテナの中の conf.d と html にマウントして、Docker のホスト側からファイルの編集が行えるようにします。
Nginx のコンテナ起動時に、
このディレクトリをコンテナの中の conf.d と html にマウントして、Docker のホスト側からファイルの編集が行えるようにします。
コマンド
mkdir -p ~/docker_test/nginx/conf
mkdir -p ~/docker_test/nginx/html
「-p」を付けると、パスにある全てのディレクトリを作成してくれます。3.2 app.conf の作成
Nginx の conf の追加分です。
~/docker_test/nginx/conf/app.conf
~/docker_test/nginx/conf/app.conf
コード
server {
listen 80;
listen [::]:80;
server_name _;
root /usr/share/nginx/html;
}3.3 test.html の作成
次のコマンドを実行してください。
コマンド
echo 'test' > ~/docker_test/nginx/html/test.html4. Nginx のコンテナの起動
コマンド
docker run \
--name nginx-test \
--network my-app-network \
-d \
-p 80:80 \
-p 443:443 \
-v ~/docker_test/nginx/conf:/etc/nginx/conf.d \
-v ~/docker_test/nginx/html:/usr/share/nginx/html \
nginx:1.29.3
実行するコンテナのイメージ(今回は nginx:1.29.3)がローカルにない場合は、自動的に pull されます。nginx の他のバージョンは、Docker 公式イメージで確認できます。
ちなみに、Nginx の公式イメージに nginx:1.29 がありますが、nginx:1.29.0 と言う意味ではなく、nginx:1.29 の中の最新バージョンとなり、
pull するタイミングによってバージョンが新しくなる可能性があるため注意が必要です。また、このルールはイメージ毎に異なります。
--name は、コンテナの名前です。Docker のネットワークの中では、ホスト名のように使えます。
--network は、コンテナが接続するネットワークです。
-d は、コンテナをバックグラウンドで実行するオプションです。
コンテナを起動した後も、そのままターミナルで操作が可能になります。
-p は、ポートマッピングの設定です。Docker のホストに送信された内容をコンテナの指定されたポートに転送するイメージです。
-v は、Docker のホストのディレクトリを、コンテナのディレクトリにマウントします。
指定されたコンテナのディレクトリを参照すると、ホストのディレクトリが見えるようになります。
これにより、設定ファイルなどを Docker のホスト側に置くことができます。
4. 動作確認
http://localhost:8080/test.html にアクセスして「test」と表示されれば OK です。
5. エラー時の確認方法
Nginx のログを確認します。
404 の場合は、アクセスした URL が間違っているか、
Nginx の conf の root のパスと、docker run の -v で指定したパスが一致していない可能性があります。
docker run の -v の指定をはずしてコンテナを再作成して、http://localhost:8080/ にアクセスできるかどうかも確認してください。
Nginx のコンテナが起動後にすぐに停止する場合もあるため、コンテナが起動しているか確認します。
Nginx のコンテナに bash で接続して、正しくマウントされているかを確認します。
コマンド
docker logs nginx-test
アクセスしてもログが増えない場合は、Nginx のコンテナまでリクエストが届いていません。404 の場合は、アクセスした URL が間違っているか、
Nginx の conf の root のパスと、docker run の -v で指定したパスが一致していない可能性があります。
docker run の -v の指定をはずしてコンテナを再作成して、http://localhost:8080/ にアクセスできるかどうかも確認してください。
Nginx のコンテナが起動後にすぐに停止する場合もあるため、コンテナが起動しているか確認します。
コマンド
docker ps
Nginx のコンテナに bash で接続して、正しくマウントされているかを確認します。
コマンド
docker exec -it nginx-test bash
コンテナ内の /usr/share/nginx/html で test.html が見えていれば OK です。
