我们将从创建一个网络开始。
给Windows用户的说明
你可能会遇到卷不能被正确映射的问题。如果你遇到了Invalid volume specification错误,请设置环境变量COMPOSE_CONVERT_WINDOWS_PATHS为0:export COMPOSE_CONVERT_WINDOWS_PATHS=0
请确保这个变量在你运行docker-compose或者docker stack deploy之前被设置。
代理网络将专门用于代理容器和连接到网络的服务。
现在将使用代码库vfarcic/docker-flow-proxy(https://github.com/vfarcic/ docker-flow-proxy)中的docker-compose-stack.yml(https://github.com/vfarcic/ docker-flow-proxy/blob/master/docker-compose-stack.yml)来创建docker-flow-proxy和docker-flow-swarm-listener服务。
docker-compose-stack.yml文件的内容如下:
格式是按照version 3(docker stack部署要求必须是这个版本)编写的。
它包含proxy和swarm-listener两项服务。既然你已经熟悉了代理,这里不再探讨每个参数的含义。(www.xing528.com)
与以前的Compose版本相比,大多数新参数都在deploy中定义。你可以将该部分视为特定于Swarm的参数的占位符。这种情况下,我们指定代理服务要有两个副本,而swarm-listener服务应该被限定为manager角色。为这两个服务定义的所有其他内容都使用与早期Compose版本相同的格式。
YAML文件的底部是服务中引用的网络列表。如果服务没有指定任何网络,则将自动创建默认网络。来自其他stack的服务要能够与代理进行通信,所以这里选择手动创建网络。我们手动创建一个网络并在YAML文件中将其定义为外部网络。
现在基于之前探讨的YAML文件创建stack:
第一条命令从vfarcic/docker-flow-proxy(https://github.com/vfarcic/docker-flow-proxy)代码库下载了Compose文件docker-compose-stack.yml(https://github.com/vfarcic/docker-flow-proxy/blob/master/docker-compose-stack.yml)。第二个命令创建了构成stack的服务。
通过stack ps命令可以看到堆栈的任务:
输出如下(为简洁起见,删除了ID):
现在正在运行代理的两个副本(在发生故障的情况下具有高可用性)以及swarm-listener的一个副本。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。