Docker容器访问控制

Docker与iptables

Docker 默认提供DOCKERDOCKER-USER链, 当启动docker服务后程序会自动在DOCKER链中增加规则,请勿在DOCKER增加自定义规则,用户可以通过定制DOCKER-USERFORWARD链来达到对容器的访问控制的目的。

以下列举的例子均基于docker的默认bridge网络模式

限制外部地址访问容器

# 禁止192.168.5.1 访问所有容器
sudo iptables -I DOCKER-USER -s 192.168.5.1 -j DROP

# 禁止 192.168.5.1 访问映射到宿主机的8080端口
sudo iptables -I DOCKER-USER -s 192.168.5.1 -p tcp -m multiport --dports 8080 -j ACCEPT

# 只允许 192.168.5.1 访问容器
sudo iptables -I DOCKER-USER ! -s 192.168.5.1 -j DROP

限制容器访问外部网络,外部通过端口映射可正常访问容器

# 禁止容器访问宿主机,需要获取宿主机IP地址172.16.2.2
sudo iptables -I INPUT -i docker0 -d 172.16.2.2 -j DROP

# 禁止容器访问外部192.168.0.0/16段
sudo iptables -I FORWARD -i docker0 -d 192.168.0.0/16 -m state --state NEW -j DROP

# 禁止容器访问外部所有网络
sudo iptables -I FORWARD -i docker0 -d 0.0.0.0/0 -m state --state NEW -j DROP

参考

https://docs.docker.com/network/iptables/
https://bytelang.com/article/content/sp9_YYFst7A=
https://juejin.im/entry/5bd17309f265da0a972e6077
https://stackoverrun.com/cn/q/7469045
http://www.zsythink.net/archives/1199

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容