docker的端口映射探究


docker的端口映射探究

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

  1. tomcat的端口映射
    avatar

  2. 查看iptabls规则
    avatar
    查看规则我们可以分析得出


    外部数据首先在PREROUTING链进行规则匹配(此规则为docker建立的),,跳转到docker链(为iptables五链之外的docker自定义链),查阅iptables规则,当跳转到自定义链时会在自定义链条匹配完毕后移动到原始链的下一个规则。
    外部请求端口为8080的数据转到docker链,根据docker链中已有的两条规则,匹配到第二条规则,转发到docker容器中。(docker0为docker容器的网卡)
  3. 容器中的服务响应完毕后,会将数据再转发给宿主机,宿主机又在PREROUTING链中跳转到docker链,docker中的第一条规则被匹配到。规则为RETURN,数据进入INPUT链。此时查看filter表如下。

avatar

从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)


Author: 向天歌
Reprint policy: All articles in this blog are used except for special statements CC BY 4.0 reprint policy. If reproduced, please indicate source 向天歌 !
  TOC