Docker 方式安装
原文链接 : https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html
译文链接 : http://apache.wiki/pages/editpage.action?pageId=4882734
贡献者 : @漫步
Docker 方式安装
Elasticsearch也可作为一个docker镜像来安装。该镜像是需要 X-Pack 来built
安全注意事项

X-Pack 被在此图像中预装。请花几分钟时间来熟悉的X-Pack安全和如何更改默认密码。为默认密码elastic用户changeme。

X-Pack 包括30天的试用许可证。在这之后,你可以得到一个可用的预订或停用安全。基本许可证是免费的,包括监控扩展。
获取Elasticsearch的码头工人是发出一个简单docker pull靠弹性泊坞窗注册表命令。
泊坞窗图像可以用下面的命令得到:
docker pull docker.elastic.co/elasticsearch/elasticsearch:5.0.1
在命令行中运行Elasticsearch
开发模式
Elasticsearch可以很快开始为开发或测试使用用下面的命令:
docker run -p 9200:9200 -e "http.host=0.0.0.0" -e "transport.host=127.0.0.1" docker.elastic.co/elasticsearch/elasticsearch:5.0.1
生产方式

vm_max_map_count内核设置需要被设置到至少262144用于生产。根据您的平台:
Linux
该
vm_map_max_count设置应永久在/etc/sysctl.conf中进行设置:$ grep的vm.max_map_count的/etc/sysctl.confvm.max_map_count = 262144
应用设置在实时系统类型:
sysctl -w vm.max_map_count=262144OSX with Docker for Mac
vm_max_map_count设置必须与xhyve虚拟机中进行设置:$ screen ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/tty
登录,没有密码。然后配置
sysctl设置:sysctl的-w vm.max_map_count = 262144
OSX with Docker Toolbox
vm_max_map_count设置必须通过泊坞窗机进行设置:
docker-machine sshsudo sysctl -w vm.max_map_count=262144
下面的例子带来了包括两个Elasticsearch节点的群集。要打开集群,使用docker-compose.yml和公正的类型:
docker-compose up

docker-compose没有预装泊坞窗上的Linux。说明安装它可以在找到泊坞窗,撰写网页。
节点elasticsearch1监听localhost:9200,而elasticsearch2谈判elasticsearch1在码头工人的网络。
这个例子还使用泊坞命名卷,被称为esdata1和esdata2将,如果不存在创建。
docker-compose.yml:
version: '2'services:elasticsearch1:image: docker.elastic.co/elasticsearch/elasticsearch:5.0.1container_name: elasticsearch1environment:- cluster.name=docker-cluster- bootstrap.memory_lock=true- "ES_JAVA_OPTS=-Xms512m -Xmx512m"ulimits:memlock:soft: -1hard: -1nofile:soft: 65536hard: 65536mem_limit: 1gcap_add:- IPC_LOCKvolumes:- esdata1:/usr/share/elasticsearch/dataports:- 9200:9200networks:- esnetelasticsearch2:image: docker.elastic.co/elasticsearch/elasticsearch:5.0.1environment:- cluster.name=docker-cluster- bootstrap.memory_lock=true- "ES_JAVA_OPTS=-Xms512m -Xmx512m"- "discovery.zen.ping.unicast.hosts=elasticsearch1"ulimits:memlock:soft: -1hard: -1nofile:soft: 65536hard: 65536mem_limit: 1gcap_add:- IPC_LOCKvolumes:- esdata2:/usr/share/elasticsearch/datanetworks:- esnetvolumes:esdata1:driver: localesdata2:driver: localnetworks:esnet:driver: bridge
要停止集群类型docker-compose down。数据量将继续存在,因此有可能使用相同的数据与重新开始集群docker-compose up。要销毁集群和数据量只需键入docker-compose down -v。
检查集群的现状
curl -u elastic http://127.0.0.1:9200/_cat/healthEnter host password for user 'elastic':1472225929 15:38:49 docker-cluster green 2 2 4 2 0 0 0 0 - 100.0%
将消息记录到控制台和配置多克尔记录驾驶员进行处理。默认情况下,你可以访问日志docker logs。
docker配置Elasticsearch
Elasticsearch从加载文件下它的配置/usr/share/elasticsearch/config/。这些配置文件都记录在配置Elasticsearch和设置JVM系统属性。
图像提供了多种方式与传统的方法是提供自定义的文件,即配置Elasticsearch设置elasticsearch.yml,但它也可以使用环境变量设置选项:
A.通过docker环境变量传递参数
例如,要定义与群集名称docker run可以传递-e "[cluster.name](http://cluster.name)=mynewclustername"。双引号是必需的。

