我正试图从一个基本的图像,Dockerfile是这样的:
FROM my/base/image:latest
RUN conda install package-name
RUN rm -rf /tmp/*
CMD ["/bin/bash"]
,我得到了&;conda: command not found&;但是,如果我直接将基本映像作为容器运行,conda命令可以正常工作。此外,如果我在Dockerfile中添加RUN source ~/.bashrc
,当构建进程运行到这一行时,它将进入另一个终端,并且不会响应任何命令。在这种情况下发生了什么?如果有人能给我任何建议和建议,我将非常感激。提前谢谢。
~/.bashrc
来自交互式shell,这就是为什么当您在容器中使用它时它可以工作的原因。在构建过程中,Dockerfile
不是这种情况。
在conda docker映像中,conda
可执行文件被简单地添加到PATH
中。
ENV PATH /opt/conda/bin:$PATH
这是一个简单的解决方案。如果您不想更改PATH
,也可以调用/opt/conda/bin/conda install ...
(根据您的conda安装进行调整)。
如果您想获得~/.bashrc
的源代码,您可以使用SHELL
指令来覆盖使用bash交互式shell命令的默认shell(多亏了i
标志)。
SHELL ["/bin/bash", "-i", "-c"]
RUN conda install ...
然而,这似乎是一种不太传统的方法。