开发容器
如果您喜欢简化的设置体验,您可以使用开发容器构建项目。这意味着您可以使用与团队的其他成员相同的工具和依赖项,包括我们的持续集成(CI)工作流程,而无需担心在主机上安装依赖项。此外,使用开发容器可以轻松切换本地或远程开发环境,例如 GitHub Codespaces。
参见
有关开发容器的更多信息,请参阅此处:
-
一个用于为容器提供开发特定内容和设置的开放规范
-
学习如何使用Visual Studio Code在Docker容器中进行开发
-
一个托管在云端的开发环境
什么、为什么、如何?
让我们简要解释一下开发容器是什么,为什么应该使用它们以及它们的工作原理
提示
在这里,我们将假设使用VS Code,但同样适用于其他工具和服务,包括其他CLI、IDE等,比如:
-
对于开放规范的参考实现
JetBrains Space | Develop in Dev Environment
使用JetBrain的产品与Dev Containers
-
支持开发容器规范的工具和服务列表
什么是开发容器?
Dev容器是一个包含开发项目所需工具和依赖的Docker容器。它在一个自包含的环境中运行,并与其他容器和主机机器隔离开来。这使得您可以在任何地方可靠地为项目进行开发,特别是针对ROS的Linux发行版,而不受主机机器操作系统的影响。
为什么要使用开发容器?
Dev容器提供了一个共享和一致的开发环境。它确保团队中的每个人都使用相同的工具和依赖项。它还可以轻松切换项目,因为每个项目可以使用不同的容器。如果您同时在多个项目上工作,并且这些项目使用不同版本的相同工具和依赖项(如不同版本的ROS),这将特别有用。
开发容器是如何工作的?
当您在VS Code中打开项目时,VS Code会检查项目根目录下的.devcontainer
文件夹中嵌套的Dev容器配置。如果找到了配置文件,它可以提示您在容器中重新打开项目。如果您选择这样做,它会启动容器,连接到容器,并将您的项目文件夹挂载到容器内。然后,您可以像在本地一样在容器中使用VS Code。在设置容器时,VS Code还可以尝试传递本地环境的一些有用方面,例如git用户配置、X11套接字等。
这与早期用于定制和运行Docker容器的工具非常相似:
-
一种运行带有叠加层和便捷选项(如图形界面等)的Docker容器的工具。
-
一个基于Docker的模块化工具,确保开发者拥有一个共同、一致的开发环境
由Apex.AI开发
前提条件
要使用开发容器,您需要以下内容:
Docker Engine 已安装并在主机上运行
Visual Studio Code 安装在任何远程机器上
在 VS Code 中安装了 Dev Containers 扩展
注解
或者,您可以直接从项目仓库或任何其他远程主机上使用GitHub Codespaces:
-
如何通过GitHub CLI、VS Code或Web浏览器为存储库创建一个codespace
-
如何使用SSH隧道或TCP套接字将VS Code连接到远程Docker主机
入门
使用开发容器的入门方法就是通过以下方式在VS Code中打开项目:要么按照通知提示重新打开容器中的项目,要么显式地打开命令面板(Crtl+Shift+P),然后选择 Remote-Containers: Reopen in Container
。这将创建一个新的容器,在项目的默认 .devcontainer/devcontainer.json
配置文件中安装指定的扩展,并将项目的根目录挂载为工作区文件夹。容器创建完成后,VS Code将连接到容器,您可以开始开发。
小技巧
在 VS Code 中单击启动 Dev Container (显示日志)
通知,可以实时观察制作过程,同时在命令面板中输入Dev Containers: Show Log
将列出所有可用的命令以供查看和重新访问这些日志文件。
在等待初始设置的同时,可以随意活动一下,喝杯咖啡,或者继续阅读以下指南,了解有关创建和使用开发容器,或如何从无头开发环境中可视化和利用图形用户界面的更多信息。
-
如何使用开发容器和支持工具开发Nav2
安全性
小心
在启动衍生的开发容器之前,请确保信任工作区的作者和内容。
在使用开发容器时需要谨慎:它们是强大的工具,但可能存在安全问题,因为由IDE扩展实现的任意代码执行功能为自动化和便利性提供了双重用途。在启动开发容器之前,请确保信任工作区和作者。例如,在审查拉取请求时,请验证补丁是否仍然是良性的,不会引入任何恶意代码。尽管在编译和运行修补代码时需要保持警惕,但使用具有提升权限或文件系统访问权限的容器则需要更加谨慎。