用户定义的docker网络中的Docker容器 - 仅从主机访问

问题描述 投票:0回答:2

我有一个应用程序在用户定义的docker网络中创建几个容器。

目前,我已将该网络中某些容器的少数端口转发(映射)到主机,以便我可以从主机访问它们。容器(容器与容器)之间的交互通过网络中定义的别名发生。

不幸的是,主机的映射端口公开在我的主机上。有没有办法只能从我的主机的本地主机访问这些映射的端口?

docker docker-networking
2个回答
4
投票

如果您使用docker run -p [port-number]:[port-number]转发端口,您可以使用:

docker run -p 127.0.0.1:80:80 container

代替:

docker run -p 80:80 container

默认情况下,Docker会在所有可用接口上公开您的端口。


0
投票

如果你在Linux上,你可以使用iptables。

iptables -A INPUT -p tcp -s localhost --dport 8080 -j ACCEPT
iptables -A INPUT -p tcp --dport 8080 -j DROP

只需将8080更改为您想要的端口,并为您正在公开的每个端口多次运行它。

第一个命令是“从localhost到端口8080允许它的任何东西”,第二个命令是“丢弃任何进入8080端口的东西”

此更改不是永久性的,它会在重新启动后重置,但您可以使用以下命令进行保存:

iptables-save > /etc/iptables.conf

并恢复它:

iptables-restore < /etc/iptables.conf
© www.soinside.com 2019 - 2024. All rights reserved.