部署 docker-compose 到 swarm
Deploy docker-compose to swarm
我有一个 docker-compose.yml 文件,如果我 运行 docker swarm init 我可以:
$ docker stack deploy --compose-file=docker-compose.yml example
一切正常。
我了解到我无法使用 docker stack deploy
部署到我的主机不属于的集群。
所以我启动了几个 Virtualbox 实例:
$ docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
manager - virtualbox Running tcp://192.168.99.102:2376 v17.05.0-ce
worker1 - virtualbox Running tcp://192.168.99.100:2376 v17.05.0-ce
worker2 - virtualbox Running tcp://192.168.99.101:2376 v17.05.0-ce
我已经把工人加入了经理。
$ docker-machine ssh worker1 "docker swarm join --token=${worker_token} --listen-addr $(docker-machine ip worker1) --advertise-addr $(docker-machine ip worker1) $(docker-machine ip manager)"
$ docker-machine ssh worker2 "docker swarm join --token=${worker_token} --listen-addr $(docker-machine ip worker2) --advertise-addr $(docker-machine ip worker2) $(docker-machine ip manager)"
我想知道我的主机是否可以加入 swarm,运行 堆栈部署并离开它?
尝试加入失败。
Error response from daemon: can't initialize raft node: rpc error: code = 2 desc = could not connect to prospective new cluster member using its advertised address: rpc error: code = 4 desc = context deadline exceeded
所以我的问题是,如何将我的 docker-compose 堆栈部署到我不属于的群中?复制文件并 运行 在那里部署堆栈真的是可行的方法吗?
这似乎是我得到的最佳答案:
$ docker-machine scp docker-compose.yml manager:~/
$ docker-machine ssh manager docker stack deploy --compose-file=docker-compose.yml example
另一个不需要您将 docker-compose.yml 复制到管理器的选项是将 docker-compose.yml 文件发送到标准输入上的管理器:
docker-machine ssh manager docker stack deploy -c - example < docker-compose.yml
我在这里提供了一些例子:
我有一个 docker-compose.yml 文件,如果我 运行 docker swarm init 我可以:
$ docker stack deploy --compose-file=docker-compose.yml example
一切正常。
我了解到我无法使用 docker stack deploy
部署到我的主机不属于的集群。
所以我启动了几个 Virtualbox 实例:
$ docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
manager - virtualbox Running tcp://192.168.99.102:2376 v17.05.0-ce
worker1 - virtualbox Running tcp://192.168.99.100:2376 v17.05.0-ce
worker2 - virtualbox Running tcp://192.168.99.101:2376 v17.05.0-ce
我已经把工人加入了经理。
$ docker-machine ssh worker1 "docker swarm join --token=${worker_token} --listen-addr $(docker-machine ip worker1) --advertise-addr $(docker-machine ip worker1) $(docker-machine ip manager)"
$ docker-machine ssh worker2 "docker swarm join --token=${worker_token} --listen-addr $(docker-machine ip worker2) --advertise-addr $(docker-machine ip worker2) $(docker-machine ip manager)"
我想知道我的主机是否可以加入 swarm,运行 堆栈部署并离开它?
尝试加入失败。
Error response from daemon: can't initialize raft node: rpc error: code = 2 desc = could not connect to prospective new cluster member using its advertised address: rpc error: code = 4 desc = context deadline exceeded
所以我的问题是,如何将我的 docker-compose 堆栈部署到我不属于的群中?复制文件并 运行 在那里部署堆栈真的是可行的方法吗?
这似乎是我得到的最佳答案:
$ docker-machine scp docker-compose.yml manager:~/
$ docker-machine ssh manager docker stack deploy --compose-file=docker-compose.yml example
另一个不需要您将 docker-compose.yml 复制到管理器的选项是将 docker-compose.yml 文件发送到标准输入上的管理器:
docker-machine ssh manager docker stack deploy -c - example < docker-compose.yml
我在这里提供了一些例子: