我有一个 Docker Compose 部署,其中包含一个容器,例如:
version: "3"
services:
web:
image: nginx
ports:
- "8080:80"
Docker 版本为 20.10.9,操作系统为 CentOS 7。
我需要阻止外部 IP 地址访问 8080 端口,除非有指定的例外。
但是 iptables -A INPUT -p tcp -m tcp --dport 8080 --src ! <IP 白名单> -j DROP
对于 Docker 容器无效。
在一个使用 firewalld 设置的系统中,public
区域的设置不适用于 Docker 容器。
DOCKER-USER 链没有按照需要的方式工作,因为我应该使用 --dport 80
(docker 容器中的内部端口),而不是 dport 8080
。但是我需要使用外部端口,因为可能会有许多内部端口为 80 的容器,但唯一的外部端口是唯一的。
我使用了: