Како да поставите прокси во Docker (контејнери, Compose и изградби)
Updated:
Кога извршувате скрејпери со повеќе контејнери, работници за автоматизација или DePIN јазли на еден хост-сервер, проследувањето на варијаблите на опкружувањето HTTP_PROXY и HTTPS_PROXY по контејнер овозможува секоја услуга да излегува преку своја посветена статичка IPv4 адреса од VinaProxy без менување на рутирачката табела на хост-машината.
ENV HTTP_PROXY=http://user:pass@ip:port HTTPS_PROXY=http://user:pass@ip:port- 1 IP40.000 VND
- 5+ IP35.000 VND
- 10+ IP25.000 VND
- 20+ IP25.000 VND
- 50+ IP25.000 VND
- 100+ IP25.000 VND
- 200+ IP25.000 VND
- 500+ IP25.000 VND
- 1000+ IP22.000 VND
- 2000+ IP20.000 VND
- 1 IP40.000 VND
- 5+ IP35.000 VND
- 10+ IP25.000 VND
- 20+ IP25.000 VND
- 50+ IP25.000 VND
- 100+ IP25.000 VND
- 200+ IP25.000 VND
- 500+ IP25.000 VND
- 1000+ IP22.000 VND
- 2000+ IP20.000 VND
Запознајте ги 3-те опсези за конфигурација на Docker прокси
Docker го одделува сообраќајот за извршување на контејнерите, сообраќајот при изградба на слики и влечењето од регистрите на daemon-от:
| Docker опсег | Каде се конфигурира | Што рутира |
|---|---|---|
| 1. Извршување на контејнер | docker run -e HTTP_PROXY=... или Compose environment: | Сообраќај генериран од апликацијата во тој специфичен контејнер |
2. Изградба на слика (docker build) | --build-arg HTTP_PROXY=http://user:pass@ip:port | Преземања преку менаџери на пакети (apt, pip, npm) за време на изградбата |
3. Docker Daemon (dockerd) | /etc/systemd/system/docker.service.d/http-proxy.conf | Барања за docker pull и docker push кон регистри |
Најдобри практики за Docker Compose и правила за NO_PROXY
- Поставете варијабли и со големи (
HTTP_PROXY,HTTPS_PROXY,NO_PROXY) и со мали букви (http_proxy,https_proxy,no_proxy) за да можат сите Linux CLI алатки и јазични опкружувања да ги прифатат - Секогаш наведувајте ги интерните имиња на услугите во Docker Compose (на пр.,
NO_PROXY=localhost,127.0.0.1,redis,postgres) за сообраќајот меѓу контејнерите да остане на локалната bridge мрежа - Никогаш не вградувајте лозинки за прокси во јавни слики со
ENVвнатре воDockerfile—вметнувајте ги при извршување преку.envилиdocker-compose.yml
Чекор по чекор
- 1
Форматирајте го вашето прокси како http://user:pass@ip:port
Конвертирајте ја вашата VinaProxy линија
ip:port:user:passсо помош на нашиот Proxy Format Converter. - 2
Додајте варијабли на опкружувањето во docker-compose.yml
Под
environment:на вашата услуга, дефинирајтеHTTP_PROXY,HTTPS_PROXY,http_proxy,https_proxyиNO_PROXY=localhost,127.0.0.1,redis,db. - 3
Стартувајте го или рекреирајте го контејнерот
Извршете
docker compose up -dза да ги примените варијаблите на опкружувањето. - 4
Потврдете ја излезната IP-адреса од внатрешноста на контејнерот
Извршете
docker exec -it <container> curl -s https://vinaproxy.com/api/my-ipза да потврдите дека контејнерот излегува преку вашата прокси IP-адреса.
Често поставувани прашања
Зошто мојот контејнер не може да стигне до контејнерот Redis или Postgres по поставувањето на HTTP_PROXY?
Без NO_PROXY, вашиот HTTP клиент се обидува да стигне до интерните имиња на услуги како redis или db преку надворешното прокси. Додајте NO_PROXY=localhost,127.0.0.1,redis,db (и со мали букви no_proxy) за да го заобиколите проксито за интерните bridge хостови.
Може ли да доделам 20 различни проксија на 20 контејнери на еден VPS?
Да. Дефинирајте ја секоја контејнерска услуга (или проследете засебни варијабли од .env) со сопствен стринг http://user:pass@ip:port.
Зошто треба да се постават варијаблите за прокси и со големи и со мали букви?
Некои Linux библиотеки (како libcurl) прво проверуваат со мали букви http_proxy / https_proxy, додека алатките за Go и Node често проверуваат со големи букви HTTP_PROXY / HTTPS_PROXY.
Доделете посветени статички IP-адреси на секој Docker контејнер
Инстант неограничени посветени IPv4 и статички ISP проксија низ 7 земји.
Купете Docker проксија