Docker: Автоматическое выключение по расписанию
Для домашних серверов и тестовых сред актуальна задача экономии ресурсов: ночью или в нерабочее время контейнеры можно останавливать, а систему - выключать. Это руководство описывает безопасный метод с сохранением состояния и автоматическим восстановлением. 💡 Метод подходит для OrangePI, Raspberry Pi, старых ПК и любых систем, где важна экономия энергии. 📦 Скрипт остановки контейнеров и выключения Создание скрипта # Файл: /usr/local/bin/stop_containers_and_shutdown.sh cat > /usr/local/bin/stop_containers_and_shutdown.sh << 'EOF' #!/bin/bash # # Скрипт сохраняет ID запущенных контейнеров, # останавливает их и инициирует завершение работы системы. # CONTAINERS_FILE="/etc/active_containers.txt" echo "=== $(date '+%Y-%m-%d %H:%M:%S') ===" echo "Запуск скрипта остановки контейнеров и выключения системы" # Получаем список запущенных контейнеров (по ID) RUNNING_CONTAINERS=$(docker ps -q) if [ -n "${RUNNING_CONTAINERS}" ]; then echo "Сохранение списка запущенных контейнеров в ${CONTAINERS_FILE}" echo "${RUNNING_CONTAINERS}" > "${CONTAINERS_FILE}" docker stop ${RUNNING_CONTAINERS} echo "Контейнеры остановлены." else echo "Нет запущенных контейнеров." [ -f "${CONTAINERS_FILE}" ] && rm -f "${CONTAINERS_FILE}" fi sleep 10 echo "Завершение работы системы." /sbin/shutdown -h now EOF Сделать исполняемым chmod +x /usr/local/bin/stop_containers_and_shutdown.sh Как работает Шаг Описание docker ps -q Получает ID всех запущенных контейнеров > /etc/active_containers.txt Сохраняет список для восстановления docker stop Корректно останавливает контейнеры (SIGTERM) sleep 10 Даёт время на завершение операций shutdown -h now Выключает систему Почему так: ...