使用MacOS在Docker容器中运行Toxiproxy

时间:2020-03-04 11:38:29

标签: docker proxy

关于在OSX中的docker容器内部进行代理的非常基本的问题:我正在使用以下命令运行toxiproxy docker容器:

docker run --name proxy -p 8474:8474 -p 19200:19200 shopify/toxiproxy

和Elasticsearch容器:

docker run --name es -p 9200:9200 elasticsearch:6.8.6

我希望toxiproxy将流量从`Elasticsearch:9200容器重定向到localhost:19200。我用以下命令配置toxiproxy:

curl -XPOST "localhost:8474/proxies -d "{ \"name\": \"proxy_es\", \"listen\": \"0.0.0.0:19200\", \"upstream\": \"localhost:9200\", \"enabled\": true}"

现在,我希望:

curl -XGET localhost:19200/_cat

会让我指向Elasticsearch端点。但是得到:

curl: (52) Empty reply from server

有人知道为什么这是错误的吗?我该如何解决?

1 个答案:

答案 0 :(得分:0)

在toxiproxy容器内部,localhost:9200无法解析为es容器。

这是因为默认情况下,这些容器已连接到默认网络。在默认网络上,本地主机是指容器的本地主机。它不会解析为正在运行docker-machine的主机的本地主机。

您可以通过添加--net = host来使用主机网络,以使其正常工作。更好的方法是创建一个新网络,并运行该网络中的所有容器。

docker run --name proxy -p 8474:8474 -p 19200:19200 --net host shopify/toxiproxy

docker run --name es -p 9200:9200 --net host elasticsearch:6.8.6

您的本地主机应该可以通过两种方式解决

相关问题