首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >建筑码头: opt/conda/bin/conda未找到

建筑码头: opt/conda/bin/conda未找到
EN

Stack Overflow用户
提问于 2020-08-11 13:29:14
回答 1查看 2.3K关注 0票数 3

我对docker完全陌生,我需要在docker环境中运行代码。

我在构建Dockerfile时出错:

我通过hyper-V运行Ubuntu 20.04,当我构建Dockerfile时,我得到以下消息:

代码语言:javascript
复制
Step 4/20 : RUN curl -o ~/miniconda.sh -O  https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh  &&      chmod +x ~/miniconda.sh &&      ~/miniconda.sh -b -p /opt/conda &&      rm ~/miniconda.sh &&      /opt/conda/bin/conda install numpy pyyaml scipy ipython mkl &&      /opt/conda/bin/conda install -c soumith magma-cuda90 &&      /opt/conda/bin/conda clean -ya <br />
 ---> Running in 9758f4fe60a4 <br />
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current 

                                 Dload  Upload   Total   Spent    Left  Speed 
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0 
/bin/sh: 1: /opt/conda/bin/conda: not found
The command '/bin/sh -c curl -o ~/miniconda.sh -O  https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh  &&      chmod +x ~/miniconda.sh &&      ~/miniconda.sh -b -p /opt/conda &&      rm ~/miniconda.sh &&      /opt/conda/bin/conda install numpy pyyaml scipy ipython mkl &&      /opt/conda/bin/conda install -c soumith magma-cuda90 &&      /opt/conda/bin/conda clean -ya' returned a non-zero code: 127

Dockerfile:

代码语言:javascript
复制
# PyTorch Install
FROM nvidia/cuda:9.0-cudnn7-devel-ubuntu16.04

RUN apt-get update && apt-get install -y --no-install-recommends \
         build-essential \
         cmake \
         git \
         curl \
         vim \
     emacs \
         parallel \
         ca-certificates \
         libjpeg-dev \
     hdf5-tools \
         libpng-dev &&\
     rm -rf /var/lib/apt/lists/*


RUN mkdir ~/.parallel && touch ~/.parallel/will-cite

RUN sudo curl -o ~/miniconda.sh -O  https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh  && \
     chmod +x ~/miniconda.sh && \
     ~/miniconda.sh -b -p /opt/conda && \     
     rm ~/miniconda.sh && \
     /opt/conda/bin/conda install numpy pyyaml scipy ipython mkl && \
     /opt/conda/bin/conda install -c soumith magma-cuda90 && \
     /opt/conda/bin/conda clean -ya 
ENV PATH /opt/conda/bin:$PATH 
# This must be done before pip so that requirements.txt is available
WORKDIR /opt/pytorch
COPY . .
RUN conda install pytorch torchvision -c pytorch

#
# Now install the julia dependencies.
#
WORKDIR /opt/julia
RUN pip install pandas matplotlib utils argh biopython
RUN conda install networkx joblib

RUN apt-get update && apt-get install -y curl
RUN mkdir /julia
RUN curl -L https://julialang-s3.julialang.org/bin/linux/x64/0.6/julia-0.6.2-linux-x86_64.tar.gz | tar -C /julia --strip-components=1  -xzf -
ENV PATH "/julia/bin:$PATH"
RUN julia -e "Pkg.init()"
COPY setup.jl /julia/setup.jl
RUN julia /julia/setup.jl

WORKDIR /root/hyperbolics
ENV PYTHONPATH /root/hyperbolics

当我在命令提示符下直接运行命令时,效果很好。

然而,当我构建Dockerfile、julia、pip等时,每个命令都是'not found'。(当我评论康达时.(第一部分)

我该如何解决这个问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-11 22:57:45

/bin/sh: 1: /opt/conda/bin/conda: not found错误是由于没有正确安装conda造成的。这是因为您下载的miniconda.sh文件(与curl -o ~/miniconda.sh -O https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh一起)是一个空文件。

这是因为默认情况下,curl不跟随重定向和上面的url的响应直接发送重定向而不是miniconda.sh文件。您可以通过检查URL的标题来验证这一点(例如,curl -i https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh显示HTTP301重定向状态代码)。

您可以通过告诉curl遵循重定向,通过在curl命令中提供-L标志来解决这个问题,例如:

(我还不得不删除sudo)

代码语言:javascript
复制
RUN curl -L -o ~/miniconda.sh -O  https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh  && \
     chmod +x ~/miniconda.sh && \
     ~/miniconda.sh -b -p /opt/conda && \     
     rm ~/miniconda.sh && \
     /opt/conda/bin/conda install numpy pyyaml scipy ipython mkl && \
     /opt/conda/bin/conda install -c soumith magma-cuda90 && \
     /opt/conda/bin/conda clean -ya 

以下是一些调试信息/研究:

您可以通过查看上面代码段中的curl输出来验证空白的miniconda.sh是问题所在。它看上去有点神秘,但你可以看到实际上没有任何东西被下载。

代码语言:javascript
复制
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current 

                                 Dload  Upload   Total   Spent    Left  Speed 
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0 

当我尝试使用添加的-L标志构建码头映像时,输出如下所示:

代码语言:javascript
复制
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:--  0:00:03 --:--:--     0
100 88.7M  100 88.7M    0     0  11.9M      0  0:00:07  0:00:07 --:--:-- 34.7M

还可以手动检查miniconda.sh的内容,方法是删除下载/运行部分中的所有内容。

(例如,保持每件事都符合本部的要求)

代码语言:javascript
复制
RUN sudo curl -o ~/miniconda.sh -O  https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh  && \
     chmod +x ~/miniconda.sh && \
     ~/miniconda.sh -b -p /opt/conda

然后运行sudo docker run -it containername /bin/bash并检查miniconda.sh的内容(显示文件为空的cat ~/miniconda.sh)。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63359198

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档