【问题标题】:Connecting to host from inside a docker container on linux requires opening firewall port从 linux 上的 docker 容器内部连接到主机需要打开防火墙端口
【发布时间】:2021-11-19 17:56:04
【问题描述】:

背景:我正在尝试让 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 容器可以连接到它。有没有更安全的替代方案?

【问题讨论】:

    标签: linux docker networking xdebug firewall


    【解决方案1】:

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

    你可以做的就是指定一个特定的接口来打开指定here的端口:

    ufw allow in on docker0 port 9000 proto tcp
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-11
      • 2017-04-11
      • 1970-01-01
      • 2012-03-22
      • 1970-01-01
      • 1970-01-01
      • 2020-12-01
      • 2013-06-27
      相关资源
      最近更新 更多