[英]How to use Docker Compose with legacy Docker Swarm
我正在尝试使用Compose
和Swarm
部署我的应用程序。 目前,我不想将docker-compose.yaml
从v2
升级到v3
。 因此,我只能使用standalone(legacy) swarm
而不是基于Stoneman的答案和官方Swarm文档的docker swarm mode
来做到这一点。
按照官方指示 ,我成功地建立了群集集群。 我在swarm manager
节点上运行了docker -H :4000 info
来检查swarm集群的状态,如下所示。 该集群中还有两个其他工作节点。 接下来,我想使用该集群create
一个覆盖网络,并在docker-compose.yaml
引用该网络。 但是,当我在群集管理器节点上运行docker -H :4000 network create -d overlay test
以创建netwrok时,它报告了错误: Error response from daemon: Error response from daemon: This node is not a swarm manager. Use "docker swarm init" or "docker swarm join" to connect this node to swarm and try again.
Error response from daemon: Error response from daemon: This node is not a swarm manager. Use "docker swarm init" or "docker swarm join" to connect this node to swarm and try again.
那么,如何创建具有群集集群的网络(没有docker-machine
和virtual box
)? 当前,群集管理器和工作程序节点正在作为docker容器运行。
您是否首先使用自己的etcd后端设置了覆盖网络? https://docs.docker.com/network/overlay-standalone.swarm/
Swarm“经典”已弃用,并由docker swarm模式取代。 包括设置叠加层在内,一切都变得更困难。 除非您有严格的要求,否则我建议您不要将它用于任何新事物。
在群集模式下,您可以在群集管理器主机上运行所有命令。 与创建网络,机密等相同。您可以通过以下方式找到Docker管理器计算机:$ docker node ls管理器主机已标记为MANAGER STATUS:Leader。 在管理器上创建网络后,该群集上的所有节点都应看到该网络。
“我运行了docker -H:4000网络创建-d覆盖测试”最好在yml文件堆栈中声明网络,以便更快,更轻松地进行部署。 您可以创建网络并在yml文件中公开端口,而无需在每次运行堆栈时手动创建它们。 在docker服务下添加以下代码块:
services:
...
#Network
networks:
- network-name-here
...
#Exposed ports:
ports:
- target: 4000
published: 4000
在yml文件的末尾添加以下块以声明网络,因此每次运行$ docker stack deploy时都会创建该网络:
networks:
network-name-here:
driver: overlay
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.