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。