Docker 컨테이너에서 실행되는 서비스 등록
Docker 컨테이너에서 실행되는 서비스 등록 (Register services running on Docker containers)
이 주제에서는 Docker 컨테이너에서 실행되는 서비스를 Consul에 등록하는 방법에 대한 개요를 제공해요.
출처: 문서
본문
이 주제에서는 Docker 컨테이너에서 실행되는 서비스를 Consul에 등록하는 방법에 대한 개요를 제공합니다.
서비스 등록 (Register a service)
컨테이너에서 서비스를 시작하고 Consul 클라이언트에 등록합니다. 다음 예제는 액세스할 때마다 숫자를 증가시킨 다음 해당 숫자를 반환하는 counting-service를 참조합니다.
컨테이너를 가져옵니다.
$ docker pull hashicorp/counting-service:0.0.2
http://localhost:9001을 방문하여 웹 브라우저에서 액세스할 수 있도록 포트 전달로 컨테이너를 실행합니다.
$ docker run \
-p 9001:9001 \
-d \
--name=counting-service \
hashicorp/counting-service:0.0.2
다음으로 counting 서비스를 Consul 클라이언트에 등록할 서비스 정의를 만듭니다.
/consul/config/counting.json
{
"service": {
"name": "counting",
"tags": ["go"],
"port": 9001
}
}
Consul 서비스가 실행되는 컨테이너에서 /consul/config/counting.json 파일을 만듭니다. 다음 예제에서 이 컨테이너는 consul-client 컨테이너입니다.
$ docker exec consul-client /bin/sh -c "echo '{\"service\": {\"name\": \"counting\", \"tags\": [\"go\"], \"port\": 9001}}' >> /consul/config/counting.json"
Consul 클라이언트는 구성 디렉터리의 변경 사항을 자동으로 감지하지 않으므로 동일한 컨테이너에 리로드 명령을 발행해야 합니다. 구성 리로드를 트리거할 때까지 Consul은 서비스를 등록할 수 없습니다.
$ docker exec consul-client consul reload
Configuration reload triggered
consul-client 컨테이너의 로그에서 Consul 클라이언트가 행업 신호를 수신하고, 구성을 리로드하고, counting 서비스를 동기화했음을 확인하는 항목을 찾을 수 있습니다.
2022-12-15T19:02:24.945Z [INFO] agent: Synced service: service=counting