gpt4 book ai didi

docker - 如何从 docker 容器访问主机端口

转载 作者:IT老高 更新时间:2023-10-28 12:32:52 30 4
gpt4 key购买 nike

我有一个运行 jenkins 的 docker 容器。作为构建过程的一部分,我需要访问在主机上本地运行的 Web 服务器。有没有办法可以将主机 Web 服务器(可以配置为在端口上运行)暴露给 jenkins 容器?

我在 Linux 机器上本地运行 docker。

更新:

除了下面的@larsks 回答之外,要从主机获取主机 IP 的 IP 地址,我执行以下操作:

ip addr show docker0 | grep -Po 'inet \K[\d.]+'

最佳答案

适用于所有平台

Docker v 20.10 及更高版本(自 2020 年 12 月 14 日起)

在 Linux 上,将 --add-host=host.docker.internal:host-gateway 添加到 Docker 命令以启用此功能。 (请参阅下面的 Docker Compose 配置。)

使用您的内部 IP 地址或连接到特殊的 DNS 名称 host.docker.internal 这将解析为主机使用的内部 IP 地址。

To enable this in Docker Compose on Linux, add the following lines to the container definition:

extra_hosts:
- "host.docker.internal:host-gateway"

适用于 macOS 和 Windows

Docker v 18.03 及更高版本(自 2018 年 3 月 21 日起)

使用您的内部 IP 地址或连接到特殊的 DNS 名称 host.docker.internal 这将解析为主机使用的内部 IP 地址。

Linux 支持待定 https://github.com/docker/for-linux/issues/264

带有早期版本 Docker 的 MacOS

Docker for Mac v 17.12 到 v 18.02

与上述相同,但使用 docker.for.mac.host.internal 代替。

Docker for Mac v 17.06 到 v 17.11

同上,但使用 docker.for.mac.localhost 代替。

Docker for Mac 17.05 及以下

要从 docker 容器访问主机,您必须将 IP 别名附加到您的网络接口(interface)。你可以绑定(bind)任何你想要的IP,只要确保你没有使用它到其他任何东西。

sudo ifconfig lo0 别名 123.123.123.123/24

然后确保您的服务器正在监听上述 IP 或 0.0.0.0。如果它在 localhost 127.0.0.1 上监听,它将不接受连接。

然后只需将你的docker容器指向这个IP,你就可以访问主机了!

要进行测试,您可以在容器内运行 curl -X GET 123.123.123.123:3000 之类的东西。

别名将在每次重新启动时重置,因此如有必要,请创建一个启动脚本。

解决方案和更多文档在这里:https://docs.docker.com/docker-for-mac/networking/#use-cases-and-workarounds

关于docker - 如何从 docker 容器访问主机端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31324981/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com