为什么docker上的ElasticSearch拒绝与另一个docker容器连接,但没有';别拒绝
如下图所示,当我尝试curl localhost(也从浏览器)时,我可以找到我的本地docker,公开一个elasticsearch端口,但当我尝试从另一个容器连接时,它失败了。我从两个容器(curl和另一个容器)中都读到了几个有相同问题(连接被拒绝)的问题,但在我的例子中,我只有来自另一个容器的问题为什么docker上的ElasticSearch拒绝与另一个docker容器连接,但没有';别拒绝,docker,
elasticsearch,Docker,
elasticsearch,如下图所示,当我尝试curl localhost(也从浏览器)时,我可以找到我的本地docker,公开一个elasticsearch端口,但当我尝试从另一个容器连接时,它失败了。我从两个容器(curl和另一个容器)中都读到了几个有相同问题(连接被拒绝)的问题,但在我的例子中,我只有来自另一个容器的问题 C:\Dockers\megalog-try-1>docker run docker.elastic.co/beats/filebeat:7.5.2 setup -E setup.kiban
C:\Dockers\megalog-try-1>docker run docker.elastic.co/beats/filebeat:7.5.2 setup -E setup.kibana.host=localhost:5601 -E output.elasticsearch.hosts=["localhost:9200"]
Exiting: Couldn't connect to any of the configured Elasticsearch hosts. Errors: [Error connection to Elasticsearch http://localhost:9200: Get http://localhost:9200: dial tcp [::1]:9200: connect: cannot assign requested address]
C:\Dockers\megalog-try-1>curl localhost:9200
{
"name" : "f225ebd4879e",
"cluster_name" : "docker-cluster",
"cluster_uuid" : "YyfW8X5DRt2RTacNYlZ3jA",
"version" : {
"number" : "7.5.2",
"build_flavor" : "default",
"build_type" : "docker",
"build_hash" : "8bec50e1e0ad29dad5653712cf3bb580cd1afcdf",
"build_date" : "2020-01-15T12:11:52.313576Z",
"build_snapshot" : false,
"lucene_version" : "8.3.0",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
C:\Dockers\megalog-try-1>docker-compose ps
Name Command State Ports
---------------------------------------------------------------------------------------------------------------------------------
megalog-try-1_elasticsearch_1 /usr/local/bin/docker-entr ... Up 0.0.0.0:9200->9200/tcp, 9300/tcp
megalog-try-1_filebeat_1 /usr/local/bin/docker-entr ... Up
megalog-try-1_kafka1_1 /etc/confluent/docker/run Up 0.0.0.0:9092->9092/tcp
megalog-try-1_kafka2_1 /etc/confluent/docker/run Up 0.0.0.0:9093->9092/tcp
megalog-try-1_kafka3_1 /etc/confluent/docker/run Up 0.0.0.0:9094->9092/tcp
megalog-try-1_kibana_1 /usr/local/bin/dumb-init - ... Up 0.0.0.0:5601->5601/tcp
megalog-try-1_logstash_1 /usr/local/bin/docker-entr ... Up 5044/tcp, 0.0.0.0:7777->7777/tcp, 0.0.0.0:9600->9600/tcp
megalog-try-1_zoo1_1 /etc/confluent/docker/run Up 0.0.0.0:2181->2181/tcp, 2888/tcp, 3888/tcp
megalog-try-1_zoo2_1 /etc/confluent/docker/run Up 0.0.0.0:2182->2181/tcp, 2888/tcp, 3888/tcp
megalog-try-1_zoo3_1 /etc/confluent/docker/run Up 0.0.0.0:2183->2181/tcp, 2888/tcp, 3888/tcp
C:\Dockers\megalog-try-1>
***编辑1
C:\Dockers\megalog-try-1>docker run -it docker.elastic.co/beats/filebeat:7.5.2 setup -E setup.kibana.host=192.168.44.209:5601 -E output.elasticsearch.hosts=["192.168.44.209:9200"] bash
Exiting: 503 Service Unavailable: {"error":{"root_cause":[{"type":"failed_to_commit_cluster_state_exception","reason":"publication failed"}],"type":"master_not_discovered_exception","reason":"FailedToCommitClusterStateException[publication failed]; nested: AlreadyClosedException[Underlying file changed by an external force at 1970-01-01T00:00:00Z, (lock=NativeFSLock(path=/usr/share/elasticsearch/data/nodes/0/node.lock,impl=sun.nio.ch.FileLockImpl[0:9223372036854775807 exclusive valid],creationTime=2020-02-06T19:25:40.498294Z))];","caused_by":{"type":"failed_to_commit_cluster_state_exception","reason":"publication failed","caused_by":{"type":"already_closed_exception","reason":"Underlying file changed by an external force at 1970-01-01T00:00:00Z, (lock=NativeFSLock(path=/usr/share/elasticsearch/data/nodes/0/node.lock,impl=sun.nio.ch.FileLockImpl[0:9223372036854775807 exclusive valid],creationTime=2020-02-06T19:25:40.498294Z))"}}},"status":503}
C:\Dockers\megalog-try-1>docker run docker.elastic.co/beats/filebeat:7.5.2 setup -E setup.kibana.host=192.168.44.209:5601 -E output.elasticsearch.hosts=["192.168.44.209:9200"]
Exiting: 503 Service Unavailable: {"error":{"root_cause":[{"type":"master_not_discovered_exception","reason":null}],"type":"master_not_discovered_exception","reason":null},"status":503}
C:\Dockers\megalog-try-1>
Docker创建的容器是自包含单元,在虚拟交换机中具有自己的IP 通过绑定端口,您可以使docker(位于实际本地计算机上)将输入请求暴露(路由)到该虚拟网络中的特定容器的特定端口 当您启动第二个容器时,告诉它elasticsearch位于
localhost:9000
就是告诉它它实际上位于同一个容器(容器2)中,这是不正确的
您需要向第二个容器提供elasticsearch所在容器的ip(或者在这种情况下,您甚至可以在绑定端口时提供您机器的ip),但对于舒尔,您不能要求容器2连接到localhost
让我知道如何更清楚地回答这个问题。Docker创建的容器是自包含单元,在虚拟交换机中有自己的IP 通过绑定端口,您可以使docker(位于实际本地计算机上)将输入请求暴露(路由)到该虚拟网络中的特定容器的特定端口 当您启动第二个容器时,告诉它elasticsearch位于
localhost:9000
就是告诉它它实际上位于同一个容器(容器2)中,这是不正确的
您需要向第二个容器提供elasticsearch所在容器的ip(或者在这种情况下,您甚至可以在绑定端口时提供您机器的ip),但对于舒尔,您不能要求容器2连接到localhost
让我知道如何才能更清楚地回答这个问题。我得到了(lock=NativeFSLock)(path=/usr/share/elasticsearch/data/nodes/0/node.lock….我在上面添加了整个conlose日志,您尝试使用实际的容器IP,不熟悉
filebeat
,但它看起来似乎与elasticsearch纠缠在一起,因此它可能需要直接访问服务器,尝试通过外部主机连接可能会导致一些问题麻烦。请看,我按照您的链接建议,使用docker inspect获取当前elasticsearch和kibana ip。我仍然无法连接。以下是日志:C:\Dockers\megalog-try-1>docker run docker.elastic.co/beats/filebeat:7.5.2 setup-E setup.kibana.host=172.28.0.6:5601-E output.elasticsearch.hosts=[“172.28.0.2:9200”]正在退出:无法连接到任何已配置的Elasticsearch主机。错误:[错误连接到Elasticsearch:Get:net/http:request在等待连接时被取消(等待标头时超出Client.Timeout)]好吧,如果我使用我的笔记本电脑IP,我会前进。这是使用我的以太网适配器IP而不是docker inspect的IP的日志:C:\Dockers\megalog-try-1>docker run docker.elastic.co/beats/filebeat:7.5.2 setup-E setup.kibana.host=192.168.44.209:5601-E output.elasticsearch.hosts=[“192.168.44.209:9200”]索引设置完成。加载仪表板(Kibana必须运行且可访问)加载仪表板加载机器学习作业配置加载摄取管道C:\Dockers\megalog-try-1>我得到(lock=NativeFSLock(path=/usr/share/elasticsearch/data/nodes/0/node.lock….我在上面添加了整个conlose日志,您尝试使用实际的容器IP,不熟悉filebeat
,但它看起来似乎与elasticsearch纠缠在一起,因此它可能需要直接访问服务器,尝试通过外部主机连接可能会导致一些问题麻烦。请看,我按照您的链接建议,使用docker inspect获取当前elasticsearch和kibana ip。我仍然无法连接。以下是日志:C:\Dockers\megalog-try-1>docker run docker.elastic.co/beats/filebeat:7.5.2 setup-E setup.kibana.host=172.28.0.6:5601-E output.elasticsearch.hosts=[“172.28.0.2:9200”]正在退出:无法连接到任何已配置的Elasticsearch主机。错误:[错误连接到Elasticsearch:Get:net/http:request在等待连接时被取消(等待标头时超出Client.Timeout)]好吧,如果我使用我的笔记本电脑IP,我会前进。这是使用我的以太网适配器IP而不是docker inspect的IP的日志:C:\Dockers\megalog-try-1>docker run docker.elastic.co/beats/filebeat:7.5.2 setup-E setup.kibana.host=192.168.44.209:5601-E output.elasticsearch.hosts=[“192.168.44.209:9200”]索引设置完成。加载仪表板(Kibana必须运行且可访问)加载仪表板加载机器学习作业配置加载摄取管道C:\Dockers\megalog-try-1>