Docker 用户定义的 docker 网络中的容器 - 只能从主机访问
Docker containers in user defined docker network - access only from the host
我有一个应用程序正在用户定义的docker网络中创建一些容器。
目前我已经转发(映射)几个端口从该网络中的一些容器到主机,这样我就可以从 host 访问它们。容器之间的交互(容器到容器)是通过网络中定义的 aliases 发生的。
不幸的是,主机的 映射端口 在我的主机上公开暴露。有没有办法只能从我主机的 localhost 访问这些映射端口?
如果你在 linux,你可以使用 iptables。
iptables -A INPUT -p tcp -s localhost --dport 8080 -j ACCEPT
iptables -A INPUT -p tcp --dport 8080 -j DROP
只需为您想要的端口更改 8080
并为您要公开的每个端口多次更改 运行。
第一个命令是 "anything coming from localhost to port 8080 allow it",第二个是 "drop anything coming into port 8080"
此更改不是永久性的,它会在您重新启动后重置,但您可以通过以下方式保存它:
iptables-save > /etc/iptables.conf
并通过以下方式恢复它:
iptables-restore < /etc/iptables.conf
如果您使用docker 运行 -p [port-number]:[port-number] 转发您的端口,您可以使用:
docker run -p 127.0.0.1:80:80 container
而不是:
docker run -p 80:80 container
默认情况下,Docker 在所有可用接口上公开您的端口。
我有一个应用程序正在用户定义的docker网络中创建一些容器。
目前我已经转发(映射)几个端口从该网络中的一些容器到主机,这样我就可以从 host 访问它们。容器之间的交互(容器到容器)是通过网络中定义的 aliases 发生的。
不幸的是,主机的 映射端口 在我的主机上公开暴露。有没有办法只能从我主机的 localhost 访问这些映射端口?
如果你在 linux,你可以使用 iptables。
iptables -A INPUT -p tcp -s localhost --dport 8080 -j ACCEPT
iptables -A INPUT -p tcp --dport 8080 -j DROP
只需为您想要的端口更改 8080
并为您要公开的每个端口多次更改 运行。
第一个命令是 "anything coming from localhost to port 8080 allow it",第二个是 "drop anything coming into port 8080"
此更改不是永久性的,它会在您重新启动后重置,但您可以通过以下方式保存它:
iptables-save > /etc/iptables.conf
并通过以下方式恢复它:
iptables-restore < /etc/iptables.conf
如果您使用docker 运行 -p [port-number]:[port-number] 转发您的端口,您可以使用:
docker run -p 127.0.0.1:80:80 container
而不是:
docker run -p 80:80 container
默认情况下,Docker 在所有可用接口上公开您的端口。