当我重新启动docker守护程序时,如何在docker服务中复制容器?

时间:2018-04-03 01:40:21

标签: docker percona-xtradb-cluster

我使用以下命令为图像 percona XtraDB集群创建了具有3个副本的docker服务

docker service create \
--name mysql-galera \
--replicas 3 \
-p 3306:3306 \
--network mynet \
--env MYSQL_ROOT_PASSWORD=mypassword \
--env DISCOVERY_SERVICE=10.0.0.2:2379 \
--env XTRABACKUP_PASSWORD=mypassword \
--env CLUSTER_NAME=galera \
perconalab/percona-xtradb-cluster:5.6

我已经使用三台机器(以mach1,mach2,mach3命名)初始化了docker swarm,并且所有机器都作为管理器加入。并且副本平均分配给三台机器中的每一台

当我尝试在 mach2 中停止docker守护程序时,docker在 mach3 中再创建了一个副本容器。我再次重启了docker守护进程, mach3 仍在运行两个副本,而 mach2 则没有。我在 mach3 中手动删除了容器, mach2 在第3个副本中取出

如何在重新启动的docker机器上自动复制容器?

2 个答案:

答案 0 :(得分:1)

我不认为Docker服务重新平衡选项在docker swarm中可用.....你可以通过使用--force选项更新服务来重新分发容器

docker service update mysql-galera --force

答案 1 :(得分:0)

您正在寻找的是根据具有容量的主/从节点的可用性自动重新平衡您的复制集的方法。然而,这样做将涉及杀死健康的容器并重新安排它们。

docker swarm中有一个未解决的问题 https://github.com/moby/moby/issues/24103

现在,如果你想这样做,最好的方法似乎是向上/向下或创建一个试图重新安排群中容器的推出。