关于在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
有人知道为什么这是错误的吗?我该如何解决?
答案 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
您的本地主机应该可以通过两种方式解决