docker-proxyプロセスのポイントは何ですか?ユーザースペースのtcpプロキシが必要なのはなぜですか?


34

公開された各ポートに対してdocker-proxyプロセスが実行されていることに気付きました。このプロセスの目的は何ですか?これにユーザースペースの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

およびdockerによって作成されたいくつかの関連する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
この質問を終了することに同意しません。これは、serverfault.com / questions / 615372の派生物である有効なアーキテクチャ上の問題です。文書化されていない(少なくともWebサイト上で)サービスの一部であると思われるものをダウン投票する場合、内部を理解していない新しい光沢のあるサービスを盲目的にインストールする必要があるの仕組み?
エイブリーペイン14年

回答:


21

どうやら良い回避策のないいくつかのエッジケースがあります(今のところ)

  • localhost <-> localhostルーティング
  • 公開されたポートを介して自分自身を呼び出すdockerインスタンス
  • そしておそらくもっと

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

更新:1.7.0(2015-06-16)以降、デーモンの--userland-proxy = falseフラグを使用して、ヘアピンNATを優先してユーザーランドプロキシを無効にできます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.