2017-11-03 2 views
2

Docker version 17.09.0-ce을 사용하고 있습니다. 해당 컨테이너가 건강에 좋지 않은 상태로 표시되는 것으로 나타났습니다.건강 검진을 기반으로 비정상적인 도커 컨테이너를 다시 시작하십시오.

컨테이너를 건강에 좋지 않은 상태로 유지하는 대신 컨테이너를 다시 시작하는 옵션이 있습니까?

+0

docker swarm 모드에서 실행하고 정상적인 도커 컨테이너가 아닌 서비스로 실행할 때 발생한다고 생각합니다. –

+0

몇 가지 구체적인 이유로 swarm이나 오케스트레이션 도구를 사용하지 않습니다. –

+0

그런 다음'docker events -f event = health_status' (https://docs.docker.com/engine/reference/commandline/events/#extended-description)를 사용하여 다른 스크립트를 사용할 수 있습니다. 콘테이너 –

답변

2

비정상적인 컨테이너 기능 재시작은 원래 PR (https://github.com/moby/moby/pull/22719) 이었으나 토론 후에 제거되었으며 나중에 RestartPolicy 기능 향상으로 간주됩니다. 이 해결 방법을 사용할 수있는이 순간

자동 unhealty 컨테이너를 다시 시작합니다 :

version: '2' 
services: 
    autoheal: 
    restart: always 
    image: willfarrell/autoheal 
    environment: 
     - AUTOHEAL_CONTAINER_LABEL=all 
    volumes: 
     - /var/run/docker.sock:/var/run/docker.sock 

간단히 만들어 https://codeblog.dotsandbrackets.com/docker-health-check/에 accroding이

0

Docker에는 컨테이너 상태에 대한 세부 정보를 얻을 수있는 몇 가지 방법이 있습니다. 상태 확인 및 실행 빈도를 구성 할 수 있습니다. 또한 상태 확인은 http와 같은 컨테이너 내부에서 실행되는 응용 프로그램에서 실행할 수 있습니다 (curl --fail 옵션 사용). health_status 이벤트를보고 세부 사항을 볼 수 있습니다. (가) 명령 검사 건강에 해로운 컨테이너에 대한 자세한 내용

이 편리, docker inspect --format='{{json .State.Health}}' container-name (자세한 내용은 https://blog.newrelic.com/2016/08/24/docker-health-check-instruction/를 참조하십시오.)

당신은 "건강에 해로운"태그를 일으키는 오류 조건 (언제든지 건강 진단 명령이 실행을 해결한다 먼저 종료 코드 1을 얻습니다. Docker가 오류에 따라 컨테이너를 다시 시작해야 할 수도 있고하지 않을 수도 있습니다. containers automatically을 시작/다시 시작하는 경우 시작 오류를 트래핑하거나 로깅 및 상태 확인 상태를 사용하면 오류를 신속하게 해결하는 데 도움이 될 수 있습니다. 자동 시작에 관심이 있다면 링크를 확인하십시오.

0

docker-compose up -d을 실행 여기에

https://hub.docker.com/r/willfarrell/autoheal/이 샘플 작성 파일입니다 컨테이너를 추가하고 "다시 시작 : 항상"을 추가합니다. 단, 도커 컨테이너를 다시 시작할 수 없음

+1

모든 답변을 링크가 아닌 응답에 넣으십시오. –

+0

이 문제가 해결되었습니다. Healthcheck 사용시 다음 사항에주의하십시오. 독립 실행 형 컨테이너의 경우 Docker 이벤트 및 스크립트를 사용하여 동일한 성능을 얻을 수 있지만 Docker는 자체적 인 통합을 수행하지 않아 상태 확인시 컨테이너를 다시 시작하지 않습니다. 건강 검진은 스웜 (Swarm)과 더 잘 통합됩니다. 스웜에 통합 된 상태 확인 기능을 통해 서비스의 컨테이너가 비정상적인 경우 Swarm은 비정상적인 컨테이너를 자동으로 종료하고 새 컨테이너를 시작하여 서비스의 복제 카운트에 지정된 컨테이너 수를 유지합니다. – Freax

0

독립 실행 형 컨테이너의 경우 Docker 이벤트 및 스크립트를 사용하여 동일한 성능을 얻을 수 있지만 Docker는 상태 확인 실패시 컨테이너를 다시 시작하기위한 기본 통합 기능이 없습니다. 건강 검진은 스웜 (Swarm)과 더 잘 통합됩니다. 스웜에 통합 된 상태 확인 기능을 통해 서비스의 컨테이너가 비정상적인 경우 Swarm은 비정상적인 컨테이너를 자동으로 종료하고 새 컨테이너를 시작하여 서비스의 복제 카운트에 지정된 컨테이너 수를 유지합니다.

관련 문제