ฉันจะอนุญาตให้คอนเทนเนอร์นักเทียบท่าทั้งหมดของฉันใช้พร็อกซีของฉันได้อย่างไร


18

ฉันใช้นักเทียบท่าบน Debian Jessie ซึ่งอยู่หลังพร็อกซีขององค์กร เพื่อให้สามารถดาวน์โหลดภาพนักเทียบท่าได้ฉันต้องเพิ่มสิ่งต่อไปนี้ในของฉัน/etc/defaults/docker

http_proxy="http://localhost:3128/"

ฉันสามารถยืนยันได้ว่าสิ่งนี้ได้ผล

อย่างไรก็ตามเพื่อให้สามารถเข้าถึง interwebz จากภายในคอนเทนเนอร์ของฉันฉันต้องเริ่มเซสชันทั้งหมดด้วย--net hostแล้วตั้งค่าตัวแปร env เหล่านี้:

export http_proxy=http://localhost:3128/
export https_proxy=https://localhost:3128/
export ftp_proxy=${http_proxy}

เป็นการดีที่ฉันต้องการให้คอนเทนเนอร์ไม่ต้องการเครือข่ายโฮสต์และไม่ทราบเกี่ยวกับพร็อกซี (เช่นการโทรออกไปยังพอร์ต 20, 80, 443 ทั้งหมดในคอนเทนเนอร์ผ่านพอร์ตพร็อกซีของโฮสต์) เป็นไปได้ไหม

เป็นไปได้หรือไม่ที่จะมีการตั้งค่าไซต์ซึ่งจะทำให้แน่ใจว่าตัวแปร env เหล่านี้ถูกตั้งค่าไว้ในเครื่อง แต่ไม่เคยส่งออกเป็นส่วนหนึ่งของภาพ

UPDATE : ฉันรู้ว่าฉันสามารถส่งต่อสิ่งเหล่านี้ด้วย--env http_proxy=...ฯลฯ แต่นั่นเป็นสิ่งที่น่ารังเกียจ ฉันต้องการให้มันทำงานกับผู้ใช้ทุกคนในระบบโดยไม่ต้องใช้นามแฝง

คำตอบ:


5

ดูคำตอบ SO นี้ :

เซิร์ฟเวอร์โฮสต์เรียกใช้คอนเทนเนอร์ที่ใช้พร็อกซี (ปลาหมึกในกรณีนี้) ที่สามารถทำพร็อกซีแบบโปร่งใส คอนเทนเนอร์นั้นมีกฎ iptables ที่ทราฟฟิก NAT เข้าสู่พร็อกซีเซิร์ฟเวอร์ - นี่หมายความว่าคอนเทนเนอร์ต้องทำงานในโหมดที่ได้รับการยกเว้น

เซิร์ฟเวอร์โฮสต์ยังมี (และนี่คือความมหัศจรรย์) รายการตารางเส้นทาง IP ที่กำหนดเส้นทางการรับส่งข้อมูลทั้งหมดจากคอนเทนเนอร์อื่น แต่พร็อกซีที่ถูกกำหนดสำหรับพอร์ต 80 ผ่านคอนเทนเนอร์พร็อกซี

บิตสุดท้ายนั่นหมายความว่าสำหรับการรับส่งข้อมูลพอร์ต 80 เส้นทางจากคอนเทนเนอร์ไปยังส่วนอื่น ๆ ของโลกต้องผ่านพร็อกซีคอนเทนเนอร์ - ทำให้มีโอกาสได้รับ NAT และพร็อกซีโปร่งใส

https://github.com/silarsis/docker-proxy


สิ่งนี้จะไม่ทำงานสำหรับ "https"
ceving
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.