【问题标题】:What is the difference of "new window" in VS Code's Remote WSL extension and a VS Code window?VS Code 的远程 WSL 扩展中的“新窗口”和 VS Code 窗口有什么区别?
【发布时间】:2021-08-24 17:17:12
【问题描述】:

我想在 Windows 中为应用程序使用 docker 容器,但为了能够这样做,我需要安装 WSL。我发现有一个VS Code's Remote WSL extension,但我不确定 VS Code 和远程 WSL 扩展中的New Window 之间的区别。

示例: VS Code 中远程 WSL 扩展中的新窗口

我不熟悉以下技术:

  • Docker 容器
  • WSL
  • VS Code 的远程 WSL 扩展

有人可以向我解释一下调用 V.S. 有什么区别吗? Windows 中的代码,并调用 V.S. WSL 中的代码?

其他信息:

为了解释我是如何走到需要提出这个问题的地步的,我将部分研究包括在内。我通读了文档——(我在下面发布了一个链接)——这正是我对上面提出的问题进行思考并寻求答案的原因。

Remote V.S. Code WSL Extension's Documentation

【问题讨论】:

  • 我已经编辑了您的问题,以便更准确地反映您在评论中与我分享的内容。我也会更新我的答案。请接受编辑,因为它是为了更好地帮助你,我花了很多时间重新格式化它,所以我可以参考 docker 回答你的问题,因为你最初没有在你问的原始问题中引用 Microsoft App Container .
  • 好的,我更新了我的答案,尽可能彻底地解释事情。在我真正喜欢回答这个问题的地方,没有简单的答案可以提供对这个主题的全面理解。需要大量阅读和研究才能了解本文中引用的平台和 docker 容器的底层发生的一切。计算机科学学位也很有帮助,
  • 作为从获得这样的学位获得的基础知识有助于人们以一种动态的方式理解技术。拥有 CS 学位的人可能不了解 docker,但更可能了解它的子工作组件,而无需使用它,因为他们了解用于开发的基本“低级”技术如何工作,实现和调用 Docker 容器。
  • 学习一门像 C/C++ 甚至汇编这样的语言是有帮助的,原因不仅仅是用这种语言编写代码。通过掌握用于创建更高级别技术的语言的工作知识,可以更好地理解 docker 等许多高级技术。

标签: linux docker visual-studio-code windows-subsystem-for-linux


【解决方案1】:


在 WSL 和 Windows 10 中运行 VSCode 的区别


        在回答这个问题之前,它询问了 2 个平台之间的区别(Windows 10"Linux when running in a Windows Subsystem"),以及为什么 Docker Containers 需要后者我需要先确定那些读过这篇文章的人都知道 WSL 是什么,以及首字母缩略词 W.S.L. 的含义,此外;我想定义 Docker 是什么。


WSL 定义:
        WSL 是名称的缩写"Windows Subsystem for Linux"。简而言之,"Windows Subsystem for Linux" 允许开发人员在 Windows 10 操作系统中启动时在 Linux(或 GNU)环境中工作。所有 Windows10 版本的 Windows 都支持 WSL,Windows 10 S 除外。

Docker 定义:
       Docker 是一个平台即服务,又名PaaS,它将操作系统虚拟化为应用程序可以运行的环境。

那么为什么 Docker 需要 WSL?

从技术上讲,它不需要 WSL。如果您使用 Ubuntu 作为机器启动的操作系统,则不需要 WSL,但是如果您使用的是 Windows 10,则需要 WSL(Windows 10S 不支持 Docker 或 WSL)。使用 windows 时需要 WSL 的原因是 Docker 需要 Linux,如上所述,WSL 是一种在开发人员机器启动到Windows 10 操作系统。 Docker 使用 Linux kernel 以及 Linux 的其他部分,例如容器平台的 Linux SHELL,因为它们重量轻,并且比 Windows 10 等平台占用更少的资源。


为什么有人更愿意使用 WSL 而不是 Windows 10 是严格基于意见的,不会在此答案中讨论,但是我将列举一些 WSL 与 V.S. 不同的原因。代码,不仅仅是没有 WSL 的窗口。


