如何从 Windows 的 Docker 桌面公开 2375

Den*_*eng 3 docker

我是 Docker 的新手。我的 Docker Desktop for Windows 版本是 19.03.5。我想从 Windows 的 Docker 桌面公开端口 2375,但是如果我使用 GUI 设置, 在此处输入图片说明 只能通过 tcp://127.0.0.1 访问,我的内部 IP 地址 192.168.3.9 不起作用。
https://docs.microsoft.com/en-us/virtualization/windowscontainers/manage-docker/configure-docker-daemon
该文档说要编辑C:\ProgramData\Docker\config\daemon.json和添加"hosts": ["tcp://0.0.0.0:2375"],但它不适用于任何 IP 地址,我很确定我是按照文档来做的。
那么我应该怎么做才能从同一子网中的另一台计算机通过 tcp://192.168.3.9 进行访问?

131*_*131 6

在某些配置(WSL2 后端/Linux 容器)中,您不能强制 com.docker.proxy.exe 公开 TCP 端口 2375(它将永远绑定 127.0.0.1:2375)

使用简单的 NAT 转发规则

netsh interface portproxy add v4tov4 listenport=2375 listenaddress=[public IP, NOT 0.0.0.0] connectaddress=127.0.0.1 connectport=2375
Run Code Online (Sandbox Code Playgroud)

为了达到你想要的

  • 嗨 - 我不记得最终起作用的确切命令。我认为 `listenaddress=[public IP, NOT 0.0.0.0]` 是问题所在(我认为这可能是一条注释,而不是一条不绑定在所有地址接口上的指令?)。所以可能是我的错误 (2认同)

小智 6

与@131的答案类似。问题是 Docker 在 2375 中运行,但在某些设置中它仅绑定到 localhost(WSL2 后端/Linux 容器)

这应该可以以管理员身份运行:

netsh interface portproxy add v4tov4 listenport=3375 listenaddress=0.0.0.0 connectaddress=127.0.0.1 connectport=2375
Run Code Online (Sandbox Code Playgroud)

然后就可以在客户端执行

DOCKER_HOST=192.168.1.1:3375 docker ps

或者

docker -H tcp://192.168.1.10:3375 ps

192.168.1.1你的 Docker 主机 IP 在哪里


Mih*_*hai 5

Docker 不在 Windows 上本机运行。它实际上创建了一个运行 docker 守护进程的 Linux 虚拟机。您可以使用 VirtualBox 查看此虚拟机(假设您像许多其他人一样使用 VirtualBox 进行虚拟化)。

因此,为了获得您的设置,您需要修改此虚拟机。您需要确保其网络接口处于 NAT 模式,然后在高级设置中您可以将端口 (2375) 从主机转发到访客。重新启动 Docker,它应该可以工作。

  • 是“netsh interface portproxy add v4tov4 Listenport=2375 Listenaddress=192.168.3.9 connectaddress=172.17.32.1 connectport=2375”吗?172.17.32.1是hyper-v的IP地址,但它不起作用。错误消息:```获取http://192.168.3.9:2375/v1.40/containers/json?all=1:读取tcp 192.168.3.9:24150->192.168.3.9:2375:wsarecv:现有连接是被远程主机强行关闭``` (4认同)