[도커] DockerFile HEALTHCHECK란?

개요

  • 서비스를 Docker 컨테이너로 운영하다 보면, Docker 에서 컨테이너 안의 프로세스가 현재 정상적인지, 아니면 비정상적으로 움직이는지? 확인하고 싶을 경우가 있습니다.
  • 이때 유용하게 사용할 수 있는 기능을 Docker 에서는 제공해주고 있습니다.
  • HEALTHCHECK 명령어를 통해 Docker 컨테이너의 상태를 체크할 수 있는데요, HEALTHCHECK 에 대해서 알아 보도록 하겠습니다.

HEALTHCHECK 구문

  • HEALTHCHECK 구문은, DockerFile 에서 사용합니다.
  • 사용 구문은 아래와 같습니다.
HEALTHCHECK [OPTIONS] CMD command --(컨테이너 내부에서 명령을 실행하여 컨테이너 상태 확인)
  • 위에서 HEALTHCHECK 명령은 HEALTHCHECK 컨테이너가 여전히 작동하는지 확인하기 위해 컨테이너를 테스트하는 방법을 Docker에 알려줍니다. 이를 통해 웹 서버가 무한 루프에 빠져서 서버 프로세스가 계속 실행 중인데도 새 연결을 처리할 수 없는 경우와 같은 경우를 감지할 수 있습니다.
  • 위에서 OPTIONS 에는 아래와 같은 옵션들이 들어갈 수 있습니다.
    • --interval=DURATION(기본값: 30s)
    • --timeout=DURATION(기본값: 30s)
    • --start-period=DURATION(기본값: 0s)
    • --retries=N(기본값: 3)
  • 위와 같이 옵션들을 추가하여 HealthCheck 를 설정할 수 있습니다.

HEALTHCHECK 상태 값

  • HEALTHCHECK 의 상태 값은 크게 3가지 입니다.
    • starting : 컨테이너의 초기 상태
    • healthy : 초기 상태 확인 후, HEALTHCHECK 정상 통과
    • unhealthy : 초기 상태 확인 후, HEALTHCHECK 통과 실패

HEALTHCHECK 명령의 종료 Return 값

  • HEALTHCHECK 명령의 종료 Return 값은 크게 3가지 입니다.
    • 0 : success - the container is healthy and ready for use
    • 1 : unhealthy - the container is not working correctly
    • 2 : reserved - do not use this exit code

DockerFile 에서 HEALTHCHECK 사용 예제

  • HEALTHCHECK 옵션을 DockerFile 에서 사용하려면 아래 옵션을 추가해 주면 됩니다.
HEALTHCHECK --interval=5m --timeout=3s CMD curl -f http://localhost/ || exit 1
  • 위 내용은, 예를 들어 5분마다 가동 중인 웹 서버의 메인 페이지(http://localhost/)를 3초 안에 표시할 수 있는지를 확인하는 HEALTHCHECK 옵션을 설정한 것입니다.
728x90

이 글을 공유하기

댓글

Designed by JB FACTORY