区别和特点

        运行 V.S.运行 Linux 的 Windows 子系统内的代码是 V.S.根据定义,代码是在 Linux 环境中运行的。换句话说,如果你刚开始 V.S.从开始菜单编写代码而不使用 WSL 调用它,编辑器中的环境将是 windows 环境,因此,您将拥有一个 windows PowerShell 控制台,而在 WSL 中,您将拥有一个用于控制台的 SHELL。由于环境不同,您可用的工具、语言和功能也会不同。
       WSL 本质上是一个工具,适用于那些喜欢将 windows 作为操作系统,但需要或更喜欢使用 Linux 平台进行开发的人。在 WSL I 和无数其他人必须在分区的 HDD 硬盘驱动器上双启动 Linux 和 Windows 之前,这确实是一个痛苦的守车。 WSL 提供的其他功能包括“共享资源”grep 等命令行 (CLI) 工具、Vim 等软件等等。

最后说明:

我写了更多关于 WSL 的文章,因为让我们面对现实吧,您来这里并不是为了了解 windows 与 WSL 的关系,而是相反。话虽如此,当开发人员调用 V.S. 时,WSL 似乎在 Windows 平台之上添加了一堆东西。通过 WSL 编写代码,但这种想法是错误的,我不想给人这种印象。如果您一直在标准 Microsoft Windows 环境中开发您的应用程序,并且您一直这样做,那么我建议您继续这样做。 WSL 适合那些喜欢 Linux 或想要利用 Linux 提供的东西(我在上面提到的一些东西)的人。

这应该会给你一个有用的想法。如果您想了解更多,不要询问或搜索 WSL,只需在 Linux 环境中研究开发,通过这种方式研究,您将了解更多有关该主题的信息。



来源:​​
  1. Docker 上的维基百科: https://en.wikipedia.org/wiki/Docker(software)_

【讨论】:

  • 感谢您的详细回答,也许我应该提到我尝试 wsl2 的原因,实际上我想在 windows 中使用基于 docker 容器的项目。
  • IMO,任何刚接触 Linux 的人都应该使用 Ubuntu。使用 ubuntu 设置 WSL。您可以从 Microsoft Store 获取适用于 Windows 10/Windows 10 Pro 的 Ubuntu v20.04LTS Disto。 Ubuntu 应用程序解释了如何设置环境以使其正常工作。让它工作后,只需将 Docker 扩展安装到你的 V.S.在 Windows 子系统中运行的代码实例。之后,由您将 Docker 链接到 Azure。这让我明白了一点。 Docker 是通过 Azure 托管在云中的应用程序的容器(也有例外,但 azure 是 docker 的创建目标)。
【解决方案2】:

在@JAY-DEV 的回答之上,我找到了有关在 WSL 和 Windows 10+ 中运行 VSCode 的主要区别的文档。

第一次尝试在 WSL 中打开 VS 代码时,您会看到一条消息 关于“安装 VS 代码服务器”(c7d83e57…数字是版本 的 VS Code Server 与您刚刚的客户端工具相匹配 已安装)。

VS Code 正在 Linux 端安装一个小型服务器, 然后桌面 VS Code 将与之对话。然后该服务器将安装并 WSL 中的主机扩展,以便它们在工具的上下文中运行 以及安装在 WSL 中的框架。

换句话说,您的语言扩展将针对工具运行 和安装在 WSL 中的框架,而不是针对安装在 Windows 端,因为它应该提供适当的开发体验。

为了回答这个问题,当在 WSL 中打开 VS 代码时,VS 代码仍然安装并在 Windows 中运行,并且有一个运行在 Linux 中的 VS Code Server 与之通信。

参考。 https://code.visualstudio.com/docs/remote/wsl-tutorial#_run-in-wsl

【讨论】:

    【解决方案3】:

    我无法评论,所以我会发布答案。

    我认为您正在接受培训以找到一个作为“Remote - Containers”扩展的工具,这将允许您在开发时使用容器。

    official documentation 可能是一个很好的起点。

    对不起,我的回答不够详细,我只是发现了这个 vs 代码扩展,并在搜索信息的过程中发现了你的问题

    我会回到这个答案并展开它。

    【讨论】:

      猜你喜欢
      • 2021-04-04
      • 1970-01-01
      • 2021-08-17
      • 2020-08-30
      • 2017-11-22
      • 1970-01-01
      • 1970-01-01
      • 2022-07-09
      • 1970-01-01
      相关资源
      最近更新 更多