docker nginxコンテナの起動とローカルへのマウントの詳細な説明

docker nginxコンテナの起動とローカルへのマウントの詳細な説明

まず、nginx コンテナ内の構造:

コンテナを入力します:

docker exec -it b511b6049f57 バッシュ

コンテナ構造ディレクトリを表示します。実際、各コンテナは独立したシステムに相当します。

ルート@b511b6049f57:/# ls
bin dev home lib64 mnt proc run srv tmp var
boot etc lib media opt root sbin sys usr

nginx の構造ディレクトリはコンテナ内にあります:

  • ログの場所: /var/log/nginx/
  • 設定ファイルの場所: /etc/nginx/
  • プロジェクトの場所: /usr/share/nginx/html

ローカルに場所を追加する場合は、次のコンテナー内の構成をローカルにマウントする必要があります。

設定ファイルは比較的面倒です。通常、nginx は nginx.conf をロードするだけで済みます。dokcer では、まず nginx.conf がロードされ、次に nginx.conf に include /etc/nginx/conf.d/*.conf; という行があり、conf.d ディレクトリにある設定ファイルがロードされます。したがって、設定では、conf.d にマウントして上書きするだけです。

対応するフォルダーとメイン構成ファイル nginx.conf をローカルに作成します。

mkdir -p /home/test/nginx/{log,conf,html}
nginx.conf をタッチする

nginx.conf にはサブ設定ファイル (最後の行) が含まれています。

ユーザー nginx;

ワーカープロセス 1;

error_log /var/log/nginx/error.log 警告;
pid /var/run/nginx.pid;


イベント {
  ワーカー接続 1024;
}


http {
  /etc/nginx/mime.types を含めます。
  デフォルトタイプ アプリケーション/オクテットストリーム;

  log_format main '"$remote_addr" "$http_host" "[$time_local]" "$request" "$status" "$body_bytes_sent" '
          '"$bytes_sent" "$gzip_ratio" "$http_referer" "$http_user_agent" "$http_x_forwarded_for" '
          '"$upstream_addr" "$upstream_response_time" "$request_time" "$request_body" "$http_authorization" ';
  access_log /var/log/nginx/access.log メイン;

  ファイル送信オン;
  #tcp_nopush オン;

  キープアライブタイムアウト65;

  #gzip オン;

  /etc/nginx/conf.d/*.conf を含めます。
}

conf の下に default.conf を作成します。

サーバー{

  聞く 80;
  server_name ローカルホスト;

  #文字セット koi8-r;
  access_log /var/log/nginx/log/host.access.log メイン;

  位置 / {
    #root /data/nginx/html;
    ルート /usr/share/nginx/html;
    インデックス index.html index.htm;
    #自動インデックスオン;
  #try_files $uri /index/index/page.html;
    #try_files $uri /index/map/page.html;
  }

  #エラーページ 404 /404.html;

  # サーバーのエラーページを静的ページ /50x.html にリダイレクトします
  #
  エラーページ 500 502 503 504 /50x.html;
  場所 = /50x.html {
    ルート /usr/share/nginx/html;
  }

  場所 ~ /images {
    デフォルトのタイプは application/json です。
    200 '{"code": "A000000", "message": "ok", "timestamp": "20180307184426", "data": {"isvip": "1", "monthProList": []}}' を返します。
  }

  # PHP スクリプトを 127.0.0.1:80 で listen している Apache にプロキシします
  #
  #場所 ~ \.php$ {
  # プロキシパス http://127.0.0.1;
  #}

  # PHP スクリプトを 127.0.0.1:9000 で待機している FastCGI サーバーに渡します
  #
  #場所 ~ \.php$ {
  #ルートhtml;
  #fastcgi_pass 127.0.0.1:9000;
  # fastcgi_index インデックス.php;
  # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
  #fastcgi_params を含めます。
  #}

  # Apacheのドキュメントルートが.htaccessファイルへのアクセスを拒否する
  # nginxのものと一致します
  #
  #場所 ~ /\.ht {
  # すべて拒否;
  #}
}

上記のローカル ファイルを準備したら、コンテナーを起動し、ローカルの関連構成ファイルにマウントします。

docker run --name docker_nginx -d -p 80:80 \
-v /home/test/nginx/log:/var/log/nginx \
-v /home/test/nginx/conf:/etc/nginx/conf.d \
-v /home/test/nginx/nginx.conf:/etc/nginx/nginx.conf \
-v /home/test/nginx/html:/usr/share/nginx/html nginx

###
  最初の -v: ログディレクトリをマウントします。2番目の -v: 構成ディレクトリをマウントします。3番目の -v: メイン構成ファイルをマウントします。4番目の -v: プロジェクトディレクトリをマウントします。

マウントが完了したら、メイン ページにアクセスします。

次に、前にデフォルトで書き込んだ場所 /images にアクセスします。


nginxを再起動します。

docker exec -it b511b6049f57 nginx -s リロード

これで、docker nginx コンテナをローカルで起動してマウントする方法についての記事は終了です。docker nginx の起動とマウントに関するより関連性の高いコンテンツについては、123WORDPRESS.COM で以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • DockerコンテナにNFS共有ディレクトリをマウントする実装
  • Docker - コンテナマウントディレクトリを変更する3つの方法のまとめ
  • Dockerはローカルディレクトリとデータボリュームコンテナ操作をマウントします
  • dockerログマウントの問題を解決する
  • Dockerはelasticsearchイメージを起動し、ディレクトリをマウントした後にエラーを解決します
  • Windows ホストと Docker コンテナに共有フォルダを設定してマウントする手順
  • Dockerはnginxをデプロイし、フォルダとファイル操作をマウントします
  • docker run で ./ 相対パスを使用してファイルまたはディレクトリをマウントできない問題を解決する

<<:  MySQL ストレージエンジンの簡単な紹介

>>:  JavaScript は、シンプルな虫眼鏡の最も完全なコード分析を実装します (ES5)

推薦する

MySQL FAQ シリーズ: 一時テーブルを使用する場合

一時テーブルの概要一時テーブルとは: MySQL は中間結果セットを保存するために使用されます。一時...

Jsonフォーマットの詳細な説明

目次JSON は次の 2 つの構造に基づいて構築されます。 2. JSON形式1. オブジェクト2....

CSSポジションの5つの異なる値の使い方の詳細な説明

位置プロパティposition プロパティは、要素に使用する配置方法のタイプ (静的、相対的、固定、...

Windows Server 2008R2 ファイル サーバーを Windows Server 2016 にアップグレードする

ユーザー組織には、ドメインに参加している 2 台の Windows Server 2008 R2 フ...

IP アドレス経由で MySql にアクセスする方法

1. mysqlにログインします。 mysql -u ルート -h 127.0.0.1 -p 2. ...

MySQLのトランザクション管理操作の詳細な説明

この記事では、MySQL のトランザクション管理操作について説明します。ご参考までに、詳細は以下の通...

CentOS8でのDockerの使い方の詳しい説明

1. CentOS8でのDockerのインストール カール https://download.doc...

VMware マルチノード環境を構成する方法

このチュートリアルでは CentOS 7 64 ビットを使用します。各仮想マシンに 2GB のメモリ...

MySQLクラスタのDockerデプロイメントの実装

シングルノードデータベースの欠点大規模なインターネットプログラムはユーザーベースが大きいため、アーキ...

Dockerfileを使用してApacheイメージを作成する方法

目次1. Dockerイメージ2. 既存のイメージに基づいてインスタンスを作成する3. ローカルテン...

HTML 言語百科事典

123WordPress.com-HTML noscriptオブジェクトolオプションPパラントプレ...

Vue のプラグインとコンポーネントの違いと使い方のまとめ

このチュートリアルの動作環境: Windows 7 システム、vue 2.9.6 バージョン、DEL...

Reactイベントバインディングの詳細な説明

1. 何ですかreactアプリケーションでは、イベント名はキャメルケース形式で記述されます。たとえ...

カルーセル効果を書くためのjs

この記事では、カルーセルマップの効果を実現するためのjsの具体的なコードを参考までに共有します。具体...

MySQLでカーソルを宣言する方法

MySQL でカーソルを宣言する方法: 1. 変数とカーソルを宣言する 結果をvarchar(300...