[英]Why can't I ping docker container on Windows?
不要将其标记为重复,因为我查看了其他答案并没有解决我的问题。
我正在使用 Windows 7 和 docker 工具箱。
我正在做这个教程: https<\/a> :\/\/docs.microsoft.com\/en-us\/dotnet\/csharp\/tutorials\/microservices
所以在这个命令之后:
docker run -d -p 80:5000 --name hello-docker weather-microservice
这是因为,您通过docker inspect
命令看到的 ip 地址被 docker 用于内部网络和通信。 从外面是无法访问的。 此外,localhost 将不起作用,因为您正在运行 docker 工具箱,它在 ubuntu VM 内运行。 您必须首先通过以下方式获取VM的IP地址,
docker-machine ls
如果我没记错的话,工具箱在 Mac 和 Windows 中的工作方式相同,IP 地址应该是 192.168.99.100。 因此,您将能够通过http://192.168.99.100访问您的应用程序。 除了这些,你为什么还在使用docker工具箱。 新的方式是 docker for mac/ docker for windows。 它更容易和有效。 首先,您将能够通过 localhost 访问您的应用程序,而无需知道 IP 地址。
实际上,我从控制面板\\网络和 Internet\\网络连接中获得了容器的 IP。 有一个名为 vEthernet(DockerNAT) 的适配器,它是容器的适配器。 我可以 ping 为这个适配器找到的 IP。
Windows 版 Docker 桌面无法将流量路由到 Linux 容器。 但是,您可以 ping Windows 容器。
因此,在尝试将容器从 Windows 主机 ping 到 Linux 容器时,请记住这一点。 您可能想使用docker run
的publish
功能来启用端口转发。
10 次中有 9 次是 Windows 防火墙。
完全禁用 Windows 防火墙 - 将其关闭 - 并查看您是否可以访问您的站点。
与 Ehsan Mirsaeedi 所说的类似,但对我而言,vEthernet(默认交换机)才是正确的选择。 还发布了一个带有图片的答案,在Windows docker container cannot ping host
希望这对其他人有帮助!
我偶然发现了这个问题,因为我正在寻找一种方法将我的本地 HTTP 端口(80)绑定到我的容器的 HTTP 端口,这是一个在 Windows 的 Docker Desktop 上运行的 Apache 容器 - 通过 WSL2(这很重要)
我找不到快速简便的方法来做到这一点,所以我自己想出来了。
您必须做的是将本地端口(在 Windows 上)绑定到 WSL 上的端口。
这是我的做法:
$wsl_ip = (wsl -d "docker-desktop" -- "ifconfig" "eth0" "|" "grep" "inet addr:").trim("").split(":").split()[2]
netsh interface portproxy add v4tov4 listenport=443 listenaddress=0.0.0.0 connectport=443 connectaddress=$wsl_ip
netsh interface portproxy add v4tov4 listenport=80 listenaddress=0.0.0.0 connectport=80 connectaddress=$wsl_ip
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.