Qual è il punto del processo docker-proxy? Perché è necessario un proxy tcp per userspace?


34

Ho notato che esiste un processo docker-proxy in esecuzione per ciascuna porta pubblicata. Qual è lo scopo di questo processo? Perché è necessario un proxy tcp dello spazio utente per questo?

$ 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

e alcune regole iptable correlate create dalla finestra mobile:

$ 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
Non sono d'accordo sulla chiusura di questa domanda. Si tratta di un problema architettonico valido derivato da serverfault.com/questions/615372 ; se stiamo sottovalutando quella che sembra essere una parte del servizio non documentata (almeno sul sito Web), allora ciò pone la domanda, dovremmo semplicemente andare in giro a installare ciecamente servizi nuovi e brillanti che non capiamo l'interno funzionamenti di?
Avery Payne,

Risposte:


21

Apparentemente ci sono alcuni casi limite senza una soluzione alternativa migliore (per ora):

  • localhost <-> routing localhost
  • istanza docker che chiama in sé tramite la sua porta pubblicata
  • e forse di più

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

AGGIORNAMENTO: Dall'1.7.0 (2015-06-16) il proxy userland può essere disabilitato a favore del NAT tornante usando il demone --userland-proxy = false flag.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.