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

condas`source activate virtualenv`在Dockerfile中不起作用

严宸
2023-03-14
问题内容

情境

我正在尝试基于公共continuumio /
anaconda3
容器设置一个简单的docker映像(
对于docker我是一个新手,所以请更正我可能的误解
)。

Dockerfile

FROM continuumio/anaconda3:latest

# update conda and setup environment
RUN conda update conda -y \
    && conda env list \
    && conda create -n testenv pip -y \
    && source activate testenv \
    && conda env list

以此docker build -t test .结束建筑物和图像,并显示以下错误:

/bin/sh: 1: source: not found

激活新的虚拟环境时。

建议1:

按照这个答案,我尝试了:

FROM continuumio/anaconda3:latest

# update conda and setup environment
RUN conda update conda -y \
    && conda env list \
    && conda create -y -n testenv pip \
    && /bin/bash -c "source activate testenv" \
    && conda env list

乍一看,这似乎很有效,因为它输出:prepending /opt/conda/envs/testenv/bin to PATH,但conda env list屁股echo $PATH清楚地表明它没有:

[...]
# conda environments:
#
testenv                  /opt/conda/envs/testenv
root                  *  /opt/conda

---> 80a77e55a11f
Removing intermediate container 33982c006f94
Step 3 : RUN echo $PATH
---> Running in a30bb3706731
/opt/conda/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

docker文件作为MWE开箱即用。我感谢任何想法。谢谢!


问题答案:

使用docker ENV指令,可以将虚拟环境路径永久添加到PATH尽管这不能解决列出的选定环境conda env list

请参阅MWE:

FROM continuumio/anaconda3:latest

# update conda and setup environment
RUN conda update conda -y \
    && conda create -y -n testenv pip

ENV PATH /opt/conda/envs/testenv/bin:$PATH

RUN echo $PATH
RUN conda env list


 类似资料:
  • 问题内容: 情境 我正在尝试基于公共continuumio / anaconda3 容器设置一个简单的docker映像( 对于docker我是一个新手,所以请更正我可能的误解 )。 的: 以此结束建筑物和图像,并显示以下错误: 激活新的虚拟环境时。 建议1: 按照这个答案,我尝试了: 乍一看,这似乎很有效,因为它输出:,但屁股清楚地表明它没有: docker文件作为MWE开箱即用。我感谢任何想法。

  • 当我试图用Dockerfile构建自己的docker图像时,我发现在使用添加或复制命令后,文件没有复制到我的图像中。 为了测试ADD命令,我创建了一个简单的dockerfile,如下所示: 我的文件结构很简单,如下所示: 当我使用docker build命令构建图像时,过程如下: 该过程以cat命令未找到测试结束。我用dockerfile脚本将txt添加到图像中。 这让我很困惑,我在不同的环境下尝

  • 问题内容: 我的Dockerfile创建一个目录,将其chown,然后再列出该目录。该目录仍归root用户所有。这是为什么? 这是Dockerfile: 这是“ docker build”的输出: Docker版本1.2.0,构建fa7b24f 主机运行Ubuntu 12.04,但具有3.13.0-36通用内核。 问题答案: 回答我自己的问题:它声明为卷。如果取出VOLUME指令,则将生效。 此外

  • 发生了什么:在Dockerfile中添加“user 999:999”,将默认的uid和gid添加到容器映像中,然后在Pod中启动容器,它的uid是999,但是gid是0。 在Docker启动的容器中,ID正确 但以Pod开始时,gid为0 如果Dockerfile运行额外的“useradd”命令,那么Pod中的gid似乎是正常的 则Pod容器中的ID与Dockerfile中设置的ID相同

  • 问题内容: 我有一个Dockerfile,我正在将其安装在一起以安装Vanilla python环境(稍后将在其中安装应用程序)。 构建运行正常,直到最后一行,我得到以下异常: 如果我进入该目录(只是为了测试是否已完成前面的步骤),我可以看到文件按预期存在: 如果我尝试仅运行命令,则会收到与上述相同的“未找到”错误。但是,如果我运行交互式shell会话,则源代码确实可以工作: 我可以从这里运行脚本

  • 我有一个Dockerfile,我将把它放在一起安装一个vanilla python环境(我将在其中安装一个应用程序,但以后再安装)。 构建运行正常,直到最后一行,我得到以下异常: 从Dockerfile运行指令运行shell脚本的最佳方法是什么来解决这个问题(我运行Ubuntu12.04LTS的默认基本映像)。