TGViewer
BashTex | Linux BashTex | Linux @bash_tex · 2.51K subscribers
Post #258 1.35K
Автоматическое обновление и перезапуск Docker-контейнеров при выходе новых образов

Если ты используешь докер и хочешь держать свои контейнеры в актуальном состоянии без ручного docker pull + restart - этот пост для тебя. С помощью bash можно отслеживать обновления образа и автоматически перезапускать контейнер, если он устарел.

🌟 Принцип:

📍 Проверяем хэш локального и удалённого образа
📍 Если разные — обновляем образ
📍 Перезапускаем контейнер с теми же параметрами
📍 Логируем событие


🛠 Пример скрипта:


#!/bin/bash

IMAGE="nginx:latest"
CONTAINER="my-nginx"
LOG="/var/log/docker_autoupdate.log"

echo "[$(date)] Проверка образа $IMAGE" >> "$LOG"

# Получаем текущий локальный digest
LOCAL_DIGEST=$(docker inspect --format='{{index .RepoDigests 0}}' "$IMAGE" 2>/dev/null || echo "none")

# Обновляем образ
docker pull "$IMAGE" > /dev/null 2>&1

# Получаем новый digest
NEW_DIGEST=$(docker inspect --format='{{index .RepoDigests 0}}' "$IMAGE" 2>/dev/null || echo "none")

# Сравниваем
if [[ "$LOCAL_DIGEST" != "$NEW_DIGEST" ]]; then
echo "[$(date)] Образ обновлён. Перезапуск контейнера $CONTAINER..." >> "$LOG"

docker stop "$CONTAINER"
docker rm "$CONTAINER"

# Запуск с нужными параметрами — укажи свои!
docker run -d --name "$CONTAINER" -p 80:80 "$IMAGE"

echo "[$(date)] Контейнер перезапущен с новым образом." >> "$LOG"
else
echo "[$(date)] Образ актуален. Перезапуск не требуется." >> "$LOG"
fi


▪️ Для автоматизации: Добавь скрипт в cron или systemd-timer, например, каждые 6 часов:


0 */6 * * * /usr/local/bin/docker-auto-update.sh


⭐️ Советы:

📍 Используй docker inspect для восстановления аргументов запуска, если параметры сложные.
📍Для нескольких контейнеров используй массивы и цикл.


BashTex 📱 #bash
  • 👍 5
More from @bash_tex
  1. Oct 12, 2026xargs против while read: где быстрее и безопаснее Обе конструкции позволяют обработать спи…
  2. Oct 9, 2026BashTex 📱 #мем
  3. Oct 8, 2026Bridge FDB - как Linux bridge узнаёт, где находится MAC Linux bridge не знает заранее, за…
  4. Oct 7, 2026/dev/tcp - сетевое соединение средствами Bash В Bash есть малоизвестная возможность работа…
  5. Oct 6, 2026Ephemeral ports - почему заканчиваются исходящие TCP-порты Когда приложение устанавливает…
  6. Oct 5, 2026name_to_handle_at() - как получить файловый объект без обычного пути В Linux обычно обраща…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →