Який сенс процесу докер-проксі? Для чого потрібен проксі-сервер tcp простір користувачів?


34

Я помітив, що для кожного опублікованого порту працює процес докер-проксі. Яка мета цього процесу? Чому для цього потрібен проксі-сервер tcp простір користувача?

$ 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, створені docker:

$ 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
Не згоден із закриттям цього питання. Це дійсна архітектурна проблема, яка є відстрілом serverfault.com/questions/615372 ; якщо ми голосуємо за те, що здається не задокументованою (принаймні на веб-сайті), частиною послуги, то це ставить питання, чи варто ми просто сліпо обходитися, встановлюючи нові і блискучі сервіси, які ми не розуміємо у внутрішніх роботи?
Avery Payne

Відповіді:


21

Мабуть, є кілька кращих випадків без кращого вирішення (поки що):

  • localhost <-> localhost маршрутизація
  • екземпляр docker викликає в себе через свій опублікований порт
  • і можливо більше

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

ОНОВЛЕННЯ: З 1.7.0 (2015-06-16) проксі-користувач може бути відключений на користь NAT-шпильки, використовуючи прапор демона --userland-proxy = false.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.