首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当我使用Docker时,我直接在主机和容器之间绑定一个文件,但是这两个文件不能同步。

当我使用Docker时,我直接在主机和容器之间绑定一个文件,但是这两个文件不能同步。
EN

Stack Overflow用户
提问于 2022-10-09 05:43:29
回答 1查看 32关注 0票数 2

我用以下方式启动一个码头集装箱:

代码语言:javascript
复制
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

“码头检验公司”如下:

HostConfig-Binds

绑定目录可以同步,但直接绑定的文件(如“nginx.conf”)不能同步。当我修改主机中的“nginx.conf”时,容器中的“nginx.conf”不会改变。

我想知道为什么会发生这种情况,以及如何在主机和容器之间直接绑定单个文件。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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://github.com/nginxinc/docker-nginx/blob/ed42652f987141da65bab235b86a165b2c506cf5/stable/debian/30-tune-worker-processes.sh#L12上跳过sed。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74002383

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档