docker的端口映射探究

docker的端口映射探究

使用docker部署了tomcat,并把宿主机的8080端口映射到docker的8080端口。现在来探究一下是如何映射的。

  1. tomcat的端口映射


    Screenshot_20191210_103840.png
  1. 查看iptabls规则


    Screenshot_20191210_104416.png

查看规则我们可以分析得出


外部数据首先在PREROUTING链进行规则匹配(此规则为docker建立的),跳转到docker链(为iptables五链之外的docker自定义链),查阅iptables规则,当跳转到自定义链时会在自定义链匹配完毕后移动到原始链的下一个规则。


外部请求端口为8080的数据转到docker链,根据docker链中已有的两条规则,匹配到第二条规则,转发到docker容器中。(docker0为docker容器的网卡)

  1. 容器中的服务响应完毕后,会将数据再转发给宿主机,宿主机又在PREROUTING链中跳转到docker链,docker中的第一条规则被匹配到。规则为RETURN,数据进入INPUT链。此时查看filter表如下。


    Screenshot_20191210_114708.png

    从docker0中流出的数据没有被转发也没有被过滤,从而响应了出去。

参考:
iptables是什么,简单易懂.
http://www.zsythink.net/archives/1199/
https://wiki.archlinux.org/index.php/Iptables_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)

你可能感兴趣的:(docker的端口映射探究)