Я заметил, что для каждого опубликованного порта выполняется процесс docker-proxy. Какова цель этого процесса? Зачем для этого нужен tcp-прокси пользовательского пространства?
$ ps -Af | grep proxyroot 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 22root 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 -vChain 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 LOCALChain 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 LOCALChain 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