Kaip nustatyti proxy Docker aplinkoje (konteineriai, Compose ir komponavimas)
Updated:
Paleidžiant kelių konteinerių duomenų rinkiklius, automatizavimo procesus ar DePIN mazgus viename pagrindiniame serveryje, perdavus HTTP_PROXY ir HTTPS_PROXY aplinkos kintamuosius kiekvienam konteineriui, kiekviena paslauga gali veikti per savo dedikuotą statinį IPv4 adresą iš VinaProxy nepakeičiant pagrindinio serverio maršrutizavimo lentelės.
ENV HTTP_PROXY=http://user:pass@ip:port HTTPS_PROXY=http://user:pass@ip:port- 1 IP40 000 VND
- Nuo 5 IP35 000 VND
- Nuo 10 IP25 000 VND
- Nuo 20 IP25 000 VND
- Nuo 50 IP25 000 VND
- Nuo 100 IP25 000 VND
- Nuo 200 IP25 000 VND
- Nuo 500 IP25 000 VND
- Nuo 1000 IP22 000 VND
- Nuo 2000 IP20 000 VND
- 1 IP40 000 VND
- Nuo 5 IP35 000 VND
- Nuo 10 IP25 000 VND
- Nuo 20 IP25 000 VND
- Nuo 50 IP25 000 VND
- Nuo 100 IP25 000 VND
- Nuo 200 IP25 000 VND
- Nuo 500 IP25 000 VND
- Nuo 1000 IP22 000 VND
- Nuo 2000 IP20 000 VND
3 Docker proxy konfigūravimo sričių supratimas
Docker atskiria konteinerio vykdymo laiko srautą, atvaizdžio kūrimo srautą ir tarnybos registrų užklausas:
| Docker sritis | Kur konfigūruoti | Ką nukreipia |
|---|---|---|
| 1. Konteinerio vykdymo laikas | docker run -e HTTP_PROXY=... arba Compose environment: | Programos, veikiančios tame konkrečiame konteineryje, generuojamas srautas |
2. Atvaizdžio kūrimas (docker build) | --build-arg HTTP_PROXY=http://user:pass@ip:port | Paketų tvarkyklės atsisiuntimai (apt, pip, npm) kūrimo metu |
3. Docker tarnyba (dockerd) | /etc/systemd/system/docker.service.d/http-proxy.conf | docker pull ir docker push užklausos į registrus |
Docker Compose geriausios praktikos ir NO_PROXY taisyklės
- Nurodykite tiek didžiosiomis (
HTTP_PROXY,HTTPS_PROXY,NO_PROXY), tiek mažosiomis (http_proxy,https_proxy,no_proxy) raidėmis parašytus kintamuosius, kad visi Linux CLI įrankiai ir programavimo kalbų vykdymo aplinkos juos atpažintų - Visada nurodykite vidinius Docker Compose paslaugų pavadinimus (pvz.,
NO_PROXY=localhost,127.0.0.1,redis,postgres), kad srautas tarp konteinerių liktų vietiniame tinklo tilto tinkle - Niekada neįrašykite proxy slaptažodžių į viešus atvaizdžius naudodami
ENVfaileDockerfile– perduokite juos vykdymo metu per.envarbadocker-compose.yml
Žingsnis po žingsnio
- 1
Suformatuokite savo proxy kaip http://user:pass@ip:port
Konvertuokite savo VinaProxy
ip:port:user:passeilutę naudodami mūsų proxy formato keitiklį. - 2
Pridėkite aplinkos kintamuosius į docker-compose.yml
Savo paslaugos skiltyje
environment:nurodykiteHTTP_PROXY,HTTPS_PROXY,http_proxy,https_proxyirNO_PROXY=localhost,127.0.0.1,redis,db. - 3
Paleiskite arba iš naujo sukurkite konteinerį
Paleiskite
docker compose up -d, kad pritaikytumėte aplinkos kintamuosius. - 4
Patikrinkite išeinantį IP adresą konteinerio viduje
Įvykdykite
docker exec -it <container> curl -s https://vinaproxy.com/api/my-ip, kad patvirtintumėte, jog konteineris veikia per jūsų proxy IP adresą.
Dažnai užduodami klausimai
Kodėl nustačius HTTP_PROXY mano konteineris nepasiekia Redis arba Postgres konteinerio?
Be NO_PROXY jūsų HTTP klientas bando pasiekti vidinius paslaugų pavadinimus, tokius kaip redis ar db, per išorinį proxy. Pridėkite NO_PROXY=localhost,127.0.0.1,redis,db (ir mažosiomis raidėmis no_proxy), kad apeitumėte proxy vidiniams tinklo tilto mazgams.
Ar galiu priskirti 20 skirtingų proxy 20-čiai konteinerių viename VPS serveryje?
Taip. Apibrėžkite kiekvieną konteinerio paslaugą (arba perduokite atskirus .env kintamuosius) su atskira http://user:pass@ip:port eilute.
Kodėl verta nurodyti proxy kintamuosius ir didžiosiomis, ir mažosiomis raidėmis?
Kai kurios Linux bibliotekos (pvz., libcurl) pirmiausia tikrina mažąsias raides http_proxy / https_proxy, o Go ir Node įrankiai dažniausiai tikrina didžiąsias raides HTTP_PROXY / HTTPS_PROXY.
Priskirkite dedikuotus statinius IP adresus kiekvienam Docker konteineriui
Momentiniai neriboti dedikuoti IPv4 ir statiniai ISP proxy 7 šalyse.
Pirkti Docker proxy