컨테이너 재시작 정책 구성
Docker 를 사용하면 컨테이너에 대한 재시작 정책을 구성할 수 있습니다. 재시작 정책은 컨테이너가 종료된 후 Docker 데몬이 자동으로 재시작해야 하는지 여부를 결정합니다. 이는 애플리케이션의 가용성을 보장하는 데 중요한 기능입니다.
이 단계에서는 Docker 컨테이너에 대한 재시작 정책을 구성하는 방법을 배웁니다.
먼저, 이전 my-nginx 컨테이너를 중지하고 제거하여 새로 시작해 보겠습니다.
docker stop my-nginx
docker rm my-nginx
이제 always의 재시작 정책으로 새 Nginx 컨테이너를 실행해 보겠습니다.
docker run -d --name my-nginx-always --restart=always -p 80:80 nginx
--restart=always 플래그는 Docker 에게 종료 코드에 관계없이 컨테이너가 중지되면 항상 재시작하도록 지시합니다. 또한 Docker 데몬이 시작될 때 컨테이너를 재시작합니다.
컨테이너가 실행 중인지 확인합니다.
docker ps
이제 수동으로 중지하여 컨테이너 실패를 시뮬레이션해 보겠습니다.
docker stop my-nginx-always
몇 초 동안 기다린 다음 컨테이너 상태를 다시 확인합니다.
docker ps
my-nginx-always 컨테이너가 Docker 데몬에 의해 자동으로 재시작되었음을 확인할 수 있습니다. STATUS 열은 짧은 시간 동안 Up 상태였음을 나타냅니다.
다른 일반적인 재시작 정책은 다음과 같습니다.
no: 컨테이너를 자동으로 재시작하지 않습니다 (기본값).
on-failure: 0 이 아닌 종료 코드로 종료되는 경우에만 컨테이너를 재시작합니다 (오류를 나타냄). 선택적으로 최대 재시작 시도 횟수를 지정할 수 있습니다 (예: on-failure:5).
unless-stopped: 사용자가 명시적으로 중지하거나 Docker 데몬이 중지되지 않는 한 항상 컨테이너를 재시작합니다.
on-failure 정책을 시도해 보겠습니다. 현재 컨테이너를 중지하고 제거합니다.
docker stop my-nginx-always
docker rm my-nginx-always
on-failure 정책으로 새 컨테이너를 실행합니다.
docker run -d --name my-nginx-on-failure --restart=on-failure -p 80:80 nginx
실행 중인지 확인합니다.
docker ps
이제 실패를 시뮬레이션해 보겠습니다. 0 이 아닌 상태로 종료되는 명령을 컨테이너 내에서 실행하여 이 작업을 수행할 수 있습니다.
docker exec my-nginx-on-failure sh -c "exit 1"
몇 초 후에 컨테이너 상태를 확인합니다.
docker ps
0 이 아닌 상태로 종료되었으므로 컨테이너가 자동으로 재시작되었어야 합니다.
재시작 정책은 컨테이너화된 애플리케이션의 복원력을 보장하는 강력한 도구입니다. 적절한 정책을 구성하여 예기치 않게 중지되는 컨테이너의 복구를 자동화할 수 있습니다.