📌 사전 준비
- ✅ Docker 및 Docker Compose 설치 완료
- ✅ 최소 4GB 이상의 메모리 확보 (Elasticsearch는 JVM 기반이라 메모리 소모가 큼)
- ✅ Elasticsearch & Kibana 버전은 8.x 이상 기준 (8.12.2 사용 예시)
1️⃣ 도커 네트워크 생성
Elasticsearch와 Kibana 컨테이너가 동일 네트워크 상에서 통신할 수 있도록 브리지 네트워크를 생성합니다.
docker network create es-net
2️⃣ Elasticsearch 컨테이너 실행 (보안 기능 활성화 + SSL 비활성화)
docker run -d --name es01 \
--net es-net \
-p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-e "xpack.security.enabled=true" \
-e "xpack.security.http.ssl.enabled=false" \
-e "ELASTIC_PASSWORD=changeme" \
docker.elastic.co/elasticsearch/elasticsearch:8.12.2
xpack.security.enabled=true
: 인증/인가 기능 활성화
xpack.security.http.ssl.enabled=false
: HTTP 레벨 SSL 인증 제거 (개발 환경에서는 생략 가능)
ELASTIC_PASSWORD
: 기본elastic
계정의 초기 비밀번호
🔐 이 설정으로 Elasticsearch는 비밀번호 기반 인증이 필요하며, HTTPS 없이도 접근 가능하게 됩니다.
3️⃣ elastic 사용자 비밀번호 초기화 (i
옵션 사용)
비밀번호를 명령어로 직접 입력하고자 할 때 -i
옵션을 사용합니다:
docker exec -it es01 bin/elasticsearch-reset-password -u elastic -i
원하는 비밀번호를 입력하면 elastic 사용자의 비밀번호가 재설정됩니다.
4️⃣ Kibana 컨테이너 실행 및 연동 설정
Kibana는 Elasticsearch에 접속할 계정 정보가 필요하며, 내부적으로 kibana_system
계정을 사용합니다.
docker run -d --name kibana01 \
--net es-net \
-p 5601:5601 \
-e "ELASTICSEARCH_HOSTS=http://es01:9200" \
docker.elastic.co/kibana/kibana:8.12.2
🔐 kibana_system
사용자 비밀번호 초기화
ocker exec -it es01 bin/elasticsearch-reset-password -u kibana_system -i
이후 kibana.yml에서 해당 비밀번호를 등록해줘야 Kibana가 정상 작동합니다.
5️⃣ kibana.yml 수정 방법 (docker container 내부 or 커스텀 방식)
Kibana 설정 파일인 kibana.yml
을 직접 수정해야 할 경우가 있습니다. 다음 2가지 방법 중 선택할 수 있습니다:
✅ 방법 1: 컨테이너 내부 진입 후 직접 수정
docker exec -it kibana01 /bin/bash
vi /usr/share/kibana/config/kibana.yml
추가할 설정 예시:
server.name: kibana
server.host: "0"
elasticsearch.hosts: ["http://es01:9200"]
elasticsearch.username: "kibana_system"
elasticsearch.password: "your-kibana-password"
변경 후에는 컨테이너를 재시작해야 설정이 반영됩니다.
docker restart kibana01
✅ 방법 2: docker-compose
또는 v
옵션으로 설정 마운트
-v ./kibana.yml:/usr/share/kibana/config/kibana.yml
혹은 docker-compose.yml 구성 시:
services:
kibana:
image: docker.elastic.co/kibana/kibana:8.12.2
ports:
- "5601:5601"
environment:
- ELASTICSEARCH_HOSTS=http://es01:9200
volumes:
- ./kibana.yml:/usr/share/kibana/config/kibana.yml
networks:
- es-net
6️⃣ Elasticsearch 접속 확인
브라우저 또는 Postman에서 다음 URL로 접근:
http://localhost:9200
Basic Auth 설정
- ID:
elastic
- PW: (3단계에서 설정한 비밀번호)
예시 응답:
{
"name": "es01",
"cluster_name": "docker-cluster",
"version": {
"number": "8.12.2"
},
...
}
7️⃣ Kibana 접속 확인
브라우저에서 Kibana 접속:
http://localhost:5601
- 로그인 ID:
elastic
- PW: (설정한 비밀번호)
로그인 시 Kibana 기본 셋업 마법사가 나타납니다.
✅ 비밀번호가 먹히지 않거나 인증 오류가 발생할 때
컨테이너 상태에 따라 .security
인덱스 캐시 문제가 발생할 수 있습니다. 이 경우에는 아래 명령어로 인덱스를 제거하고 다시 설정합니다:
DELETE /.security-7
⚠️ 단, 이 작업은 모든 사용자 정보 및 보안 구성을 초기화하므로 운영 환경에서는 절대 사용 금지입니다.
📊 전체 구성 요약
구성 요소 | 컨테이너 이름 | 포트 | 인증 계정 | 네트워크 |
Elasticsearch | es01 | 9200, 9300 | elastic 사용자 | es-net |
Kibana | kibana01 | 5601 | kibana_system 사용자 | es-net |