在Rancher Desktop中等同于Docker Desktop的'host.docker.internal'

16

对于容器内的Docker桌面版,DNS名称host.docker.internal将解析为一个IP地址,允许访问主机的网络。在使用Rancher Desktop时是否有类似的功能?

假设在Docker桌面版中运行一个容器(例如alpine镜像),可以运行以下命令:

docker exec alpine-container ping -c 2 host.docker.internal

更新: 这个问题 已经在 v1.0.1 版本中得到解决和发布。

3个回答

8
在Rancher Desktop中使用dockerd(moby)容器运行时,将 --add-host=host.docker.internal:host-gateway 添加到您的 docker run 命令中即可实现此行为。
docker run -it --add-host=host.docker.internal:host-gateway alpine cat /etc/hosts

或者对于docker-compose:
# docker-compose.yml
  my_app:
    image: ...
    extra_hosts:
      - "host.docker.internal:host-gateway"

https://megamorf.gitlab.io/2020/09/19/access-native-services-on-docker-host-via-host-docker-internal/#implementation

然而,我不相信在使用Rancher Desktop与containerd作为容器运行时时会起作用。

3
这个解决方案是可行的,但它需要对诸如docker-compose yaml文件之类的工件进行侵入性更改,从而有效地与Docker Desktop创建差异。在Rancher Desktop设置中添加此选项将非常有用。 - Mihai Ungureanu

5

如问题所述,Rancher Desktop已经解决了这个问题。然而,对于可能会遇到此问题的Windows用户,可能需要添加防火墙规则。https://docs.rancherdesktop.io/faq/

根据常见问题,可能需要添加以下规则。

New-NetFirewallRule -DisplayName "WSL" -Direction Inbound -InterfaceAlias "vEthernet (WSL)" -Action Allow

运行这个命令时,我遇到了“New-NetFirewallRule:在系统上找不到指定的接口。”的错误。 - undefined

2

这方面有一个开放的 GitHub 问题 [0]。在此关闭之前的解决方法,来自 Rancher Labs 成员的提示可能会有所帮助(至少在 Linux/macOS 上运行 Rancher Desktop 时):

我不认为我们对它有一个符号名称,但主机始终(在 Linux 和 macOS 上)可以通过 192.168.5.2 访问,这是 qemu 网关地址。[1]

[0] https://github.com/rancher-sandbox/rancher-desktop/issues/1316

[1] https://rancher-users.slack.com/archives/C0200L1N1MM/p1634568974296000?thread_ts=1634560787.294400&cid=C0200L1N1MM


在 Windows 上使用 Rancher Desktop 1.6.2 尝试连接 192.168.5.2,但无法成功。 - Mihai Ungureanu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接