我有两个容器。其中一个是我的应用程序,另一个是ElasticSearch-5.5.3。我的应用程序需要连接到ES容器。但是,我总是得到"连接被拒绝"
我使用静态端口运行我的应用程序:
docker run -i -p 9000:9000 .....
我使用静态端口运行ES:
docker run -i -p 9200:9200 .....
如何连接它们?
答案 0 :(得分:0)
您需要使用--links
使用名称es
-
$ docker run --name es -d -p 9200:9200 .....
使用--links
-
$ docker run --name app --links es:es -d -p 9000:9000 .....
这就是全部。您应该能够从应用程序容器es
访问主机名为app
的ES容器。
从应用程序容器内部尝试 - curl -I http://es:9200/
&您应该能够访问在es
容器中运行的ES服务。
答案 1 :(得分:0)
我建议使用以下方法之一:
1)使用docker links
将您的容器链接在一起。
2)使用docker-compose
来运行容器。
解决方案1被视为已弃用,但可能更容易上手。
首先,运行您的elasticsearch容器,使用--name=<your chosen name>
标志为其命名。
然后,运行您的应用程序容器添加--link <your chosen name>:<your chosen name>
。
然后,您可以使用<your chosen name>
作为主机名从应用程序连接到弹性搜索。
答案 2 :(得分:0)
您的容器上是否设置了--network
?如果它们都在同一--network
,它们可以通过该网络相互通信。因此,在下面的示例中,myapplication
容器会在其连接字符串中引用http://elasticsearch:9200
以发布到Elasticsearch。
docker run --name elasticsearch -p 9200:9200 --network=my_network -d elasticsearch:5.5.3
docker run --name myapplication --network=my_network -d myapplication
在此处详细了解Docker网络:https://docs.docker.com/engine/userguide/networking/