python - 为什么在构建 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 中添加,当构建过程运行到这一行时,它将进入另一个终端并且不会响应任何命令。在这种情况下发生了什么?如果有人能给我任何建议和建议,我将不胜感激。提前致谢。
解决方案
~/.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 ...
然而,这似乎是一种不太传统的方法。