Як наладзіць проксі ў 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 ₫
- Ад 5 IP35 000 ₫
- Ад 10 IP25 000 ₫
- Ад 20 IP25 000 ₫
- Ад 50 IP25 000 ₫
- Ад 100 IP25 000 ₫
- Ад 200 IP25 000 ₫
- Ад 500 IP25 000 ₫
- Ад 1000 IP22 000 ₫
- Ад 2000 IP20 000 ₫
- 1 IP40 000 ₫
- Ад 5 IP35 000 ₫
- Ад 10 IP25 000 ₫
- Ад 20 IP25 000 ₫
- Ад 50 IP25 000 ₫
- Ад 100 IP25 000 ₫
- Ад 200 IP25 000 ₫
- Ад 500 IP25 000 ₫
- Ад 1000 IP22 000 ₫
- Ад 2000 IP20 000 ₫
Разуменне 3 абласцей канфігурацыі проксі ў Docker
Docker падзяляе трафік выканання кантэйнераў, трафік зборкі вобразаў і запыты дэмана да рэестраў:
| Вобласць 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 (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), каб усе CLI-інструменты Linux і асяроддзі выканання моў распазнавалі іх - Заўсёды ўказвайце ўнутраныя назвы сэрвісаў 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з дапамогай нашага Канвертара фарматаў проксі. - 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