Docker 中没有名为 conda 的模块

我正在尝试创建一个安装了 miniconda3 的 docker 映像。我不想直接使用docker hub 中提供的基础映像,而是想从头开始创建自己的 Dockerfile 并将 Continumio/miniconda3 映像的 Dockerfile 的命令放在那里,这些命令是:

FROM debian:latest


#  $ docker build . -t continuumio/miniconda3:latest -t continuumio/miniconda3:4.5.11

#  $ docker run --rm -it continuumio/miniconda3:latest /bin/bash

#  $ docker push continuumio/miniconda3:latest

#  $ docker push continuumio/miniconda3:4.5.11


ENV.UTF-8 LC_ALL=C.UTF-8

ENV PATH /opt/conda/bin:$PATH


RUN apt-get update --fix-missing && \

    apt-get install -y wget bzip2 ca-certificates curl git && \

    apt-get clean && \

    rm -rf /var/lib/apt/lists/*


RUN wget --quiet https://repo.anaconda.com/miniconda/Miniconda3-4.5.11-Linux-x86_64.sh -O ~/miniconda.sh && \

    /bin/bash ~/miniconda.sh -b -p /opt/conda && \

    rm ~/miniconda.sh && \

    /opt/conda/bin/conda clean -tipsy && \

    ln -s /opt/conda/etc/profile.d/conda.sh /etc/profile.d/conda.sh && \

    echo ". /opt/conda/etc/profile.d/conda.sh" >> ~/.bashrc && \

    echo "conda activate base" >> ~/.bashrc


ENV TINI_VERSION v0.16.1

ADD https://github.com/krallin/tini/releases/download/${TINI_VERSION}/tini /usr/bin/tini

RUN chmod +x /usr/bin/tini


ENTRYPOINT [ "/usr/bin/tini", "--" ]

CMD [ "/bin/bash" ]

构建和运行容器效果很好。conda info作为参考,以下是容器中的输出:


(base) root@def48bd1ed5d:/# conda info


     active environment : base

    active env location : /opt/conda

            shell level : 1

       user config file : /root/.condarc

 populated config files : 

          conda version : 4.5.11

    conda-build version : not installed

         python version : 3.7.0.final.0




一只萌萌小番薯
浏览 122回答 1
1回答

暮色呼如

miniconda3Dockerfile 内的安装行中指定的版本不是最新版本您用于构建本地映像的Dockerfile将安装miniconda3-4.5.11不是最新版本。你可以在这里找到它:...RUN wget --quiet https://repo.anaconda.com/miniconda/Miniconda3-4.5.11-Linux-x86_64.sh -O ~/miniconda.sh && \    /bin/bash ~/miniconda.sh -b -p /opt/conda &&...也以这种方式docker:$ docker build --tag miniconda3:test .$ docker docker run -i -t miniconda3:test /bin/bash$ docker history --no-trunc miniconda3:test | grep Miniconda3/bin/sh -c wget --quiet https://repo.anaconda.com/miniconda/Miniconda3-4.5.11-Linux-x86_64.sh -O ~/miniconda.sh && ...好吧,现在我们看一下官方continuumio/miniconda3:$ docker run -i -t continuumio/miniconda3 /bin/bash进而:$ docker history --no-trunc continuumio/miniconda3 | grep Miniconda3/bin/sh -c wget --quiet https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda.sh && ...正如您所看到的,continuumio/miniconda3DockerHub 中的映像安装的是最新版本miniconda3 4.8.2,而不是4.5.11版本。因此,从中构建的本地映像Dockerfile将生成带有miniconda3:4.5.11.python版本变更中断conda现在,让我们找出conda失败的原因。首先构建并运行:$ docker build --tag miniconda3:test .$ docker docker run -i -t miniconda3:test /bin/bash获取一些信息:(base) root@61cafd17d954:/# conda info     active environment : base    active env location : /opt/conda            shell level : 1       user config file : /root/.condarc populated config files :           conda version : 4.5.11    conda-build version : not installed         python version : 3.7.0.final.0       base environment : /opt/conda  (writable)           channel URLs : https://repo.anaconda.com/pkgs/main/linux-64                          https://repo.anaconda.com/pkgs/main/noarch                          https://repo.anaconda.com/pkgs/free/linux-64                          https://repo.anaconda.com/pkgs/free/noarch                          https://repo.anaconda.com/pkgs/r/linux-64                          https://repo.anaconda.com/pkgs/r/noarch                          https://repo.anaconda.com/pkgs/pro/linux-64                          https://repo.anaconda.com/pkgs/pro/noarch          package cache : /opt/conda/pkgs                          /root/.conda/pkgs       envs directories : /opt/conda/envs                          /root/.conda/envs               platform : linux-64             user-agent : conda/4.5.11 requests/2.19.1 CPython/3.7.0 Linux/5.4.0-48-generic debian/10 glibc/2.28                UID:GID : 0:0             netrc file : None           offline mode : False好吧,我们conda:4.5.11有python:3.7.0。现在,我们要安装jupyter,例如:(base) root@61cafd17d954:/# conda install jupyter您可能会注意到,此安装将更新python:The following packages will be UPDATED:...    python:             3.7.0-hc3d631a_0        --> 3.8.5-h7579374_1       ...如果继续,这将更新python并会中断conda:...Preparing transaction: doneVerifying transaction: doneExecuting transaction: doneTraceback (most recent call last):  File "/opt/conda/bin/conda", line 7, in <module>    from conda.cli import mainModuleNotFoundError: No module named 'conda'更新conda或Dockerfile使用miniconda3:latest此问题有 3 种可能的解决方案:Dockerfile通过替换此行来编辑您的:RUN wget --quiet https://repo.anaconda.com/miniconda/Miniconda3-4.5.11-Linux-x86_64.sh -O ~/miniconda.sh && \和RUN wget --quiet https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda.sh && \使用最新的官方Dockerfile版本。conda使用前更新容器内部:(base) root@61cafd17d954:/# conda update conda
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python