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 서버처럼 상시 실행이 필요하지만 유지보수 시에는 명확하게 멈출 수 있어야 하는 서비스에 적합합니다
'컨테이너·워크플로우 자동화 > DocKer 기본 및 활용' 카테고리의 다른 글
| Docker Volume 설정 방식 두 가지: Bind Mount와 Named Volume의 차이 (0) | 2026.02.16 |
|---|---|
| Docker 컨테이너에서 exit와 Ctrl + P + Q 차이 정리 (0) | 2026.02.16 |
| 컨테이너로 실행된 Spring Boot가 MySQL에 연결되지 않는 이유 (0) | 2025.10.12 |
| Spring Boot와 MySQL 컨테이너를 함께 실행하기 (0) | 2025.10.12 |
| Docker Compose로 MySQL, Redis 컨테이너 동시에 띄워보기 (0) | 2025.10.12 |