Pasiekti pagrindinio kompiuterio tarpinį serverį iš Docker bridge konteinerio
Pasirinkite konteineriui pasiekiamą tarpinio serverio adresą ir atskirkite viešą galinį tašką nuo serverio Docker pagrindiniame kompiuteryje.
Įprastame bridge tinklo konteineryje 127.0.0.1 yra paties konteinerio kilpinės sąsajos adresas. Tarpinis serveris, klausantis nešiojamojo kompiuterio localhost adresu, automatiškai neklauso kiekvieno konteinerio viduje.
Tai paaiškina dažną skirtumą: tas pats tarpinio serverio URL veikia pagrindinio kompiuterio terminale, bet konteineryje ryšys atmetamas. Kiekvienoje vietoje adresas nurodo kitą tinklo galinį tašką.
Viešą tarpinį serverį galima naudoti tiesiogiai
Jei iš paslaugos ar HTTP tarpinių serverių sąrašo pasirinktas galinis taškas tikrai yra pasiekiamas viešas IP adresas, perduokite jį programai, užuot keitę į localhost:
docker run --rm \
-e HTTP_PROXY=http://203.0.113.10:8080 \
-e HTTPS_PROXY=http://203.0.113.10:8080 \
your-image
Pakeiskite dokumentacijos pavyzdžio adresą ir atvaizdą. Atvaizdo programa vis tiek turi palaikyti šiuos aplinkos kintamuosius; vien dėl jų buvimo Docker nepaverčia kiekvieno lizdo užklausa per tarpinį serverį.
Jei tarpinis serveris veikia Docker pagrindiniame kompiuteryje
Docker Desktop pateikia host.docker.internal vidiniam pagrindinio kompiuterio adresui pasiekti. Palaikomoje vietinio Engine sąrankoje šį įprastą vardą gali suteikti pagrindinio kompiuterio susiejimas:
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
Tai keičia vardų vertimą; tai nėra prievadų persiuntimo komanda. Vietiniame Linux tik prie pagrindinio kompiuterio kilpinio adreso susieta paslauga gali likti nepasiekiama per jo bridge adresą. Klausytuvas, užkarda ir konteinerio maršrutas turi leisti šį ryšį. Keisdami klausytuvą apribokite jį klientais, kuriems reikia prieigos, užuot sukūrę atvirą tarpinį serverį be tapatumo nustatymo.
Tikrinkite iš tos pačios vietos kaip programa
curl rezultatas pagrindiniame kompiuteryje patikrina tik jo maršrutą. Atitinkamą užklausą vykdykite iš konteinerio aplinkos ir patikrinkite, ar ji pasiekia numatytą galinį tašką.
„Pagrindinis kompiuteris“ taip pat reiškia mašiną, kurioje veikia Docker Engine. Naudojant nuotolinį Engine tai nebūtinai jūsų nešiojamasis kompiuteris. Todėl ypač mažai tikėtina, kad iš vietinės darbalaukio programos nukopijuotas kilpinis IP veiks nepakeistas nuotolinėje komponavimo mašinoje ar serveryje.
Atvaizdo atsisiuntimo problemas nagrinėkite atskirai: tarnyba atsisiunčia atvaizdą prieš programai galint naudoti pirmiau parodytą aplinką.