默认启动docker镜像后,如果映射端口的话,外网常常也可以访问,但是为什么不过宿主机的防火墙呢,
原因是创建docker的时候它自动添加iptable规则
还有一个nat映射
这里的192.168.1.252是我的宿主机,如果-p 6379:6379的话默认是都可以访问的容器的,所以我改成了这样
${shost}配置在.env文件中
这样的话,就可以通过访问192.168.1.252:6379这个来访问容器了。
如何做:以centos7为例
步骤:
1、开启防火墙需要开启的端口 比如6379 3306
2、删除docker创建镜像的时候生成的iptables规则
iptables -F DOCKER
这样的话,如果你防火墙没有开对应容器需要映射的端口的话,是不能直接访问的,增加了安全系数。
映射端口的时候最好不要用默认的端口,防止扫描工具扫描攻击。
扩展:firewall和iptables 最终都是操作netfilter来实现过滤的