对于容器内的Docker桌面版,DNS名称host.docker.internal将解析为一个IP地址,允许访问主机的网络。在使用Rancher Desktop时是否有类似的功能?
假设在Docker桌面版中运行一个容器(例如alpine镜像),可以运行以下命令:
docker exec alpine-container ping -c 2 host.docker.internal
更新: 这个问题 已经在 v1.0.1 版本中得到解决和发布。
对于容器内的Docker桌面版,DNS名称host.docker.internal将解析为一个IP地址,允许访问主机的网络。在使用Rancher Desktop时是否有类似的功能?
假设在Docker桌面版中运行一个容器(例如alpine镜像),可以运行以下命令:
docker exec alpine-container ping -c 2 host.docker.internal
更新: 这个问题 已经在 v1.0.1 版本中得到解决和发布。
--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.yml
my_app:
image: ...
extra_hosts:
- "host.docker.internal:host-gateway"
然而,我不相信在使用Rancher Desktop与containerd作为容器运行时时会起作用。如问题所述,Rancher Desktop已经解决了这个问题。然而,对于可能会遇到此问题的Windows用户,可能需要添加防火墙规则。https://docs.rancherdesktop.io/faq/
根据常见问题,可能需要添加以下规则。
New-NetFirewallRule -DisplayName "WSL" -Direction Inbound -InterfaceAlias "vEthernet (WSL)" -Action Allow
这方面有一个开放的 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