1.禁用docker自动修改iptables规则
查看docker.service文件/usr/lib/systemd/system/docker.service
默认在宿主机部署容器,映射了端口的话,docker能自己修改iptables规则,把这些端口暴露到公网。
如果要求这些端口不能暴露到公网,则可以在docker.service加上--iptables=false这个配置,则可以禁用掉此功能。随之而来的问题是,需要自己配置网络流量在宿主机网口和docker桥接网口之间的流转,否则就会出现网络流量只能出去,回不来的情况。
解决这个问题可以先不添加--iptables=false,让docker服务先运行起来,它就自己创建了对应的规则,然后通过iptables-save > ./iptables.txt 命令把iptables规则保存成一个文件。再把文件内的暴露端口的相关规则删除掉。然后通过iptables-restore < ./iptables.txt命令把规则刷到iptables即可。需要的就是下面这些流量转发的规则。
然后iptables需要放开对docker 网络中指定ip段的访问即可。