จุดประสงค์ของกระบวนการ docker-proxy คืออะไร? เหตุใดจึงจำเป็นต้องใช้ proxy proxy tcp ของผู้ใช้


34

ฉันสังเกตว่ามีกระบวนการนักเทียบท่าพร็อกซีทำงานอยู่สำหรับพอร์ตที่เผยแพร่แต่ละพอร์ต จุดประสงค์ของกระบวนการนี้คืออะไร? เหตุใดจึงต้องใช้พร็อกซี tcp space สำหรับสิ่งนี้

$ ps -Af | grep proxy
root      4776  1987  0 01:25 ?        00:00:00 docker-proxy -proto tcp -host-ip 127.0.0.1 -host-port 22222 -container-ip 172.17.0.2 -container-port 22
root      4829  1987  0 01:25 ?        00:00:00 docker-proxy -proto tcp -host-ip 127.0.0.1 -host-port 5555 -container-ip 172.17.0.3 -container-port 5555

และกฎ iptable ที่เกี่ยวข้องที่สร้างโดยนักเทียบท่า:

$ sudo iptables -t nat -L -n -v
Chain PREROUTING (policy ACCEPT 1 packets, 263 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 DOCKER     all  --  *      *       0.0.0.0/0            0.0.0.0/0            ADDRTYPE match dst-type LOCAL

Chain INPUT (policy ACCEPT 1 packets, 263 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 1748 packets, 139K bytes)
 pkts bytes target     prot opt in     out     source               destination         
   32  7200 DOCKER     all  --  *      *       0.0.0.0/0           !127.0.0.0/8          ADDRTYPE match dst-type LOCAL

Chain POSTROUTING (policy ACCEPT 1719 packets, 132K bytes)
 pkts bytes target     prot opt in     out     source               destination         
   32  7200 MASQUERADE  all  --  *      !docker0  172.17.0.0/16        0.0.0.0/0           

Chain DOCKER (2 references)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 DNAT       tcp  --  !docker0 *       0.0.0.0/0            127.0.0.1            tcp dpt:22222 to:172.17.0.2:22
    0     0 DNAT       tcp  --  !docker0 *       0.0.0.0/0            127.0.0.1            tcp dpt:5555 to:172.17.0.3:5555

13
ไม่เห็นด้วยเกี่ยวกับการปิดคำถามนี้ มันเป็นปัญหาทางสถาปัตยกรรมที่ถูกต้องที่เป็น offshoot ของserverfault.com/questions/615372 ; หากเราลงคะแนนเสียงสิ่งที่ดูเหมือนจะเป็นส่วนหนึ่งของบริการ (อย่างน้อยบนเว็บไซต์) ที่ไม่มีเอกสารดังนั้นนั่นจึงเป็นคำถามที่ว่าเราควรจะไปติดตั้งบริการใหม่และเป็นประกายเงางามซึ่งเราไม่เข้าใจภายใน ผลงานของ?
Avery Payne

นอกจากนี้ในเพื่อstackoverflow.com/a/37809857/1318694
แมตต์

คำตอบ:


21

เห็นได้ชัดว่ามีบางกรณีที่ไม่มีขอบวิธีแก้ปัญหาที่ดีกว่า (ตอนนี้):

  • localhost <-> การกำหนดเส้นทาง localhost
  • อินสแตนซ์นักเทียบท่าเรียกตัวเองผ่านพอร์ตเผยแพร่
  • และอาจจะมากกว่า

https://github.com/docker/docker/issues/8356

อัปเดต: ตั้งแต่ 1.7.0 (2015-06-16) พร็อกซี userland สามารถปิดใช้งานเพื่อสนับสนุน hairpin NAT โดยใช้ --user - proxyland-proxy = false ของ daemon

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