繁体   English   中英

从 linux 上的 docker 容器内部连接到主机需要打开防火墙端口

[英]Connecting to host from inside a docker container on linux requires opening firewall port

背景:我试图让 XDebug 从 docker 容器内连接到我的 IDE(我的 php 应用程序正在我的开发机器上的容器内运行)。 在我的 Macbook 上,这样做没有问题。 但是,在 linux 上,我发现在容器内,我使用的端口 (9000) 在主机网关上不可见(使用sudo nmap -sT -p- 172.20.0.1其中 172.20.0.1 是我在 docker 中的主机网关)。

我可以通过在我的开发机器上打开端口 9000 ( sudo ufw allow 9000/tcp ) 来解决这个问题。 一旦我这样做了,容器就可以在主机网关上看到端口 9000。

我的问题:这完全有必要吗? 我不喜欢打开防火墙端口的想法,以便在我的机器上运行的 docker 容器可以连接到它。 有没有更安全的替代方案?

从你告诉我们的情况来看,打开端口听起来确实很有必要。 如果防火墙阻止了某个端口,则该端口上的所有流量都会被阻止,您将无法从主机使用容器上的应用程序。

为了使这更安全,您可以做的是指定一个特定的接口来打开端口,如下所示

ufw allow in on docker0 port 9000 proto tcp

显然用你机器上的 docker 接口替换docker0 您可以通过查看ip address show的 output 或如果接口名称不明显则按照此处的步骤找到此内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM