首页 文章

部署docker-compose到swarm

提问于
浏览
1

我有一个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

我和 Worker 一起加入了经理 .

$ 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)"

我想知道我的主机是否可以加入群,运行堆栈部署并离开它?

尝试加入失败 .

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堆栈部署到一个我不属于它的swarm?复制文件并运行堆栈部署真的有办法吗?

2 回答

  • 1

    这似乎是我的最佳答案:

    $ docker-machine scp docker-compose.yml manager:~/
    $ docker-machine ssh manager docker stack deploy --compose-file=docker-compose.yml example
    
  • 0

    另一个选项,不要求您将docker-compose.yml复制到管理器,将docker-compose.yml文件发送到stdin上的管理器:

    docker-machine ssh manager docker stack deploy -c - example < docker-compose.yml
    

    我在这里提供了一些例子:How can I remotely connect to docker swarm?

相关问题