相当于Rancher Desktop中Docker Desktop的'host.docker.internal'

And*_*ndi 16 docker rancher

对于容器内的 Docker Desktop,DNS 名称 host.docker.internal 解析为允许网络访问主机的 IP 地址。使用Rancher Desktop时是否有类似的情况?

假设 Docker Desktop 中有一个正在运行的容器(例如 alpine 镜像),则可以运行

docker exec alpine-container ping -c 2 host.docker.internal
Run Code Online (Sandbox Code Playgroud)

更新: 这个问题似乎已在 v1.0.1 中得到解决并发布。

Eri*_*c B 8

在 Rancher Desktop 中使用 dockerd (moby) 容器运行时时,添加--add-host=host.docker.internal:host-gatewaydocker run命令将实现此行为。

docker run -it --add-host=host.docker.internal:host-gateway alpine cat /etc/hosts
Run Code Online (Sandbox Code Playgroud)

或者对于 docker-compose:

# docker-compose.yml
  my_app:
    image: ...
    extra_hosts:
      - "host.docker.internal:host-gateway"
Run Code Online (Sandbox Code Playgroud)

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

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

  • 该解决方案有效,但它需要对 docker-compose yaml 文件等工件进行侵入性更改,从而有效地与 Docker Desktop 产生差异。将其作为 Rancher Desktop 设置中的一个选项会很有用 (3认同)

小智 5

正如问题中提到的,这个问题已在 Rancher Desktop 中得到解决。但是,对于可能遇到此问题的 Windows 用户,可能需要防火墙规则。https://docs.rancherdesktop.io/faq/

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

New-NetFirewallRule -DisplayName "WSL" -Direction Inbound -InterfaceAlias "vEthernet (WSL)" -Action Allow
Run Code Online (Sandbox Code Playgroud)


And*_*ndi 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