I have this simple setup: A Dockerfile:
FROM centos:latest
RUN yum update -y
RUN yum install -y epel-release
RUN yum install -y java-1.8.0-openjdk
RUN yum install -y curl
RUN mkdir /var/totest
EXPOSE 9200
EXPOSE 9300
在主机上,我有一个运行中的elasticsearch 5.4.2实例。
当我在主机上执行curl http://localhost:9200时,我会得到正确的回复:
{
"name" : "T8apV_J",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "YFkkaM8dSJCnXbDFRFD_aw",
"version" : {
"number" : "5.4.2",
"build_hash" : "929b078",
"build_date" : "2017-06-15T02:29:28.122Z",
"build_snapshot" : false,
"lucene_version" : "6.5.1"
},
"tagline" : "You Know, for Search"
}
但是,如果我构建了 Docker 镜像并运行它。
docker run -p 9200:9200 -it my-simple-image /bin/bash
我收到了这个错误:
docker: Error response from daemon: driver failed programming external connectivity on endpoint infallible_brown (71c6fae1275d149b2708a1aa9b737278d340c4e7b073d858b4222eb0268ef285): Error starting userland proxy: listen tcp 0.0.0.0:9200: bind: address already in use.
我该如何从Docker容器内部连接到运行Elasticsearch实例的主机?
我只需要能够在容器内部执行以下操作: