カッティングボード

カルマをカットしてます

DockerからホストPCのネットワーク接続に対するメモ

最近ブログ書いてなかったですけど,このままズルズルずっと書かないと習慣が完全にきえうせるので徐々に書き始めたいと思います.

Dockerのファイルシステムのやつは書いてたメモが消え去ったので,気分が乗った時に書きなおします.

はじめに

DockerのコンテナからホストノードのLANに接続できるのかどうかに関して,研究室の人と意見が分かれたので実際に検証してみました.

結果

ホストPCのネットワークに対して普通に接続できます.

なんでできるんや,IPマスカレードでもしてるのか?と思ったらしてました.

↓のIPが172で始まるところの記述の部分がIPマスカレードの設定の部分です.

細かいIPレンジとかに関してはノードによって変わるかもしれないです.

$ sudo iptables --list -t nat
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination
DOCKER     all  --  anywhere             anywhere             ADDRTYPE match dst-type LOCAL

Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
DOCKER     all  --  anywhere            !127.0.0.0/8          ADDRTYPE match dst-type LOCAL

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination
MASQUERADE  all  --  172.17.0.0/16        anywhere

Chain DOCKER (2 references)
target     prot opt source               destination
RETURN     all  --  anywhere             anywhere

まぁ考えてみると当たり前のことなんですよね.

dockerを立ち上げると,docker0とかいう仮想NICが立ち上がってそのNICをdockerコンテナでは利用してると思います.

なので,IPマスカレード設定がされてなければ外部のネットワークに一切接続できないですよね.

まぁIPマスカレード設定がされてて普通にホストノードから通信が出て行くんだから,ホストノードのLANに対してアクセスできますよね...