有限定之间的差的默认设置和正常设置。前者的前缀default.并不能覆盖正常的设置,如果定义。
B.绑定安装配置
创建自定义配置文件并安装这个在图像上的相应文件。例如,绑定安装一个custom_elasticsearch.yml带有docker run可以通过参数来实现:
-v full_path_to / custom_elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml

custom_elasticsearch.yml 应该是可读的UID:GID 1000:1000
C.自定义图像
在某些环境中,它可能会更有意义,以制备含有配置的自定义图像。一个Dockerfile实现,这可能是简单的:
FROM docker.elastic.co/elasticsearch/elasticsearch:5.0.1ADD elasticsearch.yml /usr/share/elasticsearch/config/USER rootchown elasticsearch:elasticsearch config/elasticsearch.ymlUSER elasticsearch
然后,您可以建立并尝试与类似的图像:
docker build --tag=elasticsearch-custom .docker run -ti -v /usr/share/elasticsearch/data elasticsearch-custom
D.覆盖图像的默认CMD
选项可以作为命令行选项来Elasticsearch过程覆盖默认命令为图像传递。例如:
docker run <various parameters> bin/elasticsearch -Ecluster.name=mynewclustername
默认生产和使用的注意事项
我们收集了一些供生产使用的最佳实践。

以下提到的任何参数码头工人承担使用docker run。
经由多克尔CLI正确设置的功能和ulimits是重要的。正如前面的例子中看出docker-compose.yml,需要下列选项:
--cap-add=IPC_LOCK --ulimit memlock=-1:-1 --ulimit nofile=65536:65536
确保
bootstrap.memory_lock被设置为true如在“解释禁用交换 ”。这可以通过任何的实现的配置方法,例如,通过设置与适当的环境变量
-e "bootstrap.memory_lock=true"。形象暴露 TCP端口9200和9300。对于建议随机与发布的港口集群
--publish-all,除非你是钉住每个主机一个容器。- 使用
ES_JAVA_OPTS环境变量设置堆大小,如使用16GB的使用-e ES_JAVA_OPTS="-Xms16g -Xmx16g"与docker run。此外,还建议设置内存限制的容器。 - 固定您的部署到Elasticsearch多克尔图像的特定版本,例如
[docker.elastic.co/elasticsearch/elasticsearch:5.0.1](http://docker.elastic.co/elasticsearch/elasticsearch:5.0.1)。 总是使用上结合的体积
/usr/share/elasticsearch/data,如图中生产例子,原因如下:- 如果容器杀了你elasticsearch节点的数据也不会丢失
- Elasticsearch是I / O敏感和泊坞窗存储驱动程序是不理想的高速I / O
- 它可以利用先进的docker 容器插件
如果您使用的是devicemapper存储驱动程序(默认情况下至少红帽(RPM)的分布)确保你不使用默认
loop-lvm模式。配置泊坞窗引擎使用直接LVM来代替。请考虑使用不同的集中你的日志记录的驱动程序。还要注意的是默认的JSON文件记录的驱动程序并不适合用于生产。
下一步
现在,您有一个测试环境Elasticsearch成立。开始之前严重的发展或进入生产与Elasticsearch,你需要做一些额外的设置:
- 了解如何配置Elasticsearch。
- 配置重要Elasticsearch设置。
- 配置重要的系统设置。
