このファイルは Docker イメージ ファイルによってバインドされていません。変更したり、コンテナーを再起動したり、ファイルを更新したりできます。イメージでは復元されません
コンテナの実行中に記録されたログやその他の情報などのファイルは、外部ストレージに自動的に保存され、失われることはありませんコンテナを再起動するため
├── build.sh ├── docker-compose.yml ├── Dockerfile ├── mynginx.conf ├── nginx-vol │ ├── conf.d │ │ └── mynginx.conf │ ├── html │ │ └── index.html │ └── logs │ ├── access.log │ └── error.log └── run.sh
FROM nginx LABEL maintainer="xxx" email="<xxx@xxx.com>" app="nginx test" version="v1.0" ENV WEBDIR="/data/web/html" RUN mkdir -p ${WEBDIR} EXPOSE 5180Based on nginx の場合、新しいデータ ファイル パスを /data/web/html として指定し、公開ポートは 5180 です。 次のコマンドを使用して新しいイメージをコンパイルします:
docker build -t nginx:test-v1 .
docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx test-v1 d2a0eaea3fac 56 minutes ago 141MB nginx latest 605c77e624dd 9 days ago 141MBTAG はテストです。v1 イメージはコンパイルされたばかりの新しいイメージです。 nginx 外部ボリューム nginx-vol と関連する conf.d、logs、html フォルダーを作成し、対応するコンテンツを対応するディレクトリに配置します。たとえば、html フォルダー内の iindex.html の内容は次のとおりです。
<html> <head> <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> <title>系统时间</title> <body> <div id="datetime"> <script> setInterval("document.getElementById('datetime').innerHTML=new Date().toLocaleString();",1000); </script> </div> </body> </head> </html>は、実際には現在時刻を表示する単なるページです。 ログ セクションは空です。コンテナの実行中にログを外部ストレージに書き込むことが目的です。コンテナが停止したり、イメージが破壊された場合でも、実行ログは保持されます。以下の conf.d は nginx の個人用設定で、内容は次のとおりです:
server { listen 5180; #listen [::]:5180; server_name localhost; #access_log /var/log/nginx/host.access.log main; location / { root /data/web/html; index index.html index.htm; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; # proxy the PHP scripts to Apache listening on 127.0.0.1:80 #location ~ \.php$ { # proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # root html; # fastcgi_pass 127.0.0.1:9000; # fastcgi_index index.php; # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; # include fastcgi_params; # deny access to .htaccess files, if Apache's document root # concurs with nginx's one #location ~ /\.ht { # deny all; }実際、ポートとルート パスは nginx のデフォルトの default.conf に基づいて変更されます。目的は次のとおりです。 nginx の図解 構成ファイルは外部に保存することもできます。独自のプログラムで構成ファイルを変更できる場合、この方法でコンテナの実行中に構成ファイルを変更できます。変更された構成ファイルは実際には外部ストレージに保存されます。コンテナーの実行が停止すると消え、イメージ内のファイルには復元されません。 docker run モード便宜上、実行コマンドを run.sh などのシェル スクリプトに書き込むことができます。内容は次のとおりです。
docker run --name nginx-v1 -p 15180:5180 -v /home/project/nginx-test/nginx-vol/logs:/var/log/nginx -v /home/project/nginx-test/nginx-vol/conf.d:/etc/nginx/conf.d -v /home/project/nginx-test/nginx-vol/html:/data/web/html -d nginx:test-v1コマンドに 3 があることを確認してください。各 -v は異なる外部ストレージ マウントに対応し、コンテナ内の異なるディレクトリにマップされます。 -p の後のポート (小文字であることに注意してください) は、それぞれホスト ポートとコンテナ ポートです。つまり、ホストのポート 15180 はコンテナのポート 5180 にマッピングされるため、nginx サービス ポート 5180コンテナによって開始されたホストには、ホストのポート 15180 がマッピングされています。 実行中のコンテナの表示:
docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES cf2275da5130 nginx:test-v1 "/docker-entrypoint.…" 6 seconds ago Up 5 seconds 80/tcp, 0.0.0.0:15180->5180/tcp, :::15180->5180/tcp nginx-v1詳細なマッピング ビュー:
docker inspect nginx-v1完全な情報が表示され、完全なストレージ マウント マッピングが「マウント」セクションで確認できます。状態。 ホストの nginx-vol/logs の直下を確認すると、コンテナ内の nginx 実行ログが外部ホストのストレージに自動的に書き込まれていることがわかります。
ls -l nginx-vol/logs/ total 12 -rw-r--r-- 1 root root 1397 1月 8 15:08 access.log -rw-r--r-- 1 root root 4255 1月 8 15:59 error.logコンテナの停止:
docker stop nginx-v1コンテナの削除:
docker rm nginx-v1docker-compose modedocker-compose のインストール
apt-get install docker-composedocker の書き込み-compose.yml file
version: "3" services: nginx: container_name: mynginx image: nginx:test-v1 ports: - 80:5180 volumes: - ./nginx-vol/html:/data/web/html - ./nginx-vol/logs:/var/log/nginx - ./nginx-vol/conf.d:/etc/nginx/conf.d restart: alwayscontainer_name: コンテナ名を指定しますimage: 使用するイメージと対応するラベルports: ホスト ポートとコンテナ ポートのマッピング
ボリューム: 外部ストレージ マウント マッピングコンテナの開始
docker-compose up -d Creating network "nginxtest_default" with the default driver Creating mynginx ... Creating mynginx ... doneコンテナの表示
docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 635e2999c825 nginx:test-v1 "/docker-entrypoint.…" 24 seconds ago Up 22 seconds 80/tcp, 0.0.0.0:80->5180/tcp, :::80->5180/tcp mynginxコンテナが docker に従って実行されていることがわかります。 compose.yml の設定、ポート、名前、マウントはすべて正常です。ホストのポート 80 へのアクセスは、コンテナーの 5180 サービスに対応します。 コンテナを停止します
docker-compose down Stopping mynginx ... done Removing mynginx ... done Removing network nginxtest_defaultご覧のとおり、docker-compose を使用する方が簡単です。
以上がDocker に nginx プラグイン ファイルをインストールする方法は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。