1. 터미널에서 Docker Pull 명령어로 elasticsearch 버전 8.6.0 Install
2. Docker Network 생성
3. elastic search 실행
4. elastic search 비밀번호 초기화
5. elastic search 인증서 로컬로 복제
6. elastic search 접속 인증
7. elastic search 확인
8. kibana 설치
도커에서 터미널에서 elastic search를 install 해줍니다.
$ docker pull docker.elastic.co/elasticsearch/elasticsearch:8.6.0
$ docker pull docker.elastic.co/kibana/kibana:8.6.0
도커에서 새로운 네트워크를 생성해줍니다.
이 네트워크를 통해 나중에 컨테이너끼리 통신을 할 수 있습니다.(kibana와 통신)
$ docker network create elastic
docker에서 elastic search를 실행해줍니다.
docker run --name es01 --net elastic -p 9200:9200 -it docker.elastic.co/elasticsearch/elasticsearch:8.6.0
저는 도커로 elastic search를 실행 했더니 에러가 발생했습니다.
ERROR: Elasticsearch did not exit normally - check the logs at /usr/share/elasticsearch/logs/docker-cluster.log
....생략....
....생략....
ERROR: [1] bootstrap checks failed. You must address the points described in the following [1] lines before starting Elasticsearch.
로그를 확인해봤더니 최소로 사용 가능한 가상 메모리 영역이 작아서 에러가 발생한 에러였습니다.
엘라스틱 공식 홈페이지에 가서 해결 방안을 찾았습니다. 홈페이지
아래 명령어를 통해 vm memory를 늘려줬습니다.
docker-machine ssh
sudo sysctl -w vm.max_map_count=262144
elastic search의 비밀번호를 만약 까먹는다면 아래 명령어를 통해 비밀번호를 찾을 수 있습니다.
docker exec -it es01 /usr/share/elasticsearch/bin/elasticsearch -reset -password -u elastic
elastic search는 이제 인증서가 필수이기 때문에 인증서를 설치된 도커 폴더에서 가져와야합니다.
docker cp es01:/usr/share/elasticsearch/config/certs/http_ca.crt /elasticsearch/
로컬에 잘 저장된 것을 확인 할 수 있습니다.
저는 테스트 용으로 사용하기 때문에 --insecure를 사용하여 인증서 없이 사용하겠습니다.
docker exec -it es01 curl --insecure --cacert /usr/share/elasticsearch/config/certs/http_ca.crt -u elastic https://localhost:9200
접속인증 완료
이제 엘라스틱 서치가 완벽하게 설치가 되었는지 확인해보기 위해 조회를 해보겠습니다.
docker exec -it es01 curl --insecure -u elastic -X GET "https://localhost:9200/_cluster/health?pretty"
조회 결과
docker run --name kib01 --net elastic -p 5601:5601 docker.elastic.co/kibana/kibana:8.6.0
elastic search 컨테이너에서 Enrollment token을 가져와야합니다.
docker exec -it es01 /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s kibana
Enrollment token 입력
보안코드는 위 '실행완료' code의 매개변수를 넣어주면 됩니다.
여기서 Username은 elastic이며 Password는 elastic search 비밀번호 초기화를 해서 얻은 비밀번호입니다.