NginxをDockerコンテナでUbuntuにセットアップして実行する方法について、包括的かつ詳細なガイドを以下に記載します。このガイドは、初心者から中級者向けに、Dockerの基本的な使用方法を理解している前提で進めます。
1. 前提条件
まず、Ubuntuシステムに以下のツールがインストールされていることを確認してください。
- Docker: Dockerは、アプリケーションのコンテナ化をサポートするプラットフォームです。
- Nginx: 高速で軽量なウェブサーバーであり、リバースプロキシとしても広く使用されます。
Dockerのインストール方法
UbuntuにDockerをインストールするには、以下の手順を実行します。
bashsudo apt update
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
sudo sh -c 'echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" > /etc/apt/sources.list.d/docker.list'
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io
インストールが完了したら、Dockerのバージョンを確認して、インストールが成功したことを確認できます。
bashdocker --version
Docker Composeのインストール(オプション)
複数のコンテナを管理するためにDocker Composeを使用することもあります。Docker Composeのインストールは以下のコマンドで行えます。
bashsudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
インストール後、docker-composeコマンドのバージョンを確認します。
bashdocker-compose --version
2. DockerでNginxコンテナを実行する
Dockerを使ってNginxをコンテナ内で実行する方法を説明します。まず、Nginxの公式Dockerイメージを利用して、Nginxをコンテナとして実行します。
2.1. Nginxコンテナの実行
以下のコマンドを実行して、NginxをDockerコンテナ内で実行します。
bashsudo docker run --name nginx-container -p 80:80 -d nginx
--name nginx-container: コンテナの名前を指定します。-p 80:80: ホストのポート80をコンテナのポート80にマッピングします。-d: バックグラウンドでコンテナを実行します。nginx: 使用するDockerイメージ名です。
実行後、ブラウザでhttp://localhostにアクセスすると、Nginxのデフォルトページが表示されるはずです。
2.2. コンテナの状態確認
コンテナが正常に実行されているか確認するために、以下のコマンドを使用します。
bashsudo docker ps
実行中のコンテナの一覧が表示され、nginx-containerという名前のコンテナがリストに表示されるはずです。
3. Nginxの設定を変更する
コンテナ内で動作しているNginxの設定を変更するには、設定ファイルを編集する必要があります。これを実現するために、ボリュームを使用してホストマシンとコンテナ間で設定ファイルを共有します。
3.1. 設定ファイルのマウント
次のコマンドを使って、ホスト上のNginx設定ファイルをコンテナ内にマウントします。
bashsudo docker run --name nginx-container -p 80:80 -v /path/to/nginx.conf:/etc/nginx/nginx.conf -d nginx
/path/to/nginx.conf: あなたのホストマシン上のNginx設定ファイルのパスです。/etc/nginx/nginx.conf: コンテナ内で使用されるNginx設定ファイルのパスです。
これにより、ホストマシンのNginx設定ファイルがコンテナ内で使用されるようになります。
3.2. Nginx設定の確認と再起動
設定ファイルを変更した後、Nginxを再起動する必要があります。以下のコマンドで再起動します。
bashsudo docker exec nginx-container nginx -s reload
これで、設定変更が反映されます。
4. Docker Composeを使用してNginxを管理する
複数のサービスをまとめて管理するために、Docker Composeを使用することができます。例えば、Nginxと他のサービス(例えば、PHP-FPMなど)を同時に管理したい場合です。
4.1. docker-compose.ymlの作成
以下のようなdocker-compose.ymlファイルを作成します。このファイルには、NginxサービスとPHP-FPMサービスが含まれます。
yamlversion: '3'
services:
nginx:
image: nginx
container_name: nginx-container
ports:
- "80:80"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
- ./html:/usr/share/nginx/html
depends_on:
- php
php:
image: php:7.4-fpm
container_name: php-container
volumes:
- ./html:/var/www/html
nginx.conf: Nginxの設定ファイルです。./html: HTMLコンテンツやPHPファイルを格納するディレクトリです。depends_on: PHP-FPMサービスがNginxサービスより先に起動するように指定します。
4.2. Docker Composeでサービスを起動
以下のコマンドを実行して、Docker Composeでサービスを起動します。
bashdocker-compose up -d
これにより、NginxとPHP-FPMが同時に起動し、設定が反映されます。
4.3. コンテナのログ確認
コンテナのログを確認するには、以下のコマンドを使用します。
bashdocker-compose logs nginx
これにより、Nginxコンテナのログを確認することができます。
5. コンテナの管理
5.1. コンテナの停止と削除
コンテナを停止するには、以下のコマンドを使用します。
bashsudo docker stop nginx-container
コンテナを削除するには、次のコマンドを使用します。
bashsudo docker rm nginx-container
5.2. Docker Composeでの停止
Docker Composeを使用している場合、全サービスを停止するには以下のコマンドを実行します。
bashdocker-compose down
これにより、Composeで定義されたすべてのコンテナが停止し、削除されます。
6. まとめ
Ubuntu上でDockerを使用してNginxを実行する手順を紹介しました。基本的なNginxのセットアップから、設定ファイルの変更、さらにDocker Composeを使った複数サービスの管理まで、幅広い手法を紹介しました。これにより、より効率的にNginxを活用した環境を構築できるようになるでしょう。

