כיצד להגדיר פרוקסי ב-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 מפריד בין תעבורת זמן הריצה של הקונטיינר, תעבורת בניית ה-Image, ומשיכות מה-Registry על ידי ה-Daemon:
| היקף ב-Docker | היכן להגדיר | מה מנותב |
|---|---|---|
| 1. זמן ריצה של הקונטיינר (Container Runtime) | docker run -e HTTP_PROXY=... or Compose environment: | תעבורה הנוצרת על ידי האפליקציה בתוך אותו קונטיינר ספציפי |
2. בניית Image (docker build) | --build-arg HTTP_PROXY=http://user:pass@ip:port | הורדות של מנהלי חבילות (apt, pip, npm) במהלך הבנייה |
3. ה-Daemon של Docker (dockerd) | /etc/systemd/system/docker.service.d/http-proxy.conf | בקשות docker pull ו-docker push ל-Registries |
שיטות מומלצות ב-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 המקומית - לעולם אל תטמיעו סיסמאות פרוקסי בתוך Images ציבוריים באמצעות
ENVב-Dockerfile— הזריקו אותן בזמן ריצה דרך.envאוdocker-compose.yml
שלב אחר שלב
- 1
פרמטו את הפרוקסי במבנה http://user:pass@ip:port
המירות את שורת ה-
ip:port:user:passשלכם מ-VinaProxy באמצעות ממיר פורמט הפרוקסי שלנו. - 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
פרוקסי Dedicated IPv4 ו-Static ISP ללא הגבלת תעבורה באופן מיידי ב-7 מדינות.
קנו פרוקסי ל-Docker