Docker:使用绑定挂载在Swarm本地运行

3

我是一个Docker新手。

我有一个简单的django网站镜像,其中定义了一个用于应用程序目录的卷。 我可以使用以下命令将此卷绑定到实际进行开发的文件夹:

docker container run --rm -p 8000:8000 --mount type=bind,src=$(pwd)/wordcount-project,target=/usr/src/app/wordcount-project wordcount-django

这个工作相当不错。 现在我尝试将这个简单的例子推到一个群集中。请注意,我已经设置了一个本地注册表,以便该镜像可用。 所以要启动我的服务,我会这样做:
docker service create -p 8000:8000 --mount type=bind,source=$(pwd)/wordcount-project,target=/usr/src/app/wordcount-project 127.0.0.1:5000/wordcount-django

经过一些尝试,它将会工作,但仅因为它在本地节点上运行(实际文件夹所在的位置),而不是远程节点(没有 wordcount-project 文件夹的位置)。

有任何想法如何解决这个问题,使得该文件夹对所有节点都可访问,同时仍然可以在本地进行开发?

谢谢!

1个回答

3
在Docker Swarm中使用Bind-mount不被推荐,你可以阅读文档以了解详情。特别是:
重要提示:Bind mounts可能很有用,但也可能会引起问题。在大多数情况下,建议您设计应用程序,使从主机挂载路径不必要。
然而,如果您仍想使用Bind-mount,则有两种可能性:
1. 确保所有节点上都存在您的文件夹。这里的主要问题是您需要每次在每个节点上更新它。 2. 使用共享文件系统(例如sshfs)并将其挂载到每个节点上的目录中。然而,现在您有了共享文件系统,那么您可以只使用Docker数据卷并更改驱动程序。
您可以在这里找到有关更改卷数据驱动程序的一些文档这里

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接