当前位置: 首页 > 面试题库 >

在dockerfile中运行conda更新时出现问题

濮阳繁
2023-03-14
问题内容

我正在尝试使用一些conda环境创建一个docker容器。当我在交互模式下运行容器时

conda update --all
conda env create -f env.yml

运行没有问题。但是,每当我尝试使用Docker文件执行这些命令时,我都会收到

/bin/sh: 1: conda: command not foud

Docker文件如下所示:

FROM ubuntu:latest
RUN apt-get update && \
    apt-get install unzip && \
    mkdir /install && \
    apt-get install nano
COPY Anaconda3-2018.12-Linux-x86_64.sh env.yml /install/
WORKDIR /install
RUN bash Anaconda3-2018.12-Linux-x86_64.sh -b && \
    echo "export PATH="/root/anaconda3/bin:$PATH"" >> ~/.bashrc && \
    /bin/bash -c "source ~/.bashrc"
RUN conda update --all
RUN conda env create -f env.yml

因此似乎使用了sh而不是bash,所以我将Dockerfile编辑为以下内容:

FROM ubuntu:latest
RUN apt-get update && \
    apt-get install unzip && \
    mkdir /install && \
    apt-get install nano
COPY Anaconda3-2018.12-Linux-x86_64.sh env.yml /install/
WORKDIR /install
RUN bash Anaconda3-2018.12-Linux-x86_64.sh -b && \
    echo "export PATH="/root/anaconda3/bin:$PATH"" >> ~/.bashrc && \
    /bin/bash -c "source ~/.bashrc"
RUN /bin/bash -c "conda update --all"

有以下错误

/bin/bash: conda: command not found

问题答案:

您必须在构建期间使用ENV变量将anaconda添加到PATH中,然后才能在Dockerfile中执行anaconda。

RUN bash Anaconda3-2018.12-Linux-x86_64.sh -b && \
    echo "export PATH="/root/anaconda3/bin:$PATH"" >> ~/.bashrc && \
    /bin/bash -c "source ~/.bashrc"
ENV PATH /root/anaconda3/bin:$PATH
RUN conda update --all

使用.bashrc更新.bashrc中的PATH可以在使用时在容器内调用conda docker run,但不能在RUNdocker文件中的其他语句中调用。



 类似资料:
  • 不同的问题,主要与用户名称空间的数量有关。 尝试运行预构建的映像会产生: 所以我不能真正运行这个东西。然后试图运行一个本地构建的容器,它创建了一个我得到的用户: 已使用subuid设置配置 虽然 所以一定有什么东西我错过了,或者我应该在这里重新开始。即使我再次登录,结果还是一样。所以一定是我做错了什么。

  • 我有一个表,我想用另一个表中的值更新该表,我正在使用以下代码: 尽管事实上,表。id是tableA的主键,我不断得到以下错误: 错误代码:1175。您使用的是安全更新模式,并且您试图更新一个没有使用键列禁用安全模式的表,请在“首选项”中切换该选项- 我做错了什么?

  • 当我想更新JavaFX中的时,出现了一个问题。 调试很混乱,因为我找不到异常的原因。我在网上搜索了一下,但没有找到对我有用的东西。希望有人能帮我解决这个问题。

  • 问题内容: 我试图让我的程序在执行某些操作的同时,在一种方法中不断更新进度条的值。但是,这种情况直到最后都不会发生,并且UI冻结。 在解决了与我的问题相关的类似问题之后,我尝试实现了公认的解决方案(使用线程),但是我无法使其正常工作。就像他们不在那里一样。 我的程序包含几个类,它们是由netbeans在JFrame 设计 模式下自动创建的,因此某些内容(例如和)并不能真正确定其某些内容。在下面,我