本站点文档内容均翻译自code.visualstudio.com,仅供个人学习,如有差异请以官网为准。

开发容器常见问题

本文包括一些在不同环境中安装和运行Dev Containers扩展时的常见问题。

“dev container definitions”是否定义了应用程序的部署方式?

不。开发容器定义了一个在你准备部署之前开发你的应用程序的环境。虽然部署和开发容器可能相似,但你可能不希望在部署图像中包含你在开发期间使用的工具。

devcontainers/templates 仓库包含一些常见开发环境的 dev container 定义。你也可以附加到一个正在运行的容器,如果你更喜欢使用其他容器构建或部署工作流。

“dev containers definitions”是否定义了如何构建一个应用程序?比如Buildpacks?

不。 构建包 概念关注的是通过一系列定义的步骤从源代码生成可部署的容器镜像。开发容器是在你准备好构建之前可以开发应用程序的环境。因此,它们是互补的概念。

当我尝试将本地文件系统挂载到容器中时,我看到了错误。

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

参见Docker Desktop for Windows提示,了解解决常见Docker for Windows问题的变通方法。

我看到一个关于缺少库或依赖的错误。

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

我可以同时连接到多个容器吗?

目前一个 VS Code Windows只能连接到一个Windows,但你可以打开一个新Windows并附加到已经运行的容器或使用一个包含多个devcontainer.json 文件 以稍微自动化这个过程。

我可以在远程主机上使用容器吗?

是的,参见 在远程 SSH 主机上打开文件夹在容器中的远程 Tunnels 主机 部分获取信息。

如何在容器内构建或部署本地Docker/Kubernetes的容器镜像?

您可以通过在容器中转发Docker套接字并安装Docker CLI(以及Kubernetes的kubectl)来构建镜像和部署容器。详情请参阅Docker outside of DockerDocker outside of Docker ComposeKubernetes-Helm dev container定义。

VS Code Server 在容器中运行时的连接要求是什么?

安装 VS Code Server 需要您的本地机器具有到以下地址的 outbound HTTPS (端口 443) 连接:

  • 更新.code.visualstudio.com
  • vscode下载.prss.microsoft.com

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

您可以在没有互联网连接的情况下手动安装扩展,使用 扩展:从 VSIX 安装... 命令,但如果您使用扩展面板或 devcontainer.json要安装扩展,您的本地机器和 VS Code Server 需要访问以下内容的 outbound 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 执行通过Docker配置的通信频道与它进行通信。

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

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

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

以下文章可能会帮助您回答问题:

我可以在 VS Code 之外使用 dev containers 吗?

随着生产工作负载的容器化变得普遍,开发容器在 VS Code 之外的情境中也变得有用。我们正在创建开发容器规范,以帮助任何人使用任何工具配置一致的开发环境。它旨在找到丰富现有格式的方法,加入常见的开发特定设置、工具和配置,同时仍然提供一个简化、未编排的单容器选项,以便它们可以用作编码环境或持续集成和测试。

您可以在 containers.dev 上了解更多并查看规范,您可以在 devcontainers/spec 源代码库(在 GitHub 上)查看活跃的提案并为规范做出贡献。