Docker Compose를 사용하여 Kibana와 함께 Elasticsearch 7을 설치하는 방법

5286 단어 docker
이 자습서는 Docker Compose를 사용하여 Kibana로 단일 노드 Elasticsearch 클러스터를 설정하는 데 도움이 됩니다.

전제 조건


  • Docker 설치(설치되지 않은 경우 공식 문서 참조https://docs.docker.com/engine/install/)
  • Docker Compose 설치(설치되지 않은 경우 공식 문서 참조https://docs.docker.com/compose/install/)

  • 이 자습서에서는 사용자가 Docker 및 Docker Compose에 익숙하다고 가정합니다. 그렇지 않은 경우 Docker Compose( https://medium.com/swlh/simplifying-development-on-your-local-machine-using-docker-and-docker-compose-2b9ef31bdbe7?source=friends_link&sk=240efed3fd3a43a1779e7066edb37235 )를 사용한 일종의 단기 집중 과정인 이 기사를 참조할 수 있습니다.

    비디오 레슨



    또한 내 YouTube 채널에 이에 대한 비디오 자습서를 만들었습니다. 원하시는 분들은 아래 링크로 들어가셔서 확인해보세요

    1단계: docker-compose.yml 파일 생성



    이 프로젝트를 위해 컴퓨터에 디렉터리를 만듭니다.

    mkdir $HOME/elasticsearch7-docker
    cd $HOME/elasticsearch7-docker
    


    해당 디렉토리 안에 아래와 같이 내용이 포함된 docker-compose.yml 파일을 만듭니다.

    version: '3'
    services:
      elasticsearch:
        image: docker.elastic.co/elasticsearch/elasticsearch:7.9.2-amd64
        env_file:
          - elasticsearch.env
        volumes:
          - ./data/elasticsearch:/usr/share/elasticsearch/data
    
      kibana:
        image: docker.elastic.co/kibana/kibana:7.9.2
        env_file:
          - kibana.env
        ports:
          - 5601:5601
    
    


    2단계: env 파일 만들기



    Elasticsearch와 Kibana 도커 이미지 모두 elasticsearch.ymlkibana.yml 파일에 정의된 대로 구성에 전달되는 환경 변수를 전달할 수 있습니다. 컨테이너에 환경 변수를 전달하기 위해 docker compose 파일의 env_file 설정을 사용할 수 있습니다.
    elasticsearch.env 파일을 만듭니다.

    cluster.name=my-awesome-elasticsearch-cluster
    network.host=0.0.0.0
    bootstrap.memory_lock=true
    discovery.type=single-node
    


    참고: 최신 버전의 Elasticsearch에서는 단일 노드 클러스터에 대한 옵션discovery.type=single-node을 설정해야 합니다. 그렇지 않으면 시작되지 않습니다.
    kibana.env 파일 생성

    SERVER_HOST="0"
    ELASTICSEARCH_URL=http://elasticsearch:9200
    XPACK_SECURITY_ENABLED=false
    


    4단계: Elasticsearch 데이터 디렉터리 생성


    docker-compose.yml 파일을 생성한 디렉토리로 이동하여 하위 디렉토리data를 생성합니다. 그런 다음 data 디렉토리 안에 다른 디렉토리elasticsearch를 만듭니다.

    mkdir data
    cd data
    mkdir elasticsearch
    


    이 디렉토리를 elasticsearch 컨테이너의 데이터 디렉토리에 마운트합니다. docker-compose.yml 파일에는 다음 줄이 있습니다.

        volumes:
          - ./data/elasticsearch:/usr/share/elasticsearch/data
    


    이렇게 하면 컨테이너를 중지했다가 나중에 다시 시작해도 Elasticsearch 컨테이너의 데이터가 유지됩니다. 따라서 컨테이너를 다시 시작할 때 인덱스를 잃지 않습니다.

    4단계: 설정 실행



    이제 가도 됩니다. 터미널을 열고 docker-compose.yml 파일이 포함된 폴더로 이동하여 다음 명령을 실행합니다.

    docker-compose up -d
    


    docker.elastic.co에서 이미지를 가져오기 시작하고 인터넷 속도에 따라 시간이 걸립니다. 이미지를 가져오면 컨테이너가 시작됩니다.

    다음 명령을 실행하여 두 컨테이너가 모두 실행 중인지 확인할 수 있습니다.

    docker-compose ps
    


    출력은 다음과 같아야 합니다.

                    Name                              Command               State           Ports         
    ------------------------------------------------------------------------------------------------------
    docker-elasticsearch-setup_elasticsearch_1   /tini -- /usr/local/bin/do ...   Up      9200/tcp, 9300/tcp    
    docker-elasticsearch-setup_kibana_1          /usr/local/bin/dumb-init - ...   Up      0.0.0.0:5601->5601/tcp
    

    State 필드를 확인하십시오. 두 컨테이너 모두에 대해 Up여야 합니다. 그렇지 않은 경우 명령을 사용하여 로그를 확인합니다({serviceName}을 서비스 이름으로 바꿉니다(예: elasticsearch 또는 kibana).

    docker-compose logs -f {serviceName}
    


    발생할 수 있는 일반적인 오류는 vm.max_map_count가 너무 낮기 때문입니다. 명령을 실행하여 해결할 수 있습니다.

    sysctl -w vm.max_map_count=262144
    


    자세한 내용은 이 링크를 확인하십시오https://www.elastic.co/guide/en/elasticsearch/reference/current/vm-max-map-count.html

    두 서비스가 모두 제대로 실행되고 있다면 웹 브라우저의 http://localhost:5601에서 kibana 콘솔을 볼 수 있어야 합니다. Elasticsearch 클러스터가 준비되고 Kibana가 클러스터에 연결하는 데 시간이 걸리므로 몇 분 정도 기다리십시오. docker-compose logs -f kibana 명령을 사용하여 로그를 검사하면 더 많은 정보를 얻을 수 있습니다.


    이것으로 설정이 완료됩니다. 도움이 되셨기를 바랍니다. 즐거운 코딩하세요 :-)

    좋은 웹페이지 즐겨찾기