Docker 1.12의 새로운 기능 중 하나는 컨테이너의 상태 확인을 이미지 정의에 베이크할 수 있는 방법입니다. 이 기능은 명령줄에서 재정의할 수 있습니다. 명령줄에서 CMD
인스트럭션이 여러 개 있을 수 있습니다. 건강 체크
지침을 따르되 마지막 지침만 유효합니다.
이는 컨테이너가 상태를 다음과 같이 보고하기 때문에 매우 유용한 추가 기능입니다. 최대 1시간
는 오류를 반환할 수 있습니다. 컨테이너가 가동 중일 수 있지만 컨테이너 내부의 애플리케이션이 상태를 제공할 방법이 없습니다. 이 명령어는 이 문제를 해결합니다.
그리고 도커파일 빌드하는 아룽업타/카우치베이스 이미지입니다:
1 2 3 4 5 6 7 |
FROM 카우치베이스:최신 COPY 구성-노드.sh /opt/카우치베이스 건강 체크 --간격=5s --시간 초과=3s CMD curl --실패 http://localhost:8091/pools || exit 1 CMD ["/opt/couchbase/configure-node.sh"] |
다음을 사용합니다. configure-node.sh
스크립트를 사용하여 서버를 구성합니다. Couchbase REST API. 여기서 주목해야 할 새로운 지침은 건강 체크
. 이 명령은 다음과 같이 지정할 수 있습니다:
1 |
건강 체크 CMD |
그리고 가 될 수 있습니다:
--간격=지속 시간
(기본값 30대)--timeout=지속 시간
(기본값 30대)--재시도=N
(기본값 3)
그리고 는 컨테이너 내부에서 실행되어 컨테이너의 상태를 확인하는 명령어입니다. 상태 확인이 활성화된 경우 컨테이너는 세 가지 상태를 가질 수 있습니다:
시작
- 컨테이너가 아직 시작 중일 때의 초기 상태건강
- 명령이 성공하면 컨테이너가 정상입니다.- 건강하지 않음 - 한 번만 실행하면
가 지정된 시간 초과보다 오래 걸리면 상태가 좋지 않은 것으로 간주됩니다. 상태 확인에 실패하면 재시도가 여러 번 실행되고 그래도 실패하면 Docker 컨테이너 상태가 비정상 상태로 선언됩니다.
Docker 명령 종료 상태는 컨테이너의 상태 확인 상태를 나타냅니다. 허용되는 값은 다음과 같습니다:
0
- 용기가 건강합니다.1
- 컨테이너가 건강하지 않습니다.
지침에 따라 /pools
REST API는 curl을 사용하여 호출됩니다. 명령이 실패하면 종료 상태가 1
가 반환되면 컨테이너가 해당 시도에 대해 건강하지 않은 것으로 표시됩니다. 이 Docker HEALTHCHECK 명령은 5초마다 호출됩니다. 명령이 3초 이내에 성공적으로 반환되지 않으면 컨테이너가 비정상 상태로 표시됩니다. 컨테이너를 다음과 같이 실행합니다:
1 |
도커 실행 -d --이름 db arungupta/카우치베이스:최신 |
Docker 컨테이너 상태를 확인합니다:
1 2 3 |
도커 ps 컨테이너 ID 이미지 COMMAND 생성됨 상태 포트 이름 55b14302671e arungupta/카우치베이스:최신 "/entrypoint.sh /opt/" 2 초 전 Up 1 초 (건강: 시작) 8091-8094/tcp, 11207/tcp, 11210-11211/tcp, 18091-18093/tcp db |
어떻게 건강: 시작
상태는 상태
열을 클릭합니다. 몇 초 후에 확인하면 상태가 표시됩니다:
1 2 3 |
도커 ps 컨테이너 ID 이미지 COMMAND 생성됨 상태 포트 이름 55b14302671e arungupta/카우치베이스:최신 "/entrypoint.sh /opt/" 정보 a 분 전 Up 정보 a 분 (건강) 8091-8094/tcp, 11207/tcp, 11210-11211/tcp, 18091-18093/tcp db |
그리고 지금은 건강한 것으로 보고되었습니다. 이에 대한 자세한 내용 건강 체크
지침은 다음에서 찾을 수 있습니다. docs.docker.com. 이제 다음과 같은 이미지가 없는 이미지를 실행하는 경우 건강 체크
명령어를 입력한 다음 도커 실행
명령을 사용하여 유사한 값을 지정할 수 있습니다. 동등한 런타임 명령은 다음과 같습니다:
1 |
도커 실행 -d --이름 db --건강-cmd "curl --fail http://localhost:8091/pools || exit 1" --건강-간격=5s --시간 초과=3s arungupta/카우치베이스 |
컨테이너의 최근 5회 상태 확인은 다음을 사용하여 얻을 수 있습니다. 도커 인스펙트
명령을 사용합니다:
1 |
도커 검사 --형식='{{json .State.Health}}' db |
출력은 다음과 같이 표시됩니다:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
{ "상태": "건강한", "FailingStreak": 0, "로그": [ { "시작": "2016-11-12T03:23:03.351561Z", "End": "2016-11-12T03:23:03.422176171Z", "ExitCode": 0, "출력": " % 총 % 수신 % Xferd 평균 속도 시간 시간 현재n 부하 업로드 총 남은 속도 0 0 0 0 0 0 0 0 --:--:-- --:-- --:-- --:-- --:-- 0r100 768 100 768 0 0 595k 0 --:--:-- --:-- --:-- --:-- 750kn{"isAdminCreds":true"isROAdminCreds":거짓"isEnterprise":true"풀":[{"이름":"기본값","uri":"/풀/기본값?uuid=1b84cdbd136e4e8466049dd062dd6969","스트리밍우리":"/풀스트리밍/기본값?uuid=1b84cdbd136e4e8466049dd062dd6969"}],"설정":{"최대 병렬 인덱서":"/설정/최대 병렬 인덱서?uuid=1b84cdbd136e4e8466049dd062dd6969","뷰업데이트데몬":"/설정/뷰업데이트데몬?uuid=1b84cdbd136e4e8466049dd062dd6969"},"uuid":"1b84cdbd136e4e8466049dd062dd6969","구현 버전":"4.5.1-2844-엔터프라이즈","구성요소 버전":{"lhttpc":"1.3.0","os_mon":"2.2.14","public_키":"0.21","asn1":"2.0.4","커널":"2.16.4","에일":"4.5.1-2844-엔터프라이즈","inets":"5.9.8","ns_서버":"4.5.1-2844-엔터프라이즈","암호화":"3.2","ssl":"5.3.3","sasl":"2.3.4","stdlib":"1.19.4"}}" }, { "시작": "2016-11-12T03:23:08.423558928Z", "End": "2016-11-12T03:23:08.510122392Z", "ExitCode": 0, "출력": " % 총 % 수신 % Xferd 평균 속도 시간 시간 현재n 부하 업로드 총 남은 속도 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:-- --:-- 0r100 768 100 768 0 0 309k 0 --:--:-- --:-- --:-- --:-- 375kn{"isAdminCreds":true"isROAdminCreds":거짓"isEnterprise":true"풀":[{"이름":"기본값","uri":"/풀/기본값?uuid=1b84cdbd136e4e8466049dd062dd6969","스트리밍우리":"/풀스트리밍/기본값?uuid=1b84cdbd136e4e8466049dd062dd6969"}],"설정":{"최대 병렬 인덱서":"/설정/최대 병렬 인덱서?uuid=1b84cdbd136e4e8466049dd062dd6969","뷰업데이트데몬":"/설정/뷰업데이트데몬?uuid=1b84cdbd136e4e8466049dd062dd6969"},"uuid":"1b84cdbd136e4e8466049dd062dd6969","구현 버전":"4.5.1-2844-엔터프라이즈","구성요소 버전":{"lhttpc":"1.3.0","os_mon":"2.2.14","public_키":"0.21","asn1":"2.0.4","커널":"2.16.4","에일":"4.5.1-2844-엔터프라이즈","inets":"5.9.8","ns_서버":"4.5.1-2844-엔터프라이즈","암호화":"3.2","ssl":"5.3.3","sasl":"2.3.4","stdlib":"1.19.4"}}" }, { "시작": "2016-11-12T03:23:13.511446818Z", "End": "2016-11-12T03:23:13.58141325Z", "ExitCode": 0, "출력": " {"isAdminCreds":true"isROAdminCreds":거짓"isEnterprise":true"풀":[{"이름":"기본값","uri":"/풀/기본값?uuid=1b84cdbd136e4e8466049dd062dd6969","스트리밍우리":"/풀스트리밍/기본값?uuid=1b84cdbd136e4e8466049dd062dd6969"}],"설정":{"최대 병렬 인덱서":"/설정/최대 병렬 인덱서?uuid=1b84cdbd136e4e8466049dd062dd6969","뷰업데이트데몬":"/설정/뷰업데이트데몬?uuid=1b84cdbd136e4e8466049dd062dd6969"},"uuid":"1b84cdbd136e4e8466049dd062dd6969","구현 버전":"4.5.1-2844-엔터프라이즈","구성요소 버전":{"lhttpc":"1.3.0","os_mon":"2.2.14","public_키":"0.21","asn1":"2.0.4","커널":"2.16.4","에일":"4.5.1-2844-엔터프라이즈","inets":"5.9.8","ns_서버":"4.5.1-2844-엔터프라이즈","암호화":"3.2","ssl":"5.3.3","sasl":"2.3.4","stdlib":"1.19.4"}} % 총 % 수신 % Xferd 평균 속도 시간 시간 현재n 부하 업로드 총 남은 속도 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:-- --:-- 0r100 768 100 768 0 0 248k 0 --:--:-- --:-- --:-- 375kn" }, { "시작": "2016-11-12T03:23:18.583512367Z", "End": "2016-11-12T03:23:18.677727356Z", "ExitCode": 0, "출력": " % 총 % 수신 % 평균 속도 시간 시간 현재 시간 Dlo{"isAdminCreds":true"isROAdminCreds":거짓"isEnterprise":true"풀":[{"이름":"기본값","uri":"/풀/기본값?uuid=1b84cdbd136e4e8466049dd062dd6969","스트리밍우리":"/풀스트리밍/기본값?uuid=1b84cdbd136e4e8466049dd062dd6969"}],"설정":{"최대 병렬 인덱서":"/설정/최대 병렬 인덱서?uuid=1b84cdbd136e4e8466049dd062dd6969","뷰업데이트데몬":"/설정/뷰업데이트데몬?uuid=1b84cdbd136e4e8466049dd062dd6969"},"uuid":"1b84cdbd136e4e8466049dd062dd6969","구현 버전":"4.5.1-2844-엔터프라이즈","구성요소 버전":{"lhttpc":"1.3.0","os_mon":"2.2.14","public_키":"0.21","asn1":"2.0.4","커널":"2.16.4","에일":"4.5.1-2844-엔터프라이즈","inets":"5.9.8","ns_서버":"4.5.1-2844-엔터프라이즈","암호화":"3.2","ssl":"5.3.3","sasl":"2.3.4","stdlib":"1.19.4"}}ad 업로드 총 남은 속도 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0r100 768 100 768 0 0 307k 0 --:--:-- --:--:-- --:-- 375kn" }, { "시작": "2016-11-12T03:23:23.679661467Z", "End": "2016-11-12T03:23:23.782372291Z", "ExitCode": 0, "출력": " % 총 % 수신 % 평균 속도 시간 현재 시간 로드 업로드 총 남은 시간{"isAdminCreds":true"isROAdminCreds":거짓"isEnterprise":true"풀":[{"이름":"기본값","uri":"/풀/기본값?uuid=1b84cdbd136e4e8466049dd062dd6969","스트리밍우리":"/풀스트리밍/기본값?uuid=1b84cdbd136e4e8466049dd062dd6969"}],"설정":{"최대 병렬 인덱서":"/설정/최대 병렬 인덱서?uuid=1b84cdbd136e4e8466049dd062dd6969","뷰업데이트데몬":"/설정/뷰업데이트데몬?uuid=1b84cdbd136e4e8466049dd062dd6969"},"uuid":"1b84cdbd136e4e8466049dd062dd6969","구현 버전":"4.5.1-2844-엔터프라이즈","구성요소 버전":{"lhttpc":"1.3.0","os_mon":"2.2.14","public_키":"0.21","asn1":"2.0.4","커널":"2.16.4","에일":"4.5.1-2844-엔터프라이즈","inets":"5.9.8","ns_서버":"4.5.1-2844-엔터프라이즈","암호화":"3.2","ssl":"5.3.3","sasl":"2.3.4","stdlib":"1.19.4"}} Speednr 0 0 0 0 0 0 0 --:--:-- --:-- --:--:-- 0r100 768 100 768 0 0 439k 0 --:--:-- --:--:-- -- --:-- 750kn" } ] } |