Docker /如何确定链接?

我希望使用以下dockerivankrizsan / elastalert 。 我安装了elasticsearch 5的docker(名字:elasticsearch)

在指南中,它说:要求使用“elasticsearchhost”别名链接到运行Elasticsearch的Docker容器。

所以我做了以下几点:

docker run --link "elasticsearch:elasticsearchhost" ivankrizsan/elastalert 

它说:

 docker: Error response from daemon: Conflicting options: host type networking can't be used with links. This would result in undefined behavior. 

当我删除该链接,并只运行:

 docker run ivankrizsan/elastalert 

它没有find弹性search端口(其循环本节:

 while ! wget -O garbage_file ${ELASTICSEARCH_HOST}:${ELASTICSEARCH_PORT} 2>/dev/null do echo "Waiting for Elasticsearch..." rm -f garbage_file sleep 1 done 

我做错了什么?

错误表示您在创buildelasticsearch容器时使用了–network = host。

我注意到的另一个问题是使用链接,链接容器是一个遗留function,正在被用户定义的networking取代。 用户定义的networking也将为您提供服务发现的内部DNS。

要解决该问题,请先停止并删除elasticsearch容器。

为您的客户创build一个用户定义的networking:

 sudo docker network create elastic 

启动elasticsearch容器:

 sudo docker run -d --name elasticsearchhost -p 9200:9200 -e "http.host=0.0.0.0" -e "transport.host=127.0.0.1" --network elastic docker.elastic.co/elasticsearch/elasticsearch:5.2.2 elasticsearch 

validationelasticsearch已启动:

 curl -XGET 'http://localhost:9200/' 

如果您启用了xpack,则需要提供用户名和密码:

 curl -u elastic:changeme -XGET 'http://localhost:9200/' 

弹性:默认用户名

changeme:默认密码

为了解决Waiting for Elasticsearch...你需要closures安全插件,或在elsatalert中设置用户名/密码。

要在elasticsearch中禁用安全authentication,请在/usr/share/elasticsearch/config/elasticsearch.yml添加以下行

 xpack.security.enabled: false 

并重新启动elasticsearch容器。

核实:

 curl -XGET 'http://localhost:9200/' 

启动ivankrizsan / elastalert容器:

 sudo docker run -d --name elastalert --network elastic -e ELASTICSEARCH_HOST=elasticsearchhost -e ELASTICSEARCH_PORT=9200 ivankrizsan/elastalert 

请通过-e开关注意环境variables。