U običnom kontejneru sa bridge mrežom 127.0.0.1 je sopstvena loopback adresa kontejnera. Proxy koji sluša na localhostu laptopa ne sluša automatski unutar svakog kontejnera.

To objašnjava čest različit ishod: isti proxy URL radi u terminalu hosta, ali u kontejneru veza bude odbijena. Adresa na svakom mestu označava drugu mrežnu krajnju tačku.

Javni proxy može da se koristi direktno

Ako je krajnja tačka iz usluge ili sa liste HTTP proxyja zaista dostupna javna IP adresa, prosledite tu adresu aplikaciji umesto da je menjate u localhost:

docker run --rm \
  -e HTTP_PROXY=http://203.0.113.10:8080 \
  -e HTTPS_PROXY=http://203.0.113.10:8080 \
  your-image

Zamenite dokumentacionu adresu i sliku. Program u slici i dalje mora da podržava te promenljive okruženja; Docker ne pretvara svaki socket u zahtev preko proxyja samo zato što promenljive postoje.

Ako proxy radi na Docker hostu

Docker Desktop daje host.docker.internal za pristup internoj adresi hosta. U podržanoj nativnoj Engine konfiguraciji mapiranje hosta može da obezbedi taj uobičajeni naziv:

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

Time se menja razrešavanje imena; to nije komanda za prosleđivanje portova. Na nativnom Linuxu usluga vezana samo za loopback hosta može ostati nedostupna preko bridge adrese hosta. Osluškivač, zaštitni zid i ruta kontejnera moraju dozvoliti vezu. Ako menjate osluškivač, ograničite pristup na klijente kojima je potreban umesto pravljenja otvorenog proxyja bez autentifikacije.

Testirajte sa istog mesta kao aplikacija

curl rezultat na hostu proverava samo rutu hosta. Pošaljite odgovarajući zahtev iz okruženja kontejnera i proverite da li stiže do željene krajnje tačke.

„Host“ takođe znači mašinu na kojoj radi Docker Engine. Kod udaljenog Enginea to nije nužno vaš laptop. Zato je posebno malo verovatno da će loopback IP kopiran iz lokalne desktop aplikacije raditi neizmenjen na udaljenom builderu ili serveru.

Odvojite probleme preuzimanja slike: daemon preuzima sliku pre nego što aplikacija može da koristi navedeno okruženje.

Povezani članci