如何从Windows的Docker桌面公开2375

du7egjpx  于 2022-12-11  发布在  Docker
关注(0)|答案(6)|浏览(357)

我是Docker的新手。我的Windows版Docker桌面是19.03.5。我想从Windows版Docker桌面暴露端口2375,但如果我使用GUI设置x1c 0d1x,只能通过tcp://www.example.com访问127.0.0.1,我的内部IP地址192.168.3.9不起作用。
https://learn.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地址都不起作用,我非常确定我是按照文档做的。
那么我应该怎么做才能192.168.3.9从同一子网中的另一台计算机通过tcp://www.example.com进行访问呢?

jvlzgdj9

jvlzgdj91#

类似于@131的答案。问题是Docker在2375中运行,但在某些设置中它只绑定到localhost(WSL 2后端/ Linux容器)
以管理员身份运行应该可以:

netsh interface portproxy add v4tov4 listenport=3375 listenaddress=0.0.0.0 connectaddress=127.0.0.1 connectport=2375

然后您可以在客户端中执行
DOCKER_HOST=192.168.1.1:3375 docker ps

docker -H tcp://192.168.1.10:3375 ps
其中192.168.1.1是Docker主机IP

lawou6xi

lawou6xi2#

GUI设置是一个Linux容器,这就是问题所在,切换到Windows容器,编辑C:\ProgramData\Docker\config\daemon.json并添加"hosts": ["tcp://0.0.0.0:2375"]即可。

4zcjmb1e

4zcjmb1e3#

DEng,您的解决方案会使Docker桌面崩溃

kyxcudwk

kyxcudwk4#

如果在Windows上运行Docker守护程序

除此之外:

netsh interface portproxy add v4tov4 listenport=3375 listenaddress=0.0.0.0 connectaddress=127.0.0.1 connectport=2375

我需要在Windows防火墙中为入站流量添加一个规则+启用***边缘遍历***。在另一种方式中,我的所有流量都被默认的Query User阻止规则阻止:
This filter blocks any inbound packets for which there is no explicit rule to allow the packet, unless the user has allowed through the Query User pop up.
向防火墙添加规则:
1.转到Windows Security->Advanced Settings->Inbound Rules->New Rule
1.选择Port-〉下一个-〉TCPSpecific local ports:2375或3375,取决于您转发的端口;添加要远程请求的其他端口列表。
1.完成创建规则后,从列表中选择它并打开属性。转到Advanced->Edge Traversal并选择Allow edge traversal

xkftehaa

xkftehaa5#

在某些配置(WSL 2后端/ 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

为了达到你的目的

9jyewag0

9jyewag06#

Docker并不是在Windows上运行的。它实际上创建了一个Linux虚拟机,在那里运行Docker守护进程。你可以看到这个虚拟机带有VirtualBox(假设你和其他很多虚拟机一样使用VirtualBox进行虚拟化)。
因此,为了获得您的设置,您需要修改此VM。您需要确保其网络接口处于NAT模式,然后在高级设置中,您可以将端口(2375)从主机转发到访客。重新启动Docker,它应该可以工作。

相关问题