Обновление Docker
Одна из самых частых и важных операций в IT – это своевременное обновление программного обеспечения. Обновление Docker не исключение.
Узнать актуальную версию установленного на физическом или виртуальном сервере Docker можно при помощи команды
$ docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
builder.avmaksimov.ru - generic Running tcp://81.23.10.76:2376 v1.12.3
default - virtualbox Running tcp://192.168.99.100:2376 v1.12.1
manager-1.avmaksimov.ru - generic Running tcp://185.12.28.58:2376 v1.12.3
manager-2.avmaksimov.ru - generic Running tcp://185.12.28.7:2376 v1.12.3
manager-3.avmaksimov.ru - generic Running tcp://185.12.28.39:2376 v1.12.3
node-1.avmaksimov.ru - generic Running tcp://81.23.10.217:2376 v1.12.3
node-2.avmaksimov.ru - generic Running tcp://185.12.28.80:2376 v1.12.3
node-3.avmaksimov.ru - generic Running tcp://185.12.29.107:2376 v1.12.3
vpn.avmaksimov.ru * digitalocean Running tcp://45.55.235.195:2376 v1.12.4
Как видно из вывода команды самая новая версия Docker установлена на моей виртуальной машине, находящейся в Облаке DigitalOcean (v1.12.4). В K2 Cloud у меня развернут Swarm кластер на версии Docker v1.12.3. И самая старая версия Docker установлена на моем ноутбуке в VirtualBox-е (v1.12.1). Именно ее мы сейчас и обновим.
Важно! Помните о том, что при обновлении Docker происходит перезагрузка сервиса Docker управляющего всеми запущенными на вашем хосте контейнерами. При этом все контейнеры на обновляемом хосте будут остановлены и перезапущены автоматически только в том случае, если у них настроена политика автоматической перезагрузки. Проверить политику автоматической перезагрузки можно при помощи команды
$ docker inspect -f {{ .HostConfig.RestartPolicy.Name }} 'ID вашего контейнера';
Установить политику перезагрузки контейнера можно при помощи команды
$ docker update --restart=always 'ID вашего контейнера';
Опция —restart может принимать следующие значения:
- no — перезапуск контейнера производиться не будет
- on-failure[:max-retries] — перезапуск контейнера будет происходить max-retries раз в случае любого сбоя
- always — перезапуск контейнера будет происходить всегда
- unless-stopped — перезапуск контейнера будет происходить всегда до тех пор, пока вы явно не остановите контейнер
$ docker-machine upgrade default
Waiting for SSH to be available...
Detecting the provisioner...
Upgrading docker...
Stopping machine to do the upgrade...
Upgrading machine "default"...
Default Boot2Docker ISO is out-of-date, downloading the latest release...
Latest release for github.com/boot2docker/boot2docker is v1.12.4
Downloading /Users/amaksimov/.docker/machine/cache/boot2docker.iso from https://github.com/boot2docker/boot2docker/releases/download/v1.12.4/boot2docker.iso.
0%....10%....20%....30%....40%....50%....60%....70%....80%....90%....100%
Copying /Users/amaksimov/.docker/machine/cache/boot2docker.iso to /Users/amaksimov/.docker/machine/machines/default/boot2docker.iso...
Starting machine back up...
(default) Check network to re-create if needed...
(default) Waiting for an IP...
Restarting docker...