このチュートリアルでは、NginxをDockerコンテナとして実行し、ローカルネットワークに公開する方法を学習します。
さらに、コンテナとホストファイルシステム間で情報を共有するためのDockerデータボリュームを作成する方法を学習します。
Nginxは、Webサービス、リバースプロキシ、キャッシング、負荷分散などに使用される人気のあるオープンソースソフトウェアです。非常に人気があり、今日の多くのトラフィックの多いWebサイトで使用されています。 Dockerの最も一般的なワークロードの1つは、Dockerを使用してWebサーバーをコンテナー化することです。 Nginxで設定する方法を紹介します。それでは、プロセスをご案内します。
Dockerは、アプリケーションを1つの管理しやすいコンテナイメージにパッケージ化するコンテナ化プラットフォームです。
このチュートリアルを完了するには、次の要件を満たす必要があります。
- Dockerがインストールされ、システム上でローカルに実行されている必要があります。
- rootアカウントが必要です。そうでない場合、ユーザーはsudoコマンドを実行できます。
Docker内でのNginxのセットアップ
まず、公式のNginxイメージを取得します。ターミナルで次のDockerpullコマンドを実行して、DockerホストのDockerハブからNginxの最新のイメージをダウンロードします。
sudo docker pull nginx
NginxDockerコンテナを実行する
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
。 NginxWebサーバーのデフォルトページが表示されます。
そこにそれがある。 NginxDockerコンテナの作業インスタンスがあります。
Dockerコンテナを一覧表示する
実行中のすべてのDockerコンテナを一覧表示するには、次のコマンドを実行します。
sudo docker container ls
上記の出力に基づいて、次の2つのいずれかでNginxDockerコンテナを停止できます。
sudo docker stop 19411f8b3f35
sudo docker stop my-nginx-server
実行されていないコンテナも含め、すべてのコンテナを表示するには、-a
を追加する必要があります フラグ。
sudo docker container ls -a
NginxDockerコンテナとホスト間でのデータの共有
Dockerコンテナは一時的なものです。 デフォルトでは、コンテナ内で作成されたデータは、コンテナ内からのみ、コンテナの実行中にのみ利用できます。
それでは、コンテナ内のデータをホストマシンでアクセスできるようにする方法を紹介しましょう。私たちの目標は、単純なHTMLファイルを作成し、それをコンテナー内でホストし、NginxDockerコンテナーを使用して外部で提供することです。
この設定により、永続的な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
にボリュームがアタッチされたNginxDockerコンテナを実行します ホストの現在まで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ページを提供する実行中のNginxDockerコンテナができました。
NginxとDockerは非常にうまく連携します。このチュートリアルでは、NginxDockerコンテナを設定して使用する方法を示しました。コンテナとホストファイルシステムの間で情報を共有する方法も知っています。
ご不明な点がございましたら、コメントを残してください。