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)

推薦する

Nginxはhttpとhttpsの両方のアクセスをサポートするために同じドメイン名を設定します

Nginx は同じドメイン名で構成されており、http と https の両方でアクセスできます。証...

HTMLの基礎 HTMLの構造

HTML ファイルとは何ですか? HTML は Hyper Text Markup Language...

JavaScriptのスリープ関数の使用

目次1.スリープ機能2.タイムアウトを設定する3. 約束4. 非同期待機5. 1秒後に出力1、2秒後...

MySQL デュアルマシン ホットスタンバイ実装ソリューション [テスト可能]

目次1. コンセプト2. 環境の説明3. マスタースレーブホットスタンバイ実装1. コンセプト1. ...

SQLベースのクエリステートメント

目次1. 基本的なSELECT文1. 指定されたフィールドをクエリする3. エイリアスを設定する4....

MySQL のフィールドにデフォルトの時間を追加する方法

日付型の違いと用途MySQL には、日付、時刻、年、日付時刻、タイムスタンプの 5 つの日付タイプが...

Linux サーバーで MySQL リモート接続を有効にする方法

序文以前の非MKレコードを再編成するためのMySQLの学習説明する有効になっていない場合、データベー...

JavaScript を使用した数独の完全な実装プロセス

目次序文数独の解き方最初のボックスに記入してください2番目のボックスに記入してください3番目のボック...

JavaScript デザインパターン プロキシパターンの学習

目次概要実装保護エージェント仮想エージェント画像の遅延読み込みを実現する仮想プロキシ概要プロキシ パ...

CSS の :focus-within の楽しさについて簡単に説明します

Bステーションでパスワードを入力するときに目を覆っているこの画像を見たことがある人もいると思いますこ...

IIS7 IIS8 http は自動的に HTTPS にジャンプします (ポート 80 はポート 443 にジャンプします)

IIS7 では、「URL REWRITE2」疑似静的モジュールがインストールされているかどうかを確...

Vue3とElectronを使ったデスクトップアプリケーションの詳しい説明

目次Vue CLIはVueプロジェクトを構築しますVue プロジェクトをマークダウン エディターに変...

VMware での Ubuntu Docker のインストール (コンテナ構築)

1. マインドマップ 2. コンテナの構築方法2.1 実験環境の準備(1)環境選択管理ツール: D...

MySQL の general_log ログの知識ポイントの紹介

以下の操作デモンストレーションはすべて MySQL バージョン 5.6.36 に基づいています。仕事...