Как я могу сделать так, чтобы запрос, исходящий из контейнера докера, появлялся с моей локальной машины? - PullRequest
3 голосов
/ 05 апреля 2019

Браузер, работающий в контейнере Docker, должен создать POST для службы входа в систему, работающей на тестовом API в нашей сети. Служба очень требовательна к тому, откуда может появиться POST, поэтому она отклоняет POST, потому что она приходит от host.docker.internal вместо localhost.company.com.

Маловероятно, что я смогу добавить host.docker.internal в белый список.

POST будет работать нормально, если браузер работает на моем локальном компьютере, но не работает, когда браузер работает внутри контейнера на моем локальном компьютере.

Я пробовал docker run --add-host='localhost.mycompany.com:127.0.0.1' и docker run --add-host='localhost:127.0.0.1', ни один не работал. Последний кажется глупым; это был своего рода выстрел в темноте ...

Возможное дальнейшее осложнение: браузер работает в testcafe внутри контейнера Docker, поэтому мой запрос будет иметь заголовки, такие как 'Origin: http://172.17.0.2:1337' 'Referer: http://172.17.0.2:1337/WBrtZV38p/http://host.docker.internal:3000/app/'

Если не считать какого-либо прокси на моем локальном компьютере, есть ли способ сделать так, чтобы POST из контейнера Docker казался исходящим с моего локального компьютера?

1 Ответ

4 голосов
/ 05 апреля 2019

Начать контейнер в сетевом пространстве операционной системы с docker run --network host ... - контейнер будет работать в сети вашего локального компьютера напрямую.Но вы потеряете изоляцию контейнерной сети, поэтому вам следует проверить безопасность этого подхода.

Doc: https://docs.docker.com/network/host/

...