Přístup k proxy hostitele z Docker kontejneru v síti bridge
Vyberte adresu proxy dosažitelnou z kontejneru a rozlišujte veřejný bod od proxy běžící na hostiteli Dockeru.
V běžném kontejneru v síti bridge je 127.0.0.1 vlastní loopback adresa kontejneru. Proxy naslouchající na localhostu notebooku automaticky nenaslouchá uvnitř každého kontejneru.
To vysvětluje častý rozdíl: stejná URL proxy funguje v terminálu hostitele, ale v kontejneru je spojení odmítnuto. Adresa v každém místě označuje jiný síťový koncový bod.
Veřejnou proxy lze použít přímo
Je-li bod ze služby nebo seznamu HTTP proxy skutečně dosažitelnou veřejnou IP, předejte tuto adresu aplikaci místo změny 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
Nahraďte dokumentační adresu a obraz. Program v obrazu musí tyto proměnné prostředí podporovat; Docker nepřemění každý socket na požadavek přes proxy jen proto, že proměnné existují.
Pokud proxy běží na hostiteli Dockeru
Docker Desktop poskytuje host.docker.internal pro přístup k vnitřní adrese hostitele. V podporované nativní konfiguraci Engine může mapování hostitele poskytnout tento obvyklý název:
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 mění překlad názvů, není to příkaz pro předávání portů. V nativním Linuxu může služba vázaná jen na loopback hostitele zůstat nedosažitelná přes jeho bridge adresu. Listener, firewall i trasa kontejneru musí spojení povolit. Pokud listener měníte, omezte jej na potřebné klienty místo vytvoření otevřené proxy bez ověřování.
Testujte ze stejného místa jako aplikace
Výsledek curl na hostiteli testuje jen jeho trasu. Proveďte požadavek z prostředí kontejneru a ověřte, že dosáhne správného bodu.
„Hostitel“ také znamená počítač, na němž běží Docker Engine. U vzdáleného Engine to nemusí být notebook. Loopback IP z místní desktopové aplikace proto velmi pravděpodobně nebude beze změn fungovat na vzdáleném builderu či serveru.
Oddělte problémy stahování obrazu: démon stáhne obraz dříve, než aplikace může využít výše uvedené prostředí.