elasticsearch,Docker,elasticsearch" /> elasticsearch,Docker,elasticsearch" />

为什么docker上的ElasticSearch拒绝与另一个docker容器连接,但没有';别拒绝

为什么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

如下图所示,当我尝试curl localhost(也从浏览器)时,我可以找到我的本地docker,公开一个elasticsearch端口,但当我尝试从另一个容器连接时,它失败了。我从两个容器(curl和另一个容器)中都读到了几个有相同问题(连接被拒绝)的问题,但在我的例子中,我只有来自另一个容器的问题

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>