Tavallisessa bridge-verkon kontissa 127.0.0.1 on kontin oma loopback-osoite. Kannettavan localhostissa kuunteleva välityspalvelin ei automaattisesti kuuntele joka kontin sisällä.

Tämä selittää tavallisen eron: sama välityspalvelin-URL toimii isännän päätteessä mutta antaa kontissa yhteyden torjunnan. Osoite tarkoittaa kummassakin paikassa eri verkkopäätepistettä.

Julkista välityspalvelinta voi käyttää suoraan

Jos palvelusta tai HTTP-välityspalvelinluettelosta valittu päätepiste on todella tavoitettava julkinen IP, anna se sovellukselle äläkä muuta sitä localhostiksi:

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

Korvaa dokumentaatio-osoite ja levykuva. Levykuvan ohjelman on silti tuettava ympäristömuuttujia; Docker ei muuta jokaista socketia välityspalvelinpyynnöksi vain muuttujien olemassaolon vuoksi.

Jos välityspalvelin toimii Docker-isännällä

Docker Desktop tarjoaa host.docker.internal-nimen isännän sisäisen osoitteen tavoittamiseen. Tuetussa natiivissa Engine-kokoonpanossa isäntämääritys voi tarjota tämän vakiintuneen nimen:

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

Tämä muuttaa nimenselvitystä eikä ole porttien välityskomento. Natiivissa Linuxissa vain isännän loopbackiin sidottu palvelu voi yhä jäädä tavoittamatta isännän bridge-osoitteesta. Kuuntelijan, palomuurin ja kontin reitin täytyy sallia yhteys. Rajaa muutettu kuuntelija tarvittaviin asiakkaisiin äläkä luo avointa välityspalvelinta ilman todennusta.

Testaa sovelluksen omasta ympäristöstä

Isännän curl-tulos testaa vain isännän reitin. Tee pyyntö konttiympäristöstä ja tarkista, saavuttaako se tarkoitetun päätepisteen.

‘Isäntä’ tarkoittaa myös Docker Engineä suorittavaa konetta. Etä-Engineä käytettäessä se ei välttämättä ole kannettavasi. Paikallisesta työpöytäsovelluksesta kopioitu loopback-IP toimii siksi erityisen epätodennäköisesti sellaisenaan etärakentajassa tai palvelimessa.

Pidä levykuvan nouto-ongelmat erillään: taustapalvelu lataa levykuvan ennen kuin sovellus voi käyttää yllä olevaa ympäristöä.

Aiheeseen liittyvät artikkelit