前言
elasticsearch的docker镜像已经不再由docker官方支持了,转由es官方支持,本文主要记录使用es官方docker镜像的过程。
参考Install Elasticsearch with Docker
安装镜像
安装镜像比较简单:
$> docker pull docker.elastic.co/elasticsearch/elasticsearch:5.6.3
等待下载完成即可,下载完成后,查看镜像:
$> docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.elastic.co/elasticsearch/elasticsearch 5.6.3 865b21b970de 13 days ago 657 MB (1)
nginx latest 1e5ab59102ce 2 weeks ago 108 MB
(1). 这个就是我们刚刚下载的镜像
运行镜像
es官方的docker支持开发模式运行和产品模式运行,这里用于开发,所以使用开发模式运行即可。
$> docker run --name myes -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:5.6.3
开发模式运行后,docker进程会占用当前终端,进行测试的话需要打开一个新的终端,输入:
$> curl -u elastic http://127.0.0.1:9200/_cat/health
Enter host password for user 'elastic':
1508837488 09:31:28 docker-cluster yellow 1 1 5 5 0 0 5 0 - 50.0%
这里需要输入密码,密码是changeme。
需要停止docker的话,在新的终端使用docker命令停止即可:
$> docker stop myes
注意: 这里的myes是前面启动镜像的时候使用的名字。 不能直接在启动docker的终端通过ctrl-c停止docker,会导致docker不能正常退出,占用端口,目前还不知道是什么原因导致的。
安全
docker镜像中的es默认安装了X-Pack,并且内置了一个用户:
elastic:changeme
由于X-Pack是有license要求的,只有30天的试用时间,到期后我们可以考虑把X-Pack去掉。
首先运行docker容器:
$> docker run --name myes -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:5.6.3
然后进入docker容器内部查看配置:
$> docker exec -it myes bash
[elasticsearch@fd5593b673dc ~]$
查看es的配置:
$> cat /usr/share/elasticsearch/config/elasticssearch.yml
cluster.name: "docker-cluster"
network.host: 0.0.0.0
# minimum_master_nodes need to be explicitly set when bound on a public IP
# set to 1 to allow single node clusters
# Details: https://github.com/elastic/elasticsearch/pull/17288
discovery.zen.minimum_master_nodes: 1
把配置复制出来,在主机上保存一份用于修改。
$> vim /root/es.yaml
cluster.name: "docker-cluster"
network.host: 0.0.0.0
# minimum_master_nodes need to be explicitly set when bound on a public IP
# set to 1 to allow single node clusters
# Details: https://github.com/elastic/elasticsearch/pull/17288
discovery.zen.minimum_master_nodes: 1
xpack.security.enabled: false # 增加这个配置
保存退出。
现在删除已经运行的容器:
$> docker rm -f myes
运行新容器并指定配置覆盖:
$> docker run --name myes -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -v /root/es.yaml:/usr/share/elasticsearch/config/elasticsearch.yml docker.elastic.co/elasticsearch/elasticsearch:5.6.3
这样启动的容器中就禁用掉X-Pack了。