GNU/Linux >> Linux の 問題 >  >> Panels >> Docker

DockerコンテナでNginxを実行する方法:ステップバイステップガイド

このチュートリアルでは、NginxをDockerコンテナとして実行し、ローカルネットワークに公開する方法を学習します。

さらに、コンテナとホストファイルシステム間で情報を共有するためのDockerデータボリュームを作成する方法を学習します。

Nginxは、Webサービス、リバースプロキシ、キャッシング、負荷分散などに使用される人気のあるオープンソースソフトウェアです。非常に人気があり、今日の多くのトラフィックの多いWebサイトで使用されています。 Dockerの最も一般的なワークロードの1つは、Dockerを使用してWebサーバーをコンテナー化することです。 Nginxで設定する方法を紹介します。それでは、プロセスをご案内します。

Dockerは、アプリケーションを1つの管理しやすいコンテナイメージにパッケージ化するコンテナ化プラットフォームです。

前提条件

このチュートリアルを完了するには、次の要件を満たす必要があります。

  1. Dockerがインストールされ、システム上でローカルに実行されている必要があります。
  2. 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 オプションは、/usr/share/nginx/html/をリンクするバインドマウントボリュームを設定します Nginx Dockerコンテナ内から~/wwwへのディレクトリ ホストマシン上のディレクトリ。

Dockerはコロン記号を使用します(: )ホストのパスをコンテナパスから分割します。ホストパスが常に最初に来ることを忘れないでください。

繰り返しますが、http://192.168.122.101を閲覧すると 、ブラウザウィンドウに以下の出力が表示されます。

以上です。これで、カスタムWebページを提供する実行中のNginxDockerコンテナができました。

結論

NginxとDockerは非常にうまく連携します。このチュートリアルでは、NginxDockerコンテナを設定して使用する方法を示しました。コンテナとホストファイルシステムの間で情報を共有する方法も知っています。

ご不明な点がございましたら、コメントを残してください。


Docker
  1. DockerコンテナでMySQLを実行する方法:シンプルでわかりやすいガイド

  2. openSUSEにNGINXをインストールする-ステップバイステップガイド?

  3. LinodeにDockerを使用してnginxコンテナをデプロイする方法

  1. Dockerの概要

  2. 実行中のDockerコンテナでコマンドを実行する方法

  3. 「13:許可が拒否されました」が原因で NGINX Docker を実行できません

  1. Dockerコンテナ内でプログラムを実行する方法は?

  2. DockerコンテナでMySQLを実行する方法

  3. Dockerの実行と開始と作成:違いの説明