컨테이너·워크플로우 자동화/DocKer 기본 및 활용

Docker restart 정책에서 unless-stopped의 의미와 동작 방식

Data Jun 2026. 2. 7. 15:00

Docker 컨테이너를 운영하다 보면 “컨테이너가 예기치 않게 종료되었을 때 어떻게 대응할 것인가”가 중요해집니다.
이때 사용하는 옵션이 --restart이며, 실무에서 가장 자주 선택되는 값이 unless-stopped입니다.

 

unless-stopped를 직역하면 **“중지되지 않는 한”**이라는 뜻입니다.
Docker 문맥에서는 **“사용자가 직접 멈추지 않는 한, 어떤 이유로든 컨테이너가 내려가면 다시 시작하라”**로 이해하면 됩니다.

 

실제로 이 옵션은 컨테이너 실행 시점에 아래와 같이 설정합니다.

docker run -d \
  --name mysql \
  -e MYSQL_ROOT_PASSWORD=1234 \
  -e MYSQL_DATABASE=mydb \
  -p 3306:3306 \
  --restart unless-stopped \
  mysql:8.0

이렇게 실행된 컨테이너는 서버 재부팅, Docker 데몬 재시작, 컨테이너 내부 프로세스 크래시와 같은 상황에서도 자동으로 다시 올라옵니다.
반대로 관리자가 명시적으로 컨테이너를 중지하면 동작이 달라집니다.

docker stop mysql

 

이 경우 컨테이너는 의도적으로 중지된 상태로 인식되며, 이후 서버를 재부팅하더라도 자동으로 재시작되지 않습니다.

이러한 특성 때문에 unless-stopped는 데이터베이스, 백엔드 API 서버처럼 상시 실행이 필요하지만 유지보수 시에는 명확하게 멈출 수 있어야 하는 서비스에 적합합니다