我通过以下命令部署Elasticsearch的2个容器:
docker run --network host -p 9201:9200 -p 9301:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:6.8.1
docker run --network host -p 9202:9200 -p 9302:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:6.8.1
当我尝试从其中一个容器运行下一个命令时
curl localhost:${PORT_OF_THER_OTHER_CONTAINER}
我得到下一个错误
curl: (7) Failed connect to localhost:PORT_OF_THER_OTHER_CONTAINER; Connection refused
您需要在两个ES容器中使用bridge
网络,以便它们能够发现彼此,然后使用内部端口,以便使用curl
连接到另一个容器。
- 创建名为
my-bridge-network
的网桥网络
docker network create -d bridge my-bridge-network
- 使用上面创建的
my-bridge-network
和docker运行命令中的自定义名称
docker run --network my-bridge --name es1 -p 9201:9200 -p 9301:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:6.8.1
现在,在进入容器onedocker exec -it <container-id> /bin/bash
之后,将curl命令作为curl es1:9200
运行,这将给出正确的输出。
{
"name" : "vwdvbT9",
"cluster_name" : "docker-cluster",
"cluster_uuid" : "dwMh_zK6RmO_VeeoDQXuTg",
"version" : {
"number" : "6.8.1",
"build_flavor" : "default",
"build_type" : "docker",
"build_hash" : "1fad4e1",
"build_date" : "2019-06-18T13:16:52.517138Z",
"build_snapshot" : false,
"lucene_version" : "7.7.0",
"minimum_wire_compatibility_version" : "5.6.0",
"minimum_index_compatibility_version" : "5.0.0"
},
"tagline" : "You Know, for Search"
}```