在 VS Code 中试用

开发容器常见问题解答

本文包含了一些常见问题,旨在帮助您在不同环境中成功安装和运行 开发容器 扩展。

“开发容器定义”是否定义了如何部署应用程序?

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

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

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

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

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

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

有关常见的 Windows 版 Docker 问题的解决方法,请参阅Windows 版 Docker Desktop 技巧

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

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

是否可以同时连接到多个容器?

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

是否可以在远程主机上使用容器?

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

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

您可以通过转发 Docker Socket 并在容器中安装 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.blob.core.windows.net
  • *.vo.msecnd.net (Azure CDN)

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

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

  • marketplace.visualstudio.com
  • *.vo.msecnd.net (Azure CDN)
  • *.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 仓库中查看活跃的提案并为规范做出贡献。