我希望使用以下docker ivankrizsan/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
它找不到elasticsearch端口(它循环本节:
while ! wget -O garbage_file ${ELASTICSEARCH_HOST}:${ELASTICSEARCH_PORT} 2>/dev/null
do
echo "Waiting for Elasticsearch..."
rm -f garbage_file
sleep 1
done
)
我做错了什么?
答案 0 :(得分:1)
该错误表示您在创建elasticsearch容器时使用了--network = host。
我注意到的另一个问题是使用链接,链接容器是一项遗留功能,正在被用户定义的网络所取代。用户定义的网络还将为您提供服务发现的内部DNS。
要解决问题,请先停止并删除elasticsearch容器。
为您的contianers创建一个用户定义的网络:
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
验证弹性搜索已启动:
curl -XGET 'http://localhost:9200/'
如果您启用了xpack,则需要提供用户名和密码:
curl -u elastic:changeme -XGET 'http://localhost:9200/'
弹性:默认用户名
changeme:默认密码
要修复Waiting for Elasticsearch...
,您需要禁用安全插件,或在elsatalert中设置用户名/密码。
要在elasticsearch中禁用安全身份验证,请在/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
开关注意环境变量。