OCI 容器是一种为项目打包合适工具链的便捷方式,使开发环境保持一致,新项目成员只需签出项目并拉取相关容器即可快速启动。
- 当然,我不是在谈论只需要 C++ 编译器或 Node.JS 的项目。我说的是需要特定编译器包的项目,这些包不适用于比 Fedora 22 更新的版本,需要手动安装到陌生地方的特殊工具的项目,在具有不可共同安装的工具的多个项目上工作等等. 对于这类事情,拥有一个容器比遵循二十个安装步骤然后祈祷之前项目留下的部分不会为您破坏事情要容易得多。
但是,使用编译器启动容器来构建项目需要 docker (或 podman )命令行上的很多选项。除了图像名称,通常:
- 挂载项目工作目录
- 用户 ID(因为容器应该在用户运行它时访问挂载的文件)
- 如果该工具需要访问某些网络资源,它可能还需要
- 一些凭据,通过环境或其他方式
- ssh 代理套接字(挂载和环境变量)
- 如果构建过程涉及构建 docker 容器
- 码头插座(安装);buildah可以在没有特殊设置的情况下工作
- 如果是图形工具(例如 IDE)
- X 套接字安装和环境变量
--ipc host
使共享内存工作
然后它可能会因其他因素而变得更加复杂。例如,如果开发人员位于不同的部门并且无法访问同一个 docker 存储库,则他们的图像可能会以不同的方式调用,因为docker不支持存储库的符号名称(尽管podman支持)。
是否有一些标准(ish)方法来处理这些选项,或者每个人都只是使用临时包装脚本?