我用以下方式启动一个码头集装箱:
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“码头检验公司”如下:
绑定目录可以同步,但直接绑定的文件(如“nginx.conf”)不能同步。当我修改主机中的“nginx.conf”时,容器中的“nginx.conf”不会改变。
我想知道为什么会发生这种情况,以及如何在主机和容器之间直接绑定单个文件。
发布于 2022-10-09 07:10:23
为什么会这样
挂载绑定将文件挂载到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容器文档:
/host/path/nginx.conf:/etc/nginx/nginx.conf:ro ^^ -v ^
https://stackoverflow.com/questions/74002383
复制相似问题