欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

docker 集群中文件挂载的问题

发布时间:2025/6/17 编程问答 11 豆豆
生活随笔 收集整理的这篇文章主要介绍了 docker 集群中文件挂载的问题 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

假如说在一个三节点的集群上执行

 

docker service create --replicas 2 -p 80:80 --name nginx nginx:1.13.7-alpine

然后访问三个节点的任意一个ip都会看到nginx的欢迎界面。nginx的默认index.html路径在/usr/share/nginx/html/index.html

假如说现在要进行文件挂载,也就是文件路径映射。注意几个问题:

  • docker service create 里面的文件映射用的命令是 --mount 而不是 -v什么的
  • 如果源路径是绝对路径要加type=bind
  • 还有一个地方要清楚,集群里面有三台服务器,那么映射到的路径是当前某个节点机器上的路径,意思就是manager节点会选择某些work节点跑某些容器,而那个容器映射的路径会对应到当前的那个node的本地路径上。具体看下面结果:
  • 执行:

    docker service create --replicas 2 -p 80:80 --name nginx --mount type=bind,src=/tmp/index.html,dst=/usr/share/nginx/html/index.html nginx:1.13.7-alpine

    然后分别找到这两个容器都是在哪个节点上启动的。

    docker ps

    找到后,分别登陆到这两个机器上,执行:

    echo '<h1>Hello, Dockerxxx!</h1>' > /tmp/index.html

    echo '<h1>Hello, Dockerbbbbbbbbbbb!</h1>' > /tmp/index.html

    在三个节点上看到的结果是

     

    结果并不是固定的,如果清空缓存的话,在刷新同一个ip是可能有不容结果的,至于是什么结果要看集群负载均衡的时候分配的是哪个容器给你,展示的结果就是当前分配容器所在的node上的/tmp/index.html目录里面的内容,比如下面,用微信打开192.168.0.102和浏览器打开并不一样

     

     

    《新程序员》:云原生和全面数字化实践50位技术专家共同创作,文字、视频、音频交互阅读

    总结

    以上是生活随笔为你收集整理的docker 集群中文件挂载的问题的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。