Dostęp do proxy hosta z kontenera Docker w sieci bridge
Wybierz adres proxy osiągalny z kontenera i odróżnij publiczny punkt od proxy działającego na hoście Dockera.
W zwykłym kontenerze w sieci bridge 127.0.0.1 to loopback samego kontenera. Proxy nasłuchujące na localhost laptopa nie nasłuchuje automatycznie w każdym kontenerze.
To wyjaśnia częsty rozdźwięk: ten sam URL proxy działa w terminalu hosta, ale w kontenerze daje odmowę połączenia. Adres wskazuje w każdym miejscu inny punkt sieciowy.
Publicznego proxy można użyć bezpośrednio
Jeżeli punkt z usługi lub listy proxy HTTP jest faktycznie osiągalnym publicznym IP, przekaż ten adres aplikacji, zamiast zamieniać go na localhost:
docker run --rm \
-e HTTP_PROXY=http://203.0.113.10:8080 \
-e HTTPS_PROXY=http://203.0.113.10:8080 \
your-image
Zastąp adres dokumentacyjny i obraz. Program w obrazie nadal musi obsługiwać te zmienne środowiskowe; Docker nie zamienia każdego gniazda w żądanie proxy tylko dlatego, że zmienne istnieją.
Jeżeli proxy działa na hoście Dockera
Docker Desktop udostępnia host.docker.internal do dostępu do wewnętrznego adresu hosta. W obsługiwanej natywnej konfiguracji Engine mapowanie hosta może dostarczyć tę zwyczajową nazwę:
docker run --rm \
--add-host host.docker.internal=host-gateway \
-e HTTP_PROXY=http://host.docker.internal:8080 \
-e HTTPS_PROXY=http://host.docker.internal:8080 \
your-image
To zmienia rozwiązywanie nazw, nie jest poleceniem przekazywania portu. W natywnym Linuksie usługa związana tylko z loopbackiem hosta może nadal być nieosiągalna przez jego adres bridge. Nasłuch, zapora i trasa kontenera muszą zezwolić na połączenie. Zmieniając nasłuch, ogranicz go do potrzebnych klientów zamiast tworzyć otwarte proxy bez uwierzytelniania.
Testuj z tego samego miejsca co aplikacja
Wynik curl na hoście sprawdza tylko trasę hosta. Wyślij właściwe żądanie z kontenera i sprawdź, czy dociera do zamierzonego punktu.
„Host” to także maszyna z uruchomionym Docker Engine. Przy zdalnym Engine nie musi to być laptop. Loopback IP skopiowane z lokalnej aplikacji ma więc szczególnie małe szanse działać bez zmian na zdalnym builderze lub serwerze.
Oddziel problemy pobierania obrazu: daemon pobiera obraz, zanim aplikacja może użyć powyższego środowiska.