Как перезапустить контейнеры, изображение которых изменилось? - PullRequest
1 голос
/ 17 мая 2019

Я использую docker-compose для запуска набора несвязанных контейнеров докеров. Я использую docker-compose для этого из-за простоты настройки через docker-compose.yaml и централизованной конфигурации, которую приносит этот файл.

Одна из проблем, с которыми я сталкиваюсь, - это обновление изображений или фактически контейнеров после обновления изображения. Я обновляю их с помощью docker-compose pull, но ранее созданные контейнеры не перезапускаются сами по себе. У меня есть два возможных решения, оба выполнимые, но ни одно из них не идеальное:

  • перезапустите все контейнеры после pull. Это может привести к недоступности, что не является критичным в моей домашней обстановке, но все же (особенно перезапуск Home Assistant - это боль, когда свет перезагружается)
  • написать некоторый код, чтобы проверить, какие идентификаторы изображений изменились во время извлечения и перезапустить соответствующие контейнеры (сначала удалив их). Это решение, которое я буду использовать, если нет ничего лучше.

Мне было интересно, был ли лучший выбор.

Это домашняя обстановка, поэтому я бы хотел избежать таких решений, как Kubernetes.

Режим Swarm может работать, но я только что прочитал об этом, и это больше похоже на решение для обеспечения состояния, а не на менеджер контейнеров (в том смысле, что он будет перезапускать контейнеры на основе свежести изображения, из которого они были созданы).

Ответы [ 2 ]

3 голосов
/ 17 мая 2019

После того, как вы docker pull image, docker-compose -f "docker-compose.yml" up -d будут только , перезапустите контейнеры, для которых после docker pull существует новая версия образа.Это не повлияет на контейнеры, изображение которых остается прежним.Эта установка отлично работает для меня.

1 голос
/ 17 мая 2019
docker-compose up --force-recreate -d

, если существуют существующие контейнеры для службы, а конфигурация или образ службы были изменены после создания контейнера, docker-compose забирает изменения, останавливая и воссоздавая контейнеры (сохраняя подключенные тома),Чтобы запретить Compose принимать изменения, используйте флаг - без повторного создания .

Если вы хотите, чтобы Compose остановил и заново создал все контейнеры, используйте - force-recreate flag.

docker-compose up -CLI

ПРИМЕЧАНИЕ: воссоздать контейнеры, даже если их конфигурация и образне изменились.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...