首页 > 解决方案 > 为什么在构建 docker 时出现“conda: command not found”,而在基本映像中,“conda”命令工作正常?

问题描述

我正在尝试从基础映像构建一个 Docker,Dockerfile 是这样的:

FROM my/base/image:latest
RUN conda install package-name
RUN rm -rf /tmp/*
CMD ["/bin/bash"]

我得到“conda:找不到命令”。但是如果我直接将基础镜像作为容器运行,conda 命令就可以正常工作。另外,如果我RUN source ~/.bashrc在 Dockerfile 中添加,当构建过程运行到这一行时,它将进入另一个终端并且不会响应任何命令。在这种情况下发生了什么?如果有人能给我任何建议和建议,我将不胜感激。提前致谢。

标签: pythonbashdockerconda

解决方案


~/.bashrc是由交互式 shell 提供的,这就是当您在容器内使用它时它可以工作的原因。Dockerfile在构建过程中不是这种情况。

conda docker 映像中,conda可执行文件被简单地添加到PATH.

ENV PATH /opt/conda/bin:$PATH

这是一个简单的解决方案。如果您/opt/conda/bin/conda install ...不想更改PATH.

选择

如果您想获取~/.bashrc来源,您可以使用该SHELL指令覆盖用于带有 bash 交互式 shell 的命令的默认 shell(感谢i标志)。

SHELL ["/bin/bash", "-i", "-c"] 
RUN conda install ...

然而,这似乎是一种不太传统的方法。


推荐阅读