上QQ阅读APP看书,第一时间看更新
1.9.1 为什么选择Docker
在ROS中,一个项目可能包含多个元包,每一个元包都包含对应的子包,每一个包的正常工作都需要对应的依赖项。对于开发人员来说,在ROS中设置功能包是非常麻烦的,因为不同的功能包使用的依赖项既可能相同也可能不同,相同的依赖项又可能是不同的版本,这些情况是十分常见的,而又有可能导致编译问题。一个典型的例子是,当我们想要在ROS Indigo中使用OpenCV3时,不同版本的视觉算法或gazebo_ros_controller功能包将会导致著名的严重错误(https://github.com/ros-simulation/gazebo_ros_pkgs/issues/612)。当开发人员试图进行修复时,可能会因在修复过程中更改了功能包或依赖项的版本而导致项目无法工作。解决上述问题的方法有许多种,一种较为有效的方法是在ROS中使用Docker容器。与操作系统中的任何进程不同,容器速度很快,可以在几秒内启动或停止。操作系统或软件包上的任何升级或更新都不会影响内部的容器或外部的其他容器。