构建自定义Docker镜像时应选用Conda还是Mamba
结论
你当前直接调用/opt/conda/bin/conda的写法完全正确,可正常运行,不需要强制替换为mamba;替换为mamba只会提升依赖解析效率,不会改变最终的安装结果。
具体说明
- mamba是conda的C++实现即插即用替代方案,命令参数、环境操作逻辑、存储结构和conda完全兼容,两种工具操作的都是镜像内
/opt/conda路径下的同一套环境,不存在用conda安装就会出问题、和基础镜像预装环境冲突的情况。 - jupyter系列官方镜像预装mamba,只是官方为了缩短自身镜像构建时的依赖解析耗时,没有对conda做任何功能阉割,也没有强制要求用户必须使用mamba做环境管理。
可选优化建议
如果你的构建过程出现依赖解析慢、长时间卡在Solving environment步骤、甚至解析失败报版本冲突的问题,可以直接把命令里的conda替换为mamba,其余参数不需要做任何修改。
另外建议把多个环境操作命令合并为单条RUN指令,安装完成后清理包缓存,能有效减少镜像层数、缩小最终镜像体积,优化后的参考写法如下:
RUN mamba create -n pypy pypy ipykernel -y && \ /opt/conda/envs/pypy/bin/pypy -m ipykernel install --prefix=/opt/conda/ --name pypy3 --display-name="pypy3" && \ mamba install -c conda-forge jupyterlab-git jupyter-resource-usage -y && \ mamba clean --all -y
如果你坚持用conda,只需要把上面代码里的mamba换回conda即可,功能完全一致。
内容的提问来源于stack exchange,提问作者ha9u63a7
相关产品推荐
相关产品推荐

