我有一个Web应用程序,用户可以单击几下注册并启动容器。 容器的创建是通过tcp将我的Web应用程序与docker deamon通信来完成的。
我现在的问题是,用户还可以通过FTP将二进制文件上传到他们的docker卷中。启动容器后,将加载所有二进制文件。 因此,人们可以在容器内部运行每段代码,也可以开始在我的内部网络中向不安全的端点发送数据包。 从容器内部,我可以对本地网络中的docker主机和其他节点执行ping操作。
我的目标是,容器只能与网络外部的端点进行通信。 有没有办法实现这种预期的行为?
答案 0 :(得分:0)
这并不是docker特定问题。似乎您想要做的是阻止从内部网络范围(称为 docker-range )到其他内部网络主机的访问,但仍然允许 docker-range 访问公共互联网。
您需要更改路由和防火墙设置才能实现此目的。如果您使用的是Linux,则建议使用iptables
。
使用docker docs中给出的示例桥接网络配置,该配置看起来类似于
sudo iptables -A FORWARD --source 192.168.1.5/24 --destination 10.0.0.0/24 -j REJECT
source
是您的Docker桥接网络( docker-range ),--destination
是您的其他内部主机。
您需要确保来自Docker容器的流量通过此防火墙。通常,您将在docker bridge网络配置中设置为default-gateway
的路由器上应用配置。