Docker:在本地使用swarm

时间:2019-07-30 18:00:29

标签: docker docker-swarm

Docker新人在这里。

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

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 个答案:

答案 0 :(得分:1)

不建议在docker swarn中使用bind-mount,因为您可以阅读in the doc。特别是:

  

重要提示:绑定安装很有用,但也会引起问题。在大多数情况下,建议您对应用程序进行架构设计,以免从主机挂载路径。

但是,如果仍然要使用bind-mount,则有两种可能性:

  1. 确保您的文件夹存在于所有节点上。这里的主要问题是您必须在每个节点上每次都更新它。
  2. 使用共享文件系统(例如$)并将其安装在每个节点上的目录上。但是,既然您具有共享的文件系统,那么就可以使用docker数据卷并更改驱动程序。

您可以找到有关更改卷数据驱动程序here

的一些文档。