Як перезапустити Docker
У цій статті ви дізнаєтеся, як перезапустити демон Docker і контейнери Docker за допомогою командного рядка (CLI).
У цьому гайді ми використовуватимемо сервер BlueVPS NVMe-bKVM з 4 ГБ оперативної пам’яті.
Ми припускаємо, що всі команди виконуються від імені користувача root.
Коли слід перезапустити демон Docker або контейнер Docker?
Перезапустіть демон Docker, якщо ви оновили Docker Engine або ядро системи; якщо CLI 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

Тут ми бачимо 3 наших контейнери; їх можна перезапустити, використовуючи ідентифікатор (ID) або ім’я контейнера.
Наприклад, перезапустимо 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