Windows 11 上的 Docker Swarm 未发布 swarm 端口 7946 4789

问题描述 投票:0回答:1

我需要在本地 Windows 主机上有一个 docker swarm 测试环境来进行 Visual Studio 容器开发。

但是,群通信无法正常工作,因为 docker 服务正在其隔离网络中进行侦听

192.168.65.0/24
。这些端口未在主机上发布!
我尝试启用镜像网络,它将 docker-desktop wsl2 ip 设置为我的主机 ip,但服务或 network=host 容器仍在使用隔离网络。

我尝试将 swarm 端口转发到 docker 服务,但我仍然没有从其他节点获得入站流量,因为我认为 swarm 服务需要源 IP,该源 IP 是从已发布的端口覆盖的,所以内部甚至没有透明代理容器会有帮助

services:
  relay:
    image: trajano/multisocat
    container_name: relay
    user: root
    ports:
      - "12377:2377"
      - "17946:7946"
      - "17946:7946/udp"
      - "14789:4789/udp"
    environment:
      SOCAT_MANAGER: "TCP-LISTEN:2377,fork TCP:172.17.0.1:2377"
      SOCAT_DISCOVERY_TCP: "TCP-LISTEN:7946,fork TCP:172.17.0.1:7946"
      SOCAT_DISCOVERY_UDP: "UDP4-RECVFROM:7946,fork UDP4-SENDTO:172.17.0.1:7946"
      SOCAT_OVERLAY: "UDP4-RECVFROM:4789,fork UDP4-SENDTO:172.17.0.1:4789"

我尝试启用

Enable host networking
,但这总是将源 IP 转换为 127.0.0.1,即使是从远程主机也是如此。无论如何,这甚至不适用于集群端口。

透明网络仅适用于 Windows 容器,因此这是没有选择的。

在镜像 wsl2 中运行没有 docker 桌面的 docker 也是不行的,因为 Visual Studio 需要 docker 桌面来运行容器。

有人成功设置过吗? 有没有办法直接与 192.168.65.3 上的 docker swarm 服务通信,无需 NAT 转换来保留源 ip?

如果您可以告诉我如何从 Visual Studio 中在远程 Linux 主机上运行开发容器,我也会接受它作为答案。

现在每次想测试容器,都得用git把代码推送到服务器上运行,超级不方便

windows docker visual-studio docker-swarm docker-swarm-mode
1个回答
0
投票

VS 现在对在 WSL 中运行 Docker 守护进程的支持有限。请参阅使用 VS 容器工具在 WSL 中运行容器

简短版:

  • 在 WSL 中安装 Docker CE
  • 在 Windows 中下载 Docker CLI,将其添加到 %PAth%,并配置它以连接到 WSL 守护进程
  • 在 VS 中启动之前将环境
    VSCT_WslDaemon
    设置为
    1
© www.soinside.com 2019 - 2024. All rights reserved.