我用以下內容啟動了一個 docker 容器:
cd /root
docker run -it -d --privileged=true --name nginx nginx
rm -fr dockerdata
mkdir dockerdata
cd dockerdata
mkdir nginx
cd nginx
docker cp nginx:/usr/share/nginx/html .
docker cp nginx:/etc/nginx/nginx.conf .
docker cp nginx:/etc/nginx/conf.d ./conf
docker cp nginx:/var/log/nginx ./logs
docker rm -f nginx
cd /root
docker run -it -d -p 8020:80 --privileged=true --name nginx \
-v /root/dockerdata/nginx/html:/usr/share/nginx/html \
-v /root/dockerdata/nginx/nginx.conf:/etc/nginx/nginx.conf \
-v /root/dockerdata/nginx/conf:/etc/nginx/conf.d \
-v /root/dockerdata/nginx/logs:/var/log/nginx \
nginx
“docker 檢查 nginx” 如下
HostConfig 系結
系結的目錄可以同步,但是直接系結的檔案比如“nginx.conf”是不能同步的。當我修改主機中的“nginx.conf”時,容器中的“nginx.conf”并沒有改變。
我想知道為什么會發生這種情況以及如何在主機和容器之間直接系結單個檔案。##
uj5u.com熱心網友回復:
為什么會這樣
Mount bind 將檔案掛載到 inode。nginx 入口點在https://github.com/nginxinc/docker-nginx/blob/ed42652f987141da65bab235b86a165b2c506cf5/stable/debian/30-tune-worker-processes.sh中執行:
sed -i.bak
sed創建一個新檔案,然后將新檔案移動到舊檔案。檔案的 inode 發生變化,因此不再掛載 inode。
我如何直接系結一個
它是系結的。相反,您應該考慮重新閱讀有關如何將自定義配置傳遞給它的 nginx docker 容器檔案:
-v /host/path/nginx.conf:/etc/nginx/nginx.conf:ro ^^^
在https://github.com/nginxinc/docker-nginx/blob/ed42652f987141da65bab235b86a165b2c506cf5/stable/debian/30-tune-worker-processes.sh#L12跳過 sed 。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/512577.html
標籤:码头工人码头工人卷
上一篇:我正在嘗試使用dockercompose檔案保持容器運行。我添加了tty:true和std_in:true但它仍然以代碼0退出
