Запуск Toxiproxy в docker контейнерах с MacOS - PullRequest
0 голосов
/ 04 марта 2020

Очень базовый c вопрос о прокси внутри docker контейнеров в OSX: я использую контейнер 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 перенаправил трафик c из контейнера Elasticsearch: 9200 на локальный хост: 19200. Я настраиваю токсипрокси с помощью:

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 голосов
/ 04 марта 2020

Внутри контейнера токсипрокси localhost: 9200 не разрешается в контейнере es.

Это потому, что по умолчанию эти контейнеры подключены к сети по умолчанию. В сети по умолчанию localhost ссылается на localhost контейнера. Он не разрешается до локального хоста хост-машины (где работает docker -машина).

Вы можете использовать сеть хоста, добавив --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

Ваш локальный хост должен быть разрешен в обоих пути

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...