限制来自 docker 容器内的 HTTP 流量

Restricting HTTP traffic from within a docker container

我需要确保只有 HTTPS 流量来自 docker 容器。

限制来自容器的 HTTP(或任何其他端口)的最佳方法是什么?

容器本身不监听任何端口。容器内的工具发出 HTTP/HTTPS 请求以获取许可证。我需要确保它只能执行 HTTPS 请求。

最好在docker主机端阻止流量吗?

像这样:

iptables -I DOCKER-USER -i ext_if -p tcp --dport http -j REJECT

我不想弄乱 Docker 在初始化时创建的所有表。

如果您需要限制特定容器上的流量(不是主机级别,不是所有容器),您必须在容器中添加防火墙规则。这是一个例子:

运行 带有 NET_ADMIN capability

的容器
docker run --rm -it --cap-add=NET_ADMIN  debian

安装 iptables 和 curl

apt update && apt install iptables curl

添加防火墙规则

ptables -A OUTPUT -p tcp --dport 80 -j DROP

然后测试规则:

curl http://www.google.com
curl https://www.google.com