现已发布!阅读关于 11 月新增功能和修复的内容。

开发容器常见问题解答

本文档包含了一些关于在不同环境中成功设置并运行 Dev Containers 扩展的常见问题。

“开发容器定义”是否定义了应用程序的部署方式?

否。开发容器定义的是在您准备部署应用程序之前用于开发应用程序的环境。虽然部署容器和开发容器可能看起来相似,但您可能不希望在部署镜像中包含开发过程中使用的工具。

devcontainers/templates 仓库包含了一组针对一些常见开发环境的开发容器定义。如果您倾向于使用备用的容器构建或部署工作流,您也可以在不设置开发容器定义的情况下 连接到正在运行的容器

“开发容器定义”是否定义了应用程序的构建方式?例如 Buildpacks?

否。 Buildpacks 的概念侧重于获取源代码并通过一系列定义的步骤生成可部署的容器镜像。开发容器是您在准备构建之前可以开发应用程序的环境。因此,它们是互补的概念。

在尝试将本地文件系统挂载到容器时遇到错误

右键单击 Docker 任务栏项。在 Windows 上,选择 **设置** 菜单项,然后选择 **资源 > 文件共享**,并勾选包含源代码的驱动器。在 macOS 上,选择 **偏好设置** 菜单项,然后选择 **资源 > 文件共享**,并确保您的源代码所在的文件夹位于文件共享列表中的路径下。

有关解决 Docker for Windows 常见问题的变通方法的信息,请参阅 Docker Desktop for Windows 提示

出现关于缺少库或依赖项的错误

某些扩展依赖于特定 Docker 镜像中不存在的库。例如,Visual Studio Live Share 需要安装系统级依赖项,这些依赖项 在其文档中有列出。这些依赖项的需求可能取决于您的 Docker 镜像使用的操作系统(例如,特定的 Linux 发行版)。您可能需要在 Docker 构建过程中安装这些依赖项,方法是将所需的命令添加到 Dockerfile 中。搜索特定扩展的文档以检查依赖项,并参阅 安装其他软件 以获取解决问题的帮助。

我能否同时连接到多个容器?

一个 VS Code 窗口目前只能连接到一个窗口,但您可以打开一个新窗口并 连接 到一个已运行的容器,或者 使用包含多个 devcontainer.json 文件的通用 Docker Compose 文件 来进一步自动化此过程。

我能否在远程主机上使用容器?

是,请参阅关于 在远程 SSH 主机上打开文件夹在容器中打开远程隧道主机上的文件夹 的部分以获取信息。

在容器内工作时,如何将容器镜像构建或部署到我的本地 Docker / Kubernetes 安装?

您可以通过转发 Docker 套接字并在容器中安装 Docker CLI(以及用于 Kubernetes 的 kubectl)来构建镜像和部署容器。有关详细信息,请参阅 Docker outside of DockerDocker outside of Docker ComposeKubernetes-Helm 开发容器定义。

当 VS Code Server 在容器内运行时,其连接性要求是什么?

安装 VS Code Server 要求您的本地计算机具有到以下地址的出站 HTTPS (端口 443) 连接:

  • update.code.visualstudio.com
  • vscode.download.prss.microsoft.com

开发容器扩展将在连接后在本地下载 VS Code Server 并将其复制到容器中。

您可以使用 **扩展:从 VSIX 安装...** 命令手动安装扩展而无需互联网连接,但如果您使用扩展面板或 devcontainer.json 来安装扩展,您的本地计算机和 VS Code Server 将需要到以下地址的出站 HTTPS (端口 443) 访问:

  • marketplace.visualstudio.com
  • *.gallerycdn.vsassets.io (Azure CDN)

最后,一些扩展(如 C#)从 download.microsoft.comdownload.visualstudio.microsoft.com 下载次要依赖项。其他扩展(如 Visual Studio Live Share)可能有额外的连接要求。如果你遇到问题,请查阅扩展的文档以获取详细信息。

VS Code Server 在容器内的随机端口上运行,VS Code 本身使用 docker exec 通过 Docker 配置的通信通道与其通信。

作为扩展作者,我需要做些什么才能确保我的扩展正常工作?

VS Code 扩展 API 隐藏了远程运行的大部分实现细节,因此许多扩展在开发容器中无需修改即可正常工作。但是,我们建议您在开发容器中测试您的扩展,以确保其所有功能都能按预期工作。有关详细信息,请参阅关于 支持远程开发 的文章。

还有哪些资源可能可以回答我的问题?

以下文章可能有助于回答您的问题:

我能否在 VS Code 之外使用开发容器?

随着生产工作负载容器化日益普及,开发容器已在 VS Code 之外的场景中变得有用。我们正在创建 开发容器规范,以使任何工具中的任何人都能配置一致的开发环境。它旨在寻找方法来丰富现有的格式,其中包含常见的开发特定设置、工具和配置,同时仍提供简化的、非编排的单容器选项——以便它们可以用作编码环境或用于持续集成和测试。

您可以在 containers.dev 上了解更多信息并查阅规范,您可以在 GitHub 上的 devcontainers/spec 仓库中查阅活动的提案并为规范做出贡献。

© . This site is unofficial and not affiliated with Microsoft.