Docker로 Elasticsearch 빠르게 설치

원본 보기

Docker로 Elasticsearch 빠르게 설치

Docker 명령어를 사용하여 개발 또는 테스트용 단일 노드 Elasticsearch 클러스터를 시작합니다. 그런 다음 추가 Docker 명령어를 실행하여 테스트 클러스터에 노드를 추가하거나 Kibana를 실행할 수 있습니다.

  • 로컬 개발 환경에서 Elasticsearch를 테스트하려는 경우 로컬에서 Elasticsearch 실행을 참조하세요. 이 설정은 프로덕션 환경에는 적합하지 않습니다.
  • 이 설정은 기본적으로 여러 Elasticsearch 노드 또는 Kibana를 실행하지 않습니다. Kibana가 포함된 다중 노드 클러스터를 만들려면 Docker Compose를 사용하세요. Docker Compose로 다중 노드 클러스터 시작을 참조하세요.

보안을 강화하려면 보안이 강화된 Wolfi 이미지를 사용할 수도 있습니다. Wolfi 이미지를 사용하려면 Docker 버전 20.10.10 이상이 필요합니다.

Wolfi 이미지를 사용하려면 Docker 명령어의 이미지 태그에 -wolfi를 추가하세요.

예:

docker pull docker.elastic.co/elasticsearch/elasticsearch-wolfi:9.5.1
		
docker pull docker.elastic.co/elasticsearch/elasticsearch-wolfi:<SPECIFIC.VERSION.NUMBER>
		

