docker-compose - перезапустить политику - не сохранять изменения в изображении - PullRequest
0 голосов
/ 28 ноября 2018

Давайте рассмотрим следующий пример:

version: '3'
services:
  some_service:
    build: .
    restart: unless-stopped

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

Ответы [ 2 ]

0 голосов
/ 30 ноября 2018

docker-compose развертывает контейнеры с конфигурацией, управляемой механизмом докера.Эта политика перезапуска применяется к контейнеру, который обрабатывается механизмом.Когда двигатель перезапускает контейнер, сохраняется предыдущее состояние контейнера.Единственным исключением является монтирование файловой системы tmpfs внутри вашего контейнера, которое будет сброшено в пустой каталог.

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

docker swarm init

И затем вы можете развернуть свой сервис с помощью:

docker stack deploy -c docker-compose.yml your-app

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

0 голосов
/ 29 ноября 2018

Когда вы docker-compose up создаете «контейнеры», они имеют собственную файловую систему.И когда вы перезапускаете контейнер, это все тот же контейнер с той же файловой системой.Итак, то, что у вас есть, ожидается.

Если вы хотите новый перезапуск, вам нужно сделать docker-compose down, чтобы удалить контейнеры, а затем up, чтобы создать новые.

Вы не можетеизменить политику перезапуска на работающем контейнере.

EDIT

@ BMitch Вы можете изменить политику перезапуска с обновлением докера

docker update --restart=on-failure container_id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...