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に対してアクセスできますよね...