วิธีตั้งค่าพร็อกซีใน Docker (คอนเทนเนอร์, Compose และการบิลด์)
อัปเดตเมื่อ:
เมื่อเรียกใช้สแครปเปอร์แบบหลายคอนเทนเนอร์ เวิร์กเกอร์ระบบอัตโนมัติ หรือโหนด DePIN บนเซิร์ฟเวอร์โฮสต์เครื่องเดียว การส่งตัวแปรสภาพแวดล้อม HTTP_PROXY และ HTTPS_PROXY แยกตามคอนเทนเนอร์จะช่วยให้แต่ละบริการส่งข้อมูลออกผ่านที่อยู่ IPv4 แบบคงที่เฉพาะจาก VinaProxy ได้โดยไม่ต้องแก้ไขตารางเส้นทางของเครื่องโฮสต์
ENV HTTP_PROXY=http://user:pass@ip:port HTTPS_PROXY=http://user:pass@ip:port- 1 IP₫40,000
- 5+ IP₫35,000
- 10+ IP₫25,000
- 20+ IP₫25,000
- 50+ IP₫25,000
- 100+ IP₫25,000
- 200+ IP₫25,000
- 500+ IP₫25,000
- 1000+ IP₫22,000
- 2000+ IP₫20,000
- 1 IP₫40,000
- 5+ IP₫35,000
- 10+ IP₫25,000
- 20+ IP₫25,000
- 50+ IP₫25,000
- 100+ IP₫25,000
- 200+ IP₫25,000
- 500+ IP₫25,000
- 1000+ IP₫22,000
- 2000+ IP₫20,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) เพื่อให้ทราฟฟิกระหว่างคอนเทนเนอร์ยังคงอยู่บนเครือข่ายบริดจ์ในเครื่อง - อย่าฝังรหัสผ่านพร็อกซีลงในอิมเมจสาธารณะด้วย
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) เพื่อข้ามพร็อกซีสำหรับโฮสต์บริดจ์ภายใน
ฉันสามารถกำหนด 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