Docker コンテナで Nginx を実行する方法: ステップバイステップ ガイド
このチュートリアルでは、Nginx を Docker コンテナとして実行し、ローカル ネットワークに公開する方法を学習します。
さらに、コンテナーとホスト ファイル システムの間で情報を共有するための Docker データ ボリュームを作成する方法を学びます。
Nginx は、Web サービス、リバース プロキシ、キャッシュ、負荷分散などに使用される人気のオープンソース ソフトウェアです。非常に人気があり、現在、トラフィックの多い Web サイトの多くで使用されています。
Docker の最も一般的なワークロードの 1 つは、Docker を使用して Web サーバーをコンテナ化することです。 Nginxでの設定方法を紹介します。それでは、そのプロセスについて説明しましょう。
関連: Nginx Web サーバーをインストールして構成する方法
Docker は、アプリケーションを 1 つの管理しやすいコンテナー イメージにパッケージ化するコンテナー化プラットフォームです。
前提条件
このチュートリアルを完了するには、次の要件を満たす必要があります。
- Docker がインストールされ、システム上でローカルに実行されている必要があります。
- root アカウントが必要です。そうでない場合は、ユーザーが sudo コマンドを実行できます。
Docker 内での Nginx のセットアップ
イメージのプル
まず、公式の Nginx イメージを取得します。ターミナルで次の Docker pull コマンドを実行して、Docker ホスト上の Docker ハブから Nginx の最新イメージをダウンロードします。
sudo docker pull nginx
Nginx Docker コンテナを実行する
Nginx Docker コンテナを実行し、そのポートをローカル ネットワークに公開する準備ができました。これを行うには、次のコマンドを使用してイメージを実行します。
sudo docker run -d -p 80:80 --name my-nginx-server nginx
-d
– コンテナーをデタッチ モードで起動します (コンテナーはバックグラウンドで実行されます)。-p
– コンテナからホストにポートをバインドします (ホスト トラフィック ポート 80 をコンテナ ポート 80 にルーティングします)。-name
– Docker コンテナの名前。
最後の引数 nginx
は、コンテナにどのイメージを使用するかを Docker に指示します。
次に、ブラウザを開いて、Nginx コンテナを実行したホストのアドレスを指定します。私の場合、それは http://192.168.122.101
です。 Nginx Web サーバーのデフォルト ページが表示されます。
そこにあります。 Nginx Docker コンテナの動作中のインスタンスがあります。
Dockerコンテナの一覧表示
実行中のすべての Docker コンテナを一覧表示するには、次のコマンドを実行します。
sudo docker container ls
上記の出力に基づいて、次の 2 つのいずれかを使用して Nginx Docker コンテナを停止できます。
sudo docker stop 19411f8b3f35
sudo docker stop my-nginx-server
実行されていないコンテナも含めてすべてのコンテナを表示するには、-a
フラグを追加する必要があります。
sudo docker container ls -a
Nginx Docker コンテナとホストの間でデータを共有する
Docker コンテナは一時的です。 デフォルトでは、コンテナ内で作成されたデータはコンテナ内からのみ、またコンテナの実行中にのみ利用できます。
そこで、コンテナ内のデータをホスト マシンでアクセスできるようにする方法を説明します。私たちの目標は、単純な HTML ファイルを作成し、コンテナ内でホストし、Nginx Docker コンテナを使用して外部で提供することです。
この設定により、永続的な Web サイト コンテンツをコンテナの外部でホストできるようになります。
この機能を実現するには、Docker のバインド マウント機能を使用します。 バインド マウントを使用すると、ホストマシン上のファイルまたはディレクトリがコンテナにマウントされます。
したがって、まずホーム ディレクトリ内に Web サイト コンテンツ用の新しいディレクトリを作成しましょう。
mkdir ~/www
次に、単純な HTML ファイルを作成し、インデックス ページにテキストを追加しましょう。
vim ~/www/index.html
<html>
<head>
<title>Nginx Docker</title>
</head>
<body>
<h1>My static page.</h1>
</body>
</html>
上記のスニペットをコピーして中に貼り付けてください。次に、ファイルを保存して Vim を終了します。
次に、コンテナ /usr/share/nginx/html
上のボリュームが接続された Nginx Docker コンテナを、ホスト www
ディレクトリ上で実行します。 >index.html ファイルが保存されます。
docker run -d -p 80:80 -v ~/www:/usr/share/nginx/html/ --name my-nginx-server nginx
Nginx コンテナは、デフォルトで /usr/share/nginx/html/
にあるインデックス ページを検索するように設定されています。上記のコマンドでは、-v
オプションにより、Nginx Docker 内から /
ディレクトリにコピーします。usr/share/nginx/html/
ディレクトリをリンクするバインド マウント ボリュームが設定されます。コンテナをホスト マシンの ~/www
Docker はコロン記号 (:
) を使用して、ホストのパスをコンテナのパスから分割します。ホスト パスが常に最初に来ることに注意してください。
もう一度、http://192.168.122.101
を参照すると、ブラウザ ウィンドウに次の出力が表示されます。
以上です。これで、カスタム Web ページを提供する Nginx Docker コンテナが実行されました。
結論
Nginx と Docker は非常にうまく連携します。このチュートリアルでは、Nginx Docker コンテナーをセットアップして使用する方法を説明しました。また、コンテナとホスト ファイル システムの間で情報を共有する方法についても理解します。
ご質問がある場合は、コメントを残してください。