1 min read

Docker 모니터링하면서 죽으면 재시작시키는 스크립트

Docker 모니터링하면서 죽으면 재시작시키는 스크립트
Photo by Luca Bravo / Unsplash

Docker 재시작 스크립트

#!/bin/bash

CONTAINERS=("container1_name" "container2_name") # 감시할 컨테이너 이름 입력
CHECK_INTERVAL=600  # 체크 주기 (초 단위)

while true; do
  for CONTAINER_NAME in "${CONTAINERS[@]}"; do
    # 컨테이너 상태 확인
    CONTAINER_STATUS=$(docker inspect -f '{{.State.Status}}' "$CONTAINER_NAME" 2>/dev/null)

    # 컨테이너가 존재하지 않거나, 비정상 상태일 경우 재실행
    if [[ "$CONTAINER_STATUS" != "running" ]]; then
      echo "$(date) - 컨테이너 '$CONTAINER_NAME' 비정상 상태 감지. 재실행 중..."
      docker start "$CONTAINER_NAME"
    fi
  done
  sleep $CHECK_INTERVAL
done

chmod +x container_watcher.sh
nohup ./container_watcher.sh &

자동시작 설정

sudo nano /etc/systemd/system/container-watcher.service
[Unit]
Description=Docker Container Watcher
After=docker.service
Requires=docker.service

[Service]
ExecStart=/path/to/container_watcher.sh
Restart=always

[Install]
WantedBy=multi-user.target

서비스 시작 및 실행

sudo systemctl daemon-reload
sudo systemctl enable container-watcher.service
sudo systemctl start container-watcher.service

스크립트 수정

nano container_watcher.sh

스크립트 중단

ps aux | grep container_watcher.sh
pkill -f container_watcher.sh

스크립트 실행

nohup ./container_watcher.sh &

스크립트 실행 확인

ps aux | grep container_watcher.sh

서비스 설정 한 경우

sudo systemctl restart container-watcher.service