开发容器常见问题解答
本文包含了一些常见问题,帮助您在不同环境中启动并运行Dev Containers扩展。
“开发容器定义”是否定义了应用程序的部署方式?
不。开发容器定义了一个环境,在这个环境中,你在准备部署之前开发你的应用程序。虽然部署和开发容器可能相似,但你可能不希望将开发期间使用的工具包含在部署镜像中。
devcontainers/templates 仓库包含一些常见开发环境的开发容器定义。如果您更喜欢使用替代的容器构建或部署工作流,您也可以附加到正在运行的容器,而无需设置开发容器定义。
“开发容器定义”是否定义了应用程序的构建方式?像Buildpacks那样?
不。Buildpacks 的概念侧重于通过一系列定义的步骤将源代码转换为可部署的容器镜像。而开发容器是一个环境,您可以在准备构建之前在其中开发应用程序。因此,它们是互补的概念。
尝试将本地文件系统挂载到容器时出现错误
右键点击Docker任务栏图标。在Windows上,选择设置菜单项,然后选择资源 > 文件共享,并勾选你的源代码所在的驱动器。在macOS上,选择偏好设置菜单项,然后选择资源 > 文件共享,并确保包含你源代码的文件夹在列表中指定的文件路径下。
请参阅Docker Desktop for Windows 提示以获取有关解决常见 Docker 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 Docker、Docker outside of Docker Compose和Kubernetes-Helm开发容器定义。
VS Code 服务器在容器中运行时需要满足哪些连接要求?
安装VS Code服务器需要您的本地机器具有出站HTTPS(端口443)连接到:
update.code.visualstudio.com
vscode.blob.core.windows.net
*.vo.msecnd.net
(Azure CDN)
Dev Containers 扩展将在本地下载 VS Code 服务器,并在连接后将其复制到容器中。
您可以使用扩展:从VSIX安装...命令在没有互联网连接的情况下手动安装扩展,但如果您使用扩展面板或devcontainer.json
来安装扩展,您的本地机器和VS Code服务器将需要出站HTTPS(端口443)访问以下内容:
marketplace.visualstudio.com
*.vo.msecnd.net
(Azure CDN)*.gallerycdn.vsassets.io
(Azure CDN)
最后,一些扩展(如C#)会从download.microsoft.com
或download.visualstudio.microsoft.com
下载次要依赖项。其他扩展(如Visual Studio Live Share)可能有额外的连接要求。如果遇到问题,请查阅扩展的文档以获取详细信息。
VS Code 服务器在容器内的随机端口上运行,VS Code 本身使用 docker exec
通过 Docker 配置的通信通道与其通信。
作为扩展作者,我需要做些什么来确保我的扩展正常工作?
VS Code 扩展 API 隐藏了远程运行的大部分实现细节,因此许多扩展无需任何修改即可在开发容器中正常工作。但是,我们建议您在开发容器中测试您的扩展,以确保其所有功能按预期工作。有关详细信息,请参阅关于 支持远程开发 的文章。
还有哪些其他资源可能能够回答我的问题?
以下文章可能有助于回答您的问题:
- 高级容器配置 或 技巧与窍门
- Dockerfile 参考
- Docker Compose 文件参考
- Docker Desktop for Windows 故障排除指南 和 常见问题解答
- Docker Desktop for Mac 故障排除指南 和 常见问题解答
- Docker 支持资源
我可以在 VS Code 之外使用开发容器吗?
随着容器化生产工作负载变得普遍,开发容器在VS Code之外的场景中也变得有用。我们正在创建开发容器规范,以使任何人在任何工具中都能配置一致的开发环境。它旨在通过常见的开发特定设置、工具和配置来丰富现有格式,同时仍然提供简化的、非编排的单容器选项——以便它们可以用作编码环境或用于持续集成和测试。
您可以在containers.dev上了解更多信息并查看规范,也可以在GitHub上的devcontainers/spec仓库中查看活跃的提案并为规范做出贡献。