在 Linux 中开发时,将开发环境与系统隔离的标准方法是什么?例如,当我处理系统已经使用的应用程序或包时。我知道我可以使用虚拟机。Linux 容器也可以使用吗?在虚拟化和容器之前如何执行这种隔离?'chroot' 是这个工具吗?我正在做 C 和 C++ 开发。
3 回答
没有真正的整体标准,但或多或少的标准方法取决于技术堆栈。例如,virtualenv 在 python 中几乎无处不在。Node 至少有两个流行的选项。
许多人使用虚拟机,尤其是与 vagrant(或 docker 和 docker-compose 以获得更轻量级的解决方案)之类的工具结合使用。
我的理解是,就它们所需的工具而言,c 和 c++ 是相当轻量级的。请参阅是否有任何类似于 c++ 的 virtualenv 工具?. 但是,如果您包含操作系统级别的依赖项,例如 DB 驱动程序等,您可能需要一些东西来处理不同项目的不同环境。
研究 vagrant 以及一些虚拟机技术或 docker plus docker-compose。
Red Hat 通过其开发工具集(DTS)提供更新的 GCC 版本(例如 5.2 )。这些较新的 GCC 版本与系统工具链一起运行,因此您不会因为它安装在文件系统的另一部分而搞砸了。这可能足以满足您的需求,但如果您还想要容器隔离,还有一个DTS 的 Docker 映像版本,可以通过 Red Hat 容器开发工具包 ( CDK ) 使用。
Linux 容器尽可能接近 Linux 上的标准隔离环境,无论是用于开发还是其他目的。你可以找到大量的开发镜像,例如这些 GCC Docker 镜像,或者根据你最喜欢的发行版自己创建一个,并包含你需要的所有构建工具和依赖项。
Vagrant是另一个有助于管理构建环境的有用工具,但如果您使用多个平台的 VM,它最有用。如果你只打算使用 Linux 容器,你可能不需要 Vagrant。