Как перезапустить Docker
В этой статье разберём, как перезапустить демон Docker и контейнеры Docker с помощью командной строки (CLI).
В данном гайде мы будем использовать сервер BlueVPS NVMe-bKVM c 4 ГБ оперативной памяти.
Мы предполагаем, что все команды выполняются от имени пользователя root.
Когда следует перезапустить демон Docker или контейнер Docker?
Перезапустите демон Docker после обновления Docker Engine или ядра системы; если интерфейс командной строки Docker не отвечает (завис), а также в случае изменения настроек файла /etc/docker/daemon.json (например, драйверов хранилищ, драйверов журналов или пользовательских реестров).
Перезапустите контейнер Docker в следующих случаях: при зависании, задержке в работе или сбое приложения внутри контейнера; при изменении файла конфигурации приложения или файлов смонтированных томов для контейнера.
Перезапуск Daemon Docker
Чтобы перезапустить Docker, достаточно выполнить одну простую команду
systemctl restart docker
Обратите внимание, что команда systemctl restart docker по умолчанию перезапустит все запущенные контейнеры. Вы можете проверить это с помощью следующей команды
docker info | grep "Live Restore"
Однако если в выводе отображается Live Restore Enabled : true, что не является настройкой по умолчанию, ваши контейнеры останутся активными. Используйте следующую команду для включения функции live restore (контейнеры останутся активными при перезапуске демона)
tee /etc/docker/daemon.json <<EOF
{
"live-restore": true
}
EOF
systemctl reload docker
Используйте следующую команду для отключения функции live restore (контейнеры перезапустятся при перезапуске демона)
tee /etc/docker/daemon.json <<EOF
{
"live-restore": false
}
EOF
systemctl reload docker
Перезапуск контейнера Docker
Перед перезапуском контейнера необходимо определить его имя или идентификатор. Выполните следующую команду для отображения ваших контейнеров
docker ps

Здесь мы видим три наших контейнера; их можно перезапустить, используя ID или NAME контейнера. Например, давайте перезапустим httpd сначала по имени, а затем по идентификатору контейнера:
Наприклад, перезапустим httpd сначала по названию, а затем по идентификатору контейнера
docker restart httpd
docker restart 997f9dd62538
По статусу видно, что контейнер был перезапущен и работает уже 1 секунду

Автоматический перезапуск контейнера
В Docker предусмотрены политики перезапуска контейнеров при завершении работы или при перезапуске самой среды Docker, что позволяет вам избегать использования диспетчеров процессов для запуска контейнеров.
Существует 4 политики перезапуска:
no - Не перезапускать контейнер.
on-failure [ :max-retries ] - Перезапускать контейнер при сбое; можно ограничить количество попыток перезапуска.
always - Всегда перезапускать контейнер, если он останавливается.
unless-stopped - Всегда перезапускать контейнер, если он останавливается, за исключением случаев, когда вы остановили его вручную.
Ниже приведены примеры команд для всех четырёх политик перезапуска
docker run -d --restart=no httpd
docker run -d --restart=on-failure:3 httpd
docker run -d --restart=always httpd
docker run -d --restart=unless-stopped httpd
Заключение
Знание того, когда и как перезапускать контейнеры Docker, позволяет сэкономить время и предотвратить ненужные простои:
- Используйте командуsystemctl restart docker при обновлении ядра и изменении конфигурации.
- Используйте командуdocker restart <name/ID> для быстрого восстановления конкретного не отвечающего приложения.
- Установите соответствующие политики перезапуска (--restart) во время развертывания, чтобы автоматизировать восстановление контейнеров.
Не забудьте ознакомитьсяс нашими VPS-серверами по лучшим ценам на рынке!
Blog