【发布时间】:2021-04-23 04:47:56
【问题描述】:
原帖
我有一个安装了 WSL2 和 Docker 的 Windows 工作站,我可以使用它在 VS Code 中进行基于容器的开发。我希望能够在这个系统上的容器内远程开发。我能够直接通过 SSH 连接到工作站上的 WSL2 环境,并且能够通过创建一个任务以自动启动守护程序,而无需直接登录到 Windows 来启动 docker 守护程序,如下所述:https://stackoverflow.com/a/59467740/10692741
但是,当我尝试按照以下指南访问远程计算机上的 Docker 时:https://code.visualstudio.com/docs/remote/containers-advanced#_developing-inside-a-container-on-a-remote-docker-host,我收到以下错误:
error during connect: Get http://docker/v1.24/version: net/http: HTTP/1.x transport connection broken: malformed HTTP status code "\x00c\x00o\x00m\x00m\x00a\x00n\x00d\x00"
我也尝试过通过 SSH 隧道进行连接,如下所述:https://code.visualstudio.com/docs/remote/troubleshooting#_using-an-ssh-tunnel-to-connect-to-a-remote-docker-host,我也无法连接到 Docker。
有没有人用这样的设置成功过?还是由于 Docker 在 Windows、WSL2 和/或 Windows OpenSSH 实现上的限制而不受支持?
更新:2021-01-21
当我远程 SSH 到 Windows 机器时,我可以在 VS Code 扩展中看到 docker 容器。我能够启动它们,停止它们,并使用 shell 进入它们。但是,当我尝试附加 VS Code 时,我得到了上面显示的相同错误。
过去几天可能影响到这一点的事情:
- 通过
ssh-add /my/key将我本地机器上的SSH密钥添加到ssh-agent - Exposing Docker daemon on tcp://localhost:2375 without TLS 在远程 Windows 机器上
我还想指出,我尝试使用 Windows、Mac 和 Linux 作为本地计算机。使用 Mac 和 Linux,我可以打开到 Windows 机器的远程会话,但是从 Windows 本地机器我可以通过 SSH 连接到远程 Windows 机器,但由于某种原因无法在 VS Code 中打开远程连接。
【问题讨论】:
-
根据我对所有这些组件的了解,我相当肯定有一种方法可以使 Remote/WSL2/SSH/Docker 工作流正常工作,但它可能需要跳过一些障碍(正如你已经注意到的那样)。我现在没有足够的时间深入研究这个问题,但首先让我请您确认您可以从开发机器 SSH 到远程机器上的 WSL2 实例。我在您的问题中看到确认您可以“直接通过 SSH 进入工作站上的 WSL2 环境”,我认为这意味着您正在本地执行该步骤,但我不确定。
-
是的,我根据本指南将 WSL2 设置为 OpenSSH 连接的默认 shell:hanselman.com/blog/…,唯一的区别是我将默认设置为
wsl.exe而不是bash.exe。因此,当我通过密码或密钥进行身份验证时,它会自动在 WSL2 中打开一个 shell。 -
啊,很好。我使用了一种稍微不同的技术,但我也喜欢那个。好的,所以至少我们不需要为您的案例担心解决方案的那一部分。
标签: windows docker vscode-remote wsl-2