2016-06-11 4 views
2

У меня есть вопрос здесь с Ubuntu 14.04Предотвращение повторного запуска Docker-Engine во время склонного-получить обновление

Всякий раз, когда я делаю APT-получить обновление, если докер-двигатель имеет право на обновление, он перезапускает службу после модернизация. Это приведет к перезапуску контейнеров.

Один из контейнеров - это тот, который требует ручного вмешательства во время запуска, другие собирают критически важные для времени данные, так что перезапуск контейнеров требуется только в очень определенное время.

Как я могу исключить сервис док-двигателей из этих автоматических перезапусков?

AFAIK, mongodb, например, не перезапускает mongod после обновления apt-get, почему он не может вести себя так же?

ответ

3

Я не совсем уверен, что делает mongodb, но я уверен, что он перезапускает себя при обновлении.

Проблема с Докер-двигателем не то, что он не перезагрузится, он на самом деле делает, что вы можете проверить, выполнив следующую команду после обновления:

sudo service docker status 

Это просто, что это не перезапустите запущенные контейнеры. Я не знаю, почему это должно быть так, потому что теоретически можно было бы вернуть запущенные контейнеры, если служба перезагружена, но по какой-то причине она этого не делает.

Существует два способа обхода этой проблемы.

Первый и простой способ исключить обновление докер-движка и выполнить обновление вручную, если увидите, что оно доступно.

sudo apt-mark hold docker-engine 
sudo apt-get upgrade 

Вы должны увидеть уведомление, если было обновление и если обновление было утаил

... 
The following packages were kept back: 
docker-engine 
... 

Если у вас есть контейнеры, которые вы не можете себе позволить, чтобы перезапустить при обновлении, вы должны идти по этому пути.

Если, однако, вы можете позволить себе перезапустить их, вы можете использовать второй подход. Вы можете установить политику перезапуска при запуске контейнеров, например, так:

sudo docker run --restart=always -d image-name 

Таким образом, когда докер-двигатель перезапускается, контейнер начал с ним. Это означает, что при обновлении контейнер запускается таким образом, который запускается автоматически.

+0

О, ладно, я забыл о проблеме с перезапуском, потому что после этого я завершал все вручную до обновления, а затем выполнял перезагрузку, которая запускает скрипт, который запускает все контейнеры. Я думаю, что это «sudo apt-mark docker-machine hold», который я хочу. Это докер-машина или докер-двигатель? –

+0

@ DanielF Это докер-двигатель, исправил его. – khattam

1

Это дизайн сценариев предварительной установки, которые входят в пакет deb, и решение того, кто строит пакет (хотя, вытаскивая последнюю версию jessie на apt.dockerproject.org, я не вижу остановки внутри их файлов управления, только регистр и запуск).

Лучшее предложение, которое я могу сделать, это не запускать обновление системы, если вы не можете терпеть простоя. Минимизируйте время обновления, выполнив только загрузку (apt-get upgrade -d), а затем запустите обновление во время вашего окна отключения. Вы также можете приостановить перенос пакета докеров, чтобы он не обновлялся автоматически с помощью dselect и нажатия = на имя пакета.

Смежные вопросы