我是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进行访问呢?
6条答案
按热度按时间jvlzgdj91#
类似于@131的答案。问题是Docker在2375中运行,但在某些设置中它只绑定到localhost(WSL 2后端/ Linux容器)
以管理员身份运行应该可以:
然后您可以在客户端中执行
DOCKER_HOST=192.168.1.1:3375 docker ps
或
docker -H tcp://192.168.1.10:3375 ps
其中
192.168.1.1
是Docker主机IPlawou6xi2#
GUI设置是一个Linux容器,这就是问题所在,切换到Windows容器,编辑
C:\ProgramData\Docker\config\daemon.json
并添加"hosts": ["tcp://0.0.0.0:2375"]
即可。4zcjmb1e3#
DEng,您的解决方案会使Docker桌面崩溃
kyxcudwk4#
如果在Windows上运行Docker守护程序
除此之外:
我需要在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
-〉下一个-〉TCP
,Specific local ports
:2375或3375,取决于您转发的端口;添加要远程请求的其他端口列表。1.完成创建规则后,从列表中选择它并打开属性。转到
Advanced->Edge Traversal
并选择Allow edge traversal
。xkftehaa5#
在某些配置(WSL 2后端/ Linux容器)中,您无法强制com.docker.proxy.exe公开TCP端口2375(它将永远绑定127.0.0.1:2375)
使用简单NAT转发规则
为了达到你的目的
9jyewag06#
Docker并不是在Windows上运行的。它实际上创建了一个Linux虚拟机,在那里运行Docker守护进程。你可以看到这个虚拟机带有VirtualBox(假设你和其他很多虚拟机一样使用VirtualBox进行虚拟化)。
因此,为了获得您的设置,您需要修改此VM。您需要确保其网络接口处于NAT模式,然后在高级设置中,您可以将端口(2375)从主机转发到访客。重新启动Docker,它应该可以工作。