代码之家  ›  专栏  ›  技术社区  ›  user8116198

Docker |装载卷导致错误

  •  0
  • user8116198  · 技术社区  · 6 年前

    我试图建立一个Docker swarm,将我的3台服务器连接在一起。swarm正在设置并转到URL,我得到了相同的结果,这是完美的,正是我所需要的。

    然而,对于我现在正在使用的服务器,我正在每台服务器上生成一个全局nginx,以实现负载平衡。

    服务器上会有多个配置文件,我需要这些文件才能将域映射到正确的文件夹,这是我一直坚持/不为我工作的部分。

    我有一个非常简单的 docker-compose.yml 由于为了调试这个问题,我缩小了它,它包括以下内容。。。

    version: '3'
      services:
        nginx:
          image: nginx:latest
        volumes:
          - /var/www/nginx/config/:/etc/nginx/conf.d/:ro
        deploy:
          mode: global
    

    卷返回时出错 "invalid mount config for type "bind": bind source path does not exist" 所以很明显,当我去掉体积线时,它工作得很好,但是我百分之百需要这条线。

    我可以在服务器内部完美地导航到 /var/www/nginx/config/ 中存在我的配置文件。如果我跑的话,另一个也一样 docker exec -it <container> /bin/bash 并导航到 /etc/nginx/conf.d 我可以很好地到达那里,这就是为什么我在这里发帖。

    我看了其他帖子,做了其他人所说的事情,比如

    • 向卷中添加引号
    • 删除文件末尾的斜杠
    • 重新启动服务器
    • 重新启动Docker

    但似乎什么都不管用

    1 回复  |  直到 6 年前
        1
  •  0
  •   Manish Joshi    6 年前

    潜在的问题可能是并非swarm集群中的所有节点都有该目录( /var/www/nginx/config/ )已创建。由于在swarm中,服务可以放置在任何可用节点中(除非您设置了约束),因此您可能会看到此错误。

    确保已在所有3个节点中创建此目录。

    此外,您还可以看看 here 用于定义配置。