docker-machine
обеспечивает upgrade
команда, однако она обновляется только до последней стабильной версии
Я хочу установить 1.10RC2 на свои докеры, и я не уверен, что делать с этим.
ОБНОВИТЬ
На страница релизов докеров он показывает эту команду:
curl -fsSL https://test.docker.com/ | sh
Я думал, что попробую это. Я ssh'd через docker-machine ssh swarm-master
и запустил его.
Это выглядело многообещающе ... запустив это, похоже, сценарий установки / обновления, он сделал кучу вещей. Потом:
root@swarm-master:~# docker version
Client:
Version: 1.10.0-rc2
API version: 1.22
Go version: go1.5.3
Git commit: c1cdc6e
Built: Wed Jan 27 22:14:06 2016
OS/Arch: linux/amd64
Cannot connect to the Docker daemon. Is the docker daemon running on this host?
Кажется, обновился, но демон не работает.
https://docs.docker.com/engine/articles/systemd/ показывает пару способов. Я попытался:
$ sudo systemctl start docker
и
$ sudo service docker start
В обоих случаях команда возвращается без вывода, но, похоже, ничего не сделала, демон все еще не запущен.
Мой хост - Debian 8.
я могу сделать docker daemon
и он работает на переднем плане ... делая это впервые, он прошел и перенесли все мои изображения... вроде работает нормально, но
Итак, мой вопрос теперь - как правильно (как в: так же, как это сделает докер-машина) запустить демон?
Итак, я нашел способ:
$ docker-machine ssh swarm-master
swarm-master# curl -fsSL https://test.docker.com/ | sh
swarm-master# docker daemon
Подождите, пока демон обновит все изображения до формата 1.10, а затем оставьте его работать.
Между тем в другой оболочке:
$ docker-machine regenerate-certs swarm-master
(Не знаю, зачем нам это делать, но без этого последний перезапуск не удался)
Команда должна завершиться, хотя и со следующим предупреждением:
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
Затем:
$ docker-machine restart swarm-master
$ eval $(docker-machine env --swarm swarm-master)
$ docker-machine ls
На этом этапе вы должны увидеть, что мастер обновлен и работает:
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
Повторите те же шаги (без eval
env
) для каждой машины в рое.
К сожалению, проблема все еще существует:
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
Выглядит хорошо, да?
Но:
$ 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
Только один узел признан частью роя :(
Чтобы исправить это, перейдите к отсутствующему узлу роя:
$ docker-machine ssh swarm-1
swarm-1# docker run -d swarm join --addr=<node ip>:2376 consul://<consul ip>:8500
docker info
должен теперь показать, что оба узла находятся в рое.
Удивлен, что на этот вопрос еще не ответили должным образом, и, возможно, все изменилось, но это очень просто. Я только что провел этот тест на рое с мастером и двумя членами.
Перед:
C:\> docker version
Client:
Version: 17.06.0-ce
API version: 1.29 (downgraded from 1.30)
Go version: go1.8.3
Git commit: 02c1d87
Built: Fri Jun 23 21:30:30 2017
OS/Arch: windows/amd64
Server:
Version: 17.05.0-ce
API version: 1.29 (minimum version 1.12)
Go version: go1.7.5
Git commit: 89658be
Built: Thu May 4 21:43:09 2017
OS/Arch: linux/amd64
Experimental: false
Вот команды по порядку:
C:\> docker-machine upgrade default
Waiting for SSH to be available...
Detecting the provisioner...
Upgrading docker...
Stopping machine to do the upgrade...
Upgrading machine "default"...
Copying I:\Docker\cache\boot2docker.iso to I:\Docker\machines\default\boot2docker.iso...
Starting machine back up...
Restarting docker...
C:\> docker-machine upgrade swarmnode02
Waiting for SSH to be available...
Detecting the provisioner...
Upgrading docker...
Stopping machine to do the upgrade...
Upgrading machine "swarmnode02"...
Copying I:\Docker\cache\boot2docker.iso to I:\Docker\machines\swarmnode02\boot2docker.iso...
Starting machine back up...
Restarting docker...
C:\> docker-machine upgrade swarmnode03
Waiting for SSH to be available...
Detecting the provisioner...
Upgrading docker...
Stopping machine to do the upgrade...
Upgrading machine "swarmnode03"...
Copying I:\Docker\cache\boot2docker.iso to I:\Docker\machines\swarmnode03\boot2docker.iso...
Starting machine back up...
Restarting docker...
После:
C:\> docker version
Client:
Version: 17.06.0-ce
API version: 1.30
Go version: go1.8.3
Git commit: 02c1d87
Built: Fri Jun 23 21:30:30 2017
OS/Arch: windows/amd64
Server:
Version: 17.06.1-ce
API version: 1.30 (minimum version 1.12)
Go version: go1.8.3
Git commit: 874a737
Built: Thu Aug 17 22:54:55 2017
OS/Arch: linux/amd64
Experimental: false
C:\> docker-machine ls
NAME ACTIVE DRIVER STATE URL SWAR
M DOCKER ERRORS
default * vmwareworkstation Running tcp://192.168.200.132:2376
v17.06.1-ce
swarmnode02 - vmwareworkstation Running tcp://192.168.200.133:2376
v17.06.1-ce
swarmnode03 - vmwareworkstation Running tcp://192.168.200.134:2376
v17.06.1-ce