Então, encontrei um jeito:
$ docker-machine ssh swarm-master
swarm-master# curl -fsSL https://test.docker.com/ | sh
swarm-master# docker daemon
Aguarde até que o daemon atualize todas as imagens para o formato 1.10 e, em seguida, deixe-o em execução.
Enquanto isso, em outro shell:
$ docker-machine regenerate-certs swarm-master
(Eu não sei porque temos que fazer isso, mas a última reinicialização falha sem isso)
O comando deve ser concluído, embora com o seguinte aviso:
Copying certs to the local machine directory...
Copying certs to the remote machine...
Setting Docker configuration on the remote daemon...
Unable to verify the Docker daemon is listening: Maximum number of retries (10) exceeded
Então:
$ docker-machine restart swarm-master
$ eval $(docker-machine env --swarm swarm-master)
$ docker-machine ls
Neste ponto, você deve ver o mestre atualizado e em execução:
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
swarm-master * (swarm) digitalocean Running tcp://123.45.67.89:2376 swarm-master (master) v1.10.0-rc2
Repita os mesmos passos (menos o eval
env
) para cada máquina no enxame.
Infelizmente, ainda há um problema:
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
swarm-1 - digitalocean Running tcp://123.45.67.98:2376 swarm-master v1.10.0-rc2
swarm-master * (swarm) digitalocean Running tcp://123.45.67.89:2376 swarm-master (master) v1.10.0-rc2
Parece bom, sim?
Mas:
$ docker info
Containers: 7
Images: 13
Role: primary
Strategy: spread
Filters: health, port, dependency, affinity, constraint
Nodes: 1
swarm-master: 123.45.67.89:2376
└ Status: Healthy
└ Containers: 7
└ Reserved CPUs: 0 / 1
└ Reserved Memory: 0 B / 1.026 GiB
└ Labels: executiondriver=native-0.2, kernelversion=3.16.0-4-amd64, operatingsystem=Debian GNU/Linux 8 (jessie), provider=digitalocean, storagedriver=aufs
CPUs: 1
Total Memory: 1.026 GiB
Name: 0dc444daa840
Apenas um nó reconhecido como parte do enxame: (
Para corrigir isso, vá para o nó do enxame perdido:
$ docker-machine ssh swarm-1
swarm-1# docker run -d swarm join --addr=<node ip>:2376 consul://<consul ip>:8500
docker info
agora deve mostrar que ambos os nós estão no enxame.