我需要在本地 Windows 主机上有一个 docker swarm 测试环境来进行 Visual Studio 容器开发。
但是,群通信无法正常工作,因为 docker 服务正在其隔离网络中进行侦听
192.168.65.0/24
。这些端口未在主机上发布!我尝试将 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把代码推送到服务器上运行,超级不方便
VS 现在对在 WSL 中运行 Docker 守护进程的支持有限。请参阅使用 VS 容器工具在 WSL 中运行容器。
简短版:
VSCT_WslDaemon
设置为 1