Docker에서 Elasticsearch + Kibana를 움직여 보았습니다.

※이쪽의 기사는 개인 블로그 에 이행했습니다.
Docker Hub에 Elasticsearch와 Kibana의 공식 이미지가 있기 때문에 그것을 사용해 보았습니다.
여기의 README에 다음이 포함되었습니다.

This is the Git repo of the Docker Hub image for Elasticsearch. See the Docker Hub page for the full readme on how to use this Docker image and for information regarding contributing and issues. The Docker Hub image is not prepared in collaboration with nor supported by upstream Elastic which provides its own official image.

Elastic사가 독자적으로 제공하는 이미지가 공식 같기 때문에 그쪽으로 변경합니다.

전제


Docker 실행 환경이 있어야합니다.
Docker의 실행 환경 구축은 여러 사람이 쓰고 있기 때문에 할애합니다.
참고로 이 환경은 Mac OS X + VirtualBox + docker-machine입니다.
※Docker for Mac을 도입했을 때, 이 순서라고 미묘한 곳이 있었으므로 수정했습니다. 그런 다음 사용하는 컨테이너 버전을 5.0.0으로 변경했습니다. (2016/11/4)
Elastic이 게시한 레지스트리를 참조하도록 변경하고 버전을 5.4.1로 변경했습니다. 또한 레거시 링크 기능의 사용을 중지하고 Bridge 네트워크를 이용하도록 변경했습니다. (2017/6/3)

절차


컨테이너 실행 환경 확인


※Docker for Mac 등 로컬에 Docker 환경이 있는 경우는 불필요
$ docker-machine env test-machine
export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://192.168.99.100:2376"
export DOCKER_CERT_PATH="/Users/tsukapah/.docker/machine/machines/test-machine"
export DOCKER_MACHINE_NAME="test-machine"
# Run this command to configure your shell:
# eval "$(docker-machine env test-machine)"

Bridge 네트워크 만들기

$ docker network create elasticsearch --driver bridge
1c00368f055cd86e40da5db8b9e41211abc2821763b604a2583c054c6ecbcb22

Elasticsearch 컨테이너 시작

$ docker run -d \
	-e "http.host=0.0.0.0" \
	-e "transport.host=127.0.0.1" \
	-e "xpack.security.enabled=false" \
	-e "xpack.monitoring.enabled=false" \
	-e "xpack.watcher.enabled=false" \
	-e "xpack.graph.enabled=false" \
	-e "xpack.ml.enabled=false" \
	-e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \
	-p 9200:9200 \
	-p 9300:9300 \
	--name elasticsearch \
	--network="elasticsearch" \
	docker.elastic.co/elasticsearch/elasticsearch:5.4.1
931bceaa78bf8129c59989116dc1aa2698382315246a5635b06b9b787e5c1f77

Elasticsearch 동작 확인

$ curl $(docker-machine ip test-machine):9200
{
  "name" : "6Y9ph9_",
  "cluster_name" : "docker-cluster",
  "cluster_uuid" : "IWB-HjK9Q3-x5OS6Fh4rPg",
  "version" : {
    "number" : "5.4.1",
    "build_hash" : "2cfe0df",
    "build_date" : "2017-05-29T16:05:51.443Z",
    "build_snapshot" : false,
    "lucene_version" : "6.5.1"
  },
  "tagline" : "You Know, for Search"
}
※Docker for Mac등의 경우는 수신처는 localhost:9200이 됩니다.

Kibana 컨테이너 시작

$ docker run -d \
	--name kibana \
	-p 5601:5601 \
	-e "ELASTICSEARCH_URL=http://elasticsearch:9200" \
	-e "xpack.graph.enabled=false" \
	-e "xpack.security.enabled=false" \
	-e "xpack.ml.enabled=false" \
	--network="elasticsearch" \
	docker.elastic.co/kibana/kibana:5.4.1
81db2e8f947ae24ef1cb50dbabc6b13e0fe62233c36a2c47de725fe048152457

Kibana에 연결해보십시오.

$ open http://$(docker-machine ip test-machine):5601
※Docker for Mac등의 경우는 수신처는 localhost:5601이 됩니다.
이런 식으로 에러가 나오지 않고 초기 화면이 표시되면 성공.

나머지는 이미 좋아하는 것처럼 데이터를 Elasticsearch에 던져 버립니다.
X-Pack의 Security를 ​​false로 하고 있으므로 인증 없이 데이터를 투입할 수 있습니다.

잡감


지금까지 EC2에서 가챠가챠하고 있었던 것을 생각하면, 매우 간단했습니다.
한 번 docker pull로 이미지 수중에 가지고 버리면 인터넷에 연결되어 있지 않아도 여러가지 시도해 기쁘네요.
Elasticsearch + Docker에 대해서는 클러스터명의 변경이라든지 클러스터링이라든지 데이터 영속화등을 맛보려고 생각합니다.
Kibana는 Elasticsearch의 버전 의존이 강하기 때문에, 최신의 이미지를 사용하지 않는 경우는 버전 관리를 조심하는 편이 좋을 것 같네요. Docker Compose를 이용하여 코드로 관리할 수 있다고 생각합니다.
클러스터링에 대해 썼습니다.

좋은 웹페이지 즐겨찾기