【问题标题】:Why do I got "conda: command not found" when building a docker, while in base image the "conda" command works fine?为什么在构建 docker 时出现“conda: command not found”,而在基本映像中,“conda”命令工作正常?
【发布时间】:2021-09-20 18:33:03
【问题描述】:

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

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

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

【问题讨论】:

  • 补充一些有用的信息:在基础镜像中,不需要运行“source ~/.bashrc”,我可以直接使用“conda”命令
  • 也许可以试试CMD ["/bin/bash", "-l"]

标签: python bash docker conda


【解决方案1】:

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

conda docker image 中,只需将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 ...

但它似乎是一种不太传统的方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-13
    • 2016-01-24
    • 2019-06-27
    • 2019-06-06
    • 2020-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多