我需要弄清楚一个IPtables规则,以将Docker容器端口映射到localhost端口。
在/etc/hosts/
127.0.0.1 mysubdomain.coolapp.org
并使用此nginx反向代理服务器块进行测试
server {
listen 80;
server_name mysubdomain.coolapp.org;
location / {
proxy_pass http://127.0.0.1:8088;
}
如果使用
映射到0.0.0.0
,则使用Docker
docker run --network="host" -p "0.0.0.0:8088:80" cool-app-image
任何人都可以使用coolapp.org:8088
当我使用
映射到127.0.0.1
时
docker run --network="host" -p "127.0.0.1:8088:80" cool-app-image
用户必须浏览到http://mysubdomain.coolapp.org
酷,很棒!
除了现在启用IPTables和默认DROP策略外,唯一有效的配置是绕过防火墙coolapp.org:8088
echo "Set default policy to 'DROP'"
$IPT -P INPUT DROP
$IPT -P FORWARD DROP
$IPT -P OUTPUT DROP
所以我需要一个IPTables配置,该配置允许端口在反向代理和Docker之间进行通信。
要尝试接受从docker0到nginx代理的输出,我尝试:$IPT -I OUTPUT -o docker0 -d 127.0.0.1/0 -j ACCEPT
每个({https://docs.docker.com/network/iptables/
)
还尝试在0.0.0.0 docker run --network="host" -p "0.0.0.0:8088:80" cool-app-image
至
然后将除ip之外的所有其他内容都丢弃到docker
此$IPT -I DOCKER-USER -i eth0 ! -s <xxx.xxx.xxx.ip> -j DROP
和$IPT -I DOCKER-USER -i eth0 ! -s 127.0.0.1 -j DROP
..但没有任何作用
哪种IPtables规则集将允许Docker和localhost反向代理端口进行通信,但只能安全地与127.0.0.1/localhost进行通信?
私人VLAN是答案吗?
是否可以使用编排工具进行混合容器/主机联网?