Из документации после изменения daemon.json
(добавление "live-restore": true
) необходимо:
Перезапустить демон Docker. На Linux вы можете избежать перезапуска (и избежать простоев для ваших контейнеров), перезагрузив демон Docker. Если вы используете systemd, то используйте команду systemctl reload docker. В противном случае отправьте сигнал SIGHUP процессу dockerd.
Вы также можете сделать это, но это не рекомендуется:
Если вы предпочитаете, вы можете запустить процесс dockerd вручную с флагом --live-restore. Этот подход не рекомендуется, поскольку он не настраивает среду, которую systemd или другой менеджер процессов будут использовать при запуске процесса Docker. Это может вызвать неожиданное поведение.
Похоже, что вы не выполнили этот шаг . Вы сказали, что внесли изменения в daemon.json
и сразу запустили контейнер, а затем остановили dockerd
.
Чтобы заставить работать функциональность Live Restore
, выполните все шаги в правильном порядке:
- Измените
daemon.json
, добавив "live-restore": true
Перезагрузите Docker демон с помощью команды:
sudo systemctl reload docker
Затем попробуйте функциональность с вашим примером (запустив контейнер и сделать демона недоступным).
Я проверял, и это работает, если вы выполните следующие шаги в следующем порядке:
Протестировано с Docker version 19.03.2, build 6a30dfc
и Ubuntu 19.10 (Eoan Ermine)
Вы установили Docker через оснастку : snap.docker.dockerd.service
К сожалению, не рекомендуется, поскольку модель оснастки не полностью совместима с Docker. Кроме того, docker -snap больше не поддерживается Docker, In c. Пользователи сталкиваются с некоторыми проблемами, когда они устанавливают Docker с помощью оснастки, см. 1 2
. Необходимо удалить установку оснастки Docker, чтобы избежать любых возможных проблем с установкой через эта команда:
sudo snap remove docker --purge
Затем установите Docker официальным способом и после этого попробуйте функциональность Live Restore
, выполнив вышеуказанные шаги.
Также будьте осторожны при перезапуске демона, в документации сказано, что:
Оперативное восстановление при перезапуске
Параметр динамического восстановления работает только для восстановления контейнеров, если опции демона , такие как IP-адреса моста и драйвер графа, не изменились. Если какой-либо из этих параметров конфигурации на уровне демона изменился, динамическое восстановление может не работать, и вам может потребоваться вручную остановить контейнеры.
Также о времени простоя:
Влияние оперативного восстановления на работающие контейнеры
Если демон долгое время не работает, запущенные контейнеры могут заполнить журнал FIFO, который обычно читает демон. Полный журнал блокирует контейнеры от регистрации большего количества данных. Размер буфера по умолчанию составляет 64 КБ. Если буферы заполнены, вы должны перезапустить демон Docker, чтобы flu sh их.
На Linux, вы можете изменить размер буфера ядра, изменив /proc/sys/fs/pipe-max-size
.