Docker /如何确定链接?

时间:2017-03-09 06:44:12

标签: elasticsearch docker

我希望使用以下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

我做错了什么?

1 个答案:

答案 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开关注意环境变量。