<SPECIFIC.VERSION.NUMBER>를 원하는 버전 번호로 바꾸어 특정 버전의 Elastic Stack을 다운로드하고 설치할 수 있습니다. 예를 들어 <SPECIFIC.VERSION.NUMBER>를 9.0.0으로 바꿀 수 있습니다.

  1. Docker를 설치합니다. 환경에 맞는 Docker를 설치하려면 Docker 다운로드를 방문하세요.

    Docker Desktop을 사용하는 경우 메모리를 4GB 이상 할당해야 합니다. Settings > Resources로 이동하여 Docker Desktop의 메모리 사용량을 조정할 수 있습니다.

  2. 새 Docker 네트워크를 생성합니다.

    docker network create elastic
    		
  3. Elasticsearch Docker 이미지를 가져옵니다.

    docker pull docker.elastic.co/elasticsearch/elasticsearch:9.5.1
    		

    <SPECIFIC.VERSION.NUMBER>를 원하는 Elastic Stack 버전 번호로 바꾸세요. 예를 들어 <SPECIFIC.VERSION.NUMBER>를 9.0.0으로 바꿀 수 있습니다. 이 튜토리얼 전체에서 동일한 버전 번호를 사용합니다.

    docker pull docker.elastic.co/elasticsearch/elasticsearch:<SPECIFIC.VERSION.NUMBER>
    		
  4. 선택 사항: 환경에 맞는 Cosign을 설치합니다. 그런 다음 Cosign을 사용하여 Elasticsearch 이미지의 서명을 확인합니다.

    wget https://artifacts.elastic.co/cosign.pub
    cosign verify --key cosign.pub docker.elastic.co/elasticsearch/elasticsearch:9.5.1
    		

    cosign 명령어는 검사 결과와 서명 페이로드를 JSON 형식으로 출력합니다.

    Verification for docker.elastic.co/elasticsearch/elasticsearch:9.5.1 --
    The following checks were performed on each of these signatures:
      - The cosign claims were validated
      - Existence of the claims in the transparency log was verified offline
      - The signatures were verified against the specified public key
    		

    <SPECIFIC.VERSION.NUMBER>를 다운로드한 Docker 이미지의 버전으로 바꾸세요.

    wget https://artifacts.elastic.co/cosign.pub
    cosign verify --key cosign.pub docker.elastic.co/elasticsearch/elasticsearch:<SPECIFIC.VERSION.NUMBER>
    		

    cosign 명령어는 검사 결과와 서명 페이로드를 JSON 형식으로 출력합니다.

    Verification for docker.elastic.co/elasticsearch/elasticsearch:<SPECIFIC.VERSION.NUMBER> --
    The following checks were performed on each of these signatures:
      - The cosign claims were validated
      - Existence of the claims in the transparency log was verified offline
      - The signatures were verified against the specified public key
    		
  5. Elasticsearch 컨테이너를 시작합니다.

    docker run --name es01 --net elastic -p 9200:9200 -it -m 1GB docker.elastic.co/elasticsearch/elasticsearch:9.5.1
    		

    -m 플래그를 사용하여 컨테이너의 메모리 제한을 설정합니다. 그러면 JVM 크기를 수동으로 설정할 필요가 없습니다.

    ELSER를 사용한 시맨틱 검색과 같은 머신 러닝 기능에는 메모리가 1GB를 초과하는 더 큰 컨테이너가 필요합니다. 머신 러닝 기능을 사용하려면 다음 명령어로 컨테이너를 시작하세요.

    docker run --name es01 --net elastic -p 9200:9200 -it -m 6GB -e "xpack.ml.use_auto_machine_memory_percent=true" docker.elastic.co/elasticsearch/elasticsearch:9.5.1
    		

    이 명령어는 elastic 사용자 비밀번호와 Kibana 등록 토큰을 출력합니다.

    앞서 가져온 Docker 이미지와 동일한 Elastic Stack 버전 번호를 사용하여 <SPECIFIC.VERSION.NUMBER>를 해당 번호로 바꾸세요.

    docker run --name es01 --net elastic -p 9200:9200 -it -m 1GB docker.elastic.co/elasticsearch/elasticsearch:<SPECIFIC.VERSION.NUMBER>
    		

    -m 플래그를 사용하여 컨테이너의 메모리 제한을 설정합니다. 그러면 JVM 크기를 수동으로 설정할 필요가 없습니다.

    ELSER를 사용한 시맨틱 검색과 같은 머신 러닝 기능에는 메모리가 1GB를 초과하는 더 큰 컨테이너가 필요합니다. 머신 러닝 기능을 사용하려면 다음 명령어로 컨테이너를 시작하세요.

    docker run --name es01 --net elastic -p 9200:9200 -it -m 6GB -e "xpack.ml.use_auto_machine_memory_percent=true" docker.elastic.co/elasticsearch/elasticsearch:<SPECIFIC.VERSION.NUMBER>
    		

    이 명령어는 elastic 사용자 비밀번호와 Kibana 등록 토큰을 출력합니다.

  6. 생성된 elastic 비밀번호와 등록 토큰을 복사합니다. 이러한 자격 증명은 Elasticsearch를 처음 시작할 때만 표시됩니다. 다음 명령어를 사용하여 자격 증명을 다시 생성할 수 있습니다.

    docker exec -it es01 /usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic
    docker exec -it es01 /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s kibana
    		

    elastic 비밀번호를 셸의 환경 변수로 저장하는 것이 좋습니다. 예:

    export ELASTIC_PASSWORD="your_password"
    		
  7. 컨테이너의 http_ca.crt SSL 인증서를 로컬 머신으로 복사합니다.

    docker cp es01:/usr/share/elasticsearch/config/certs/http_ca.crt .
    		
  8. Elasticsearch에 REST API를 호출하여 Elasticsearch 컨테이너가 실행 중인지 확인합니다.

    curl --cacert http_ca.crt -u elastic:$ELASTIC_PASSWORD https://localhost:9200
    		

  1. 기존 노드를 사용하여 새 노드의 등록 토큰을 생성합니다.

    docker exec -it es01 /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s node
    		

    등록 토큰은 30분 동안 유효합니다.

  2. 새 Elasticsearch 컨테이너를 시작합니다. 등록 토큰을 환경 변수로 포함하세요.

    docker run -e ENROLLMENT_TOKEN="<token>" --name es02 --net elastic -it -m 1GB docker.elastic.co/elasticsearch/elasticsearch:9.5.1
    		

    앞서 가져온 Docker 이미지와 동일한 Elastic Stack 버전 번호를 사용하여 <SPECIFIC.VERSION.NUMBER>를 해당 번호로 바꾸세요.

    docker run -e ENROLLMENT_TOKEN="<token>" --name es02 --net elastic -it -m 1GB docker.elastic.co/elasticsearch/elasticsearch:<SPECIFIC.VERSION.NUMBER>
    		
  3. cat nodes API를 호출하여 노드가 클러스터에 추가되었는지 확인합니다.

    curl --cacert http_ca.crt -u elastic:$ELASTIC_PASSWORD https://localhost:9200/_cat/nodes
    		

  1. Kibana Docker 이미지를 가져옵니다.

    docker pull docker.elastic.co/kibana/kibana:9.5.1
    		

    앞서 가져온 Docker 이미지와 동일한 Elastic Stack 버전 번호를 사용하여 <SPECIFIC.VERSION.NUMBER>를 해당 번호로 바꾸세요.

    docker pull docker.elastic.co/kibana/kibana:<SPECIFIC.VERSION.NUMBER>
    		
  2. 선택 사항: Kibana 이미지의 서명을 확인합니다.

    wget https://artifacts.elastic.co/cosign.pub
    cosign verify --key cosign.pub docker.elastic.co/kibana/kibana:9.5.1
    		

    앞서 가져온 Docker 이미지와 동일한 Elastic Stack 버전 번호를 사용하여 <SPECIFIC.VERSION.NUMBER>를 해당 번호로 바꾸세요.

    wget https://artifacts.elastic.co/cosign.pub
    cosign verify --key cosign.pub docker.elastic.co/kibana/kibana:<SPECIFIC.VERSION.NUMBER>
    		
  3. Kibana 컨테이너를 시작합니다.

    docker run --name kib01 --net elastic -p 5601:5601 docker.elastic.co/kibana/kibana:9.5.1
    		

    앞서 가져온 Docker 이미지와 동일한 Elastic Stack 버전 번호를 사용하여 <SPECIFIC.VERSION.NUMBER>를 해당 번호로 바꾸세요.

    docker run --name kib01 --net elastic -p 5601:5601 docker.elastic.co/kibana/kibana:<SPECIFIC.VERSION.NUMBER>
    		
  4. Kibana가 시작되면 고유하게 생성된 링크가 터미널에 출력됩니다. Kibana에 액세스하려면 웹 브라우저에서 이 링크를 여세요.

  5. 브라우저에서 Elasticsearch를 시작할 때 생성된 등록 토큰을 입력합니다.

    토큰을 다시 생성하려면 다음을 실행합니다.

    docker exec -it es01 /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s kibana
    		
  6. Elasticsearch를 시작할 때 생성된 비밀번호를 사용하여 elastic 사용자로 Kibana에 로그인합니다.

    비밀번호를 다시 생성하려면 다음을 실행합니다.

    docker exec -it es01 /usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic
    		

컨테이너와 해당 네트워크를 제거하려면 다음을 실행합니다.

# Remove the Elastic network
docker network rm elastic

# Remove Elasticsearch containers
docker rm es01
docker rm es02

# Remove the Kibana container
docker rm kib01
		

이제 테스트용 Elasticsearch 환경이 설정되었습니다. 본격적인 개발을 시작하거나 Elasticsearch를 프로덕션에 도입하기 전에 프로덕션 환경의 Docker에서 Elasticsearch를 실행할 때 적용해야 할 요구 사항 및 권장 사항을 검토하세요.