错误的配置:
docker run -d --network=host --privileged=true -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -e TAKE_FILE_OWNERSHIP=true --name es-node1 -v /dockerdata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /dockerdata/elasticsearch/data:/usr/share/elasticsearch/data -v /dockerdata/elasticsearch/logs:/usr/share/elasticsearch/logs -v /dockerdata/elasticsearch/plugins:/usr/share/elasticsearch/plugins elasticsearch:7.3.0
原因:由于 --netword=host配置将容器共享宿主机网络配置(端口也会自动配置),所以容器不会分配独立的ip
docker inspect -f '{{.Name}} - {{.NetworkSettings.IPAddress }}' $(docker ps -aq)
输入上面命令即可以看出,es的ip是空的,而logstash连接 es又需要其容器内部有对应的ip,所以应该为正确的配置:
docker run -d -p 9200:9200 -p 9300:9300 --privileged=true -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -e TAKE_FILE_OWNERSHIP=true --name es-node1 -v /dockerdata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /dockerdata/elasticsearch/data:/usr/share/elasticsearch/data -v /dockerdata/elasticsearch/logs:/usr/share/elasticsearch/logs -v /dockerdata/elasticsearch/plugins:/usr/share/elasticsearch/plugins elasticsearch:7.3.0
再次启动,观察logstash日志,就成功了