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

더 알아보기 (Learn more)