我对docker完全陌生,我需要在docker环境中运行代码。
我在构建Dockerfile时出错:
我通过hyper-V运行Ubuntu 20.04,当我构建Dockerfile时,我得到以下消息:
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: 127Dockerfile:
# 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'。(当我评论康达时.(第一部分)
我该如何解决这个问题?
发布于 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)
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是问题所在。它看上去有点神秘,但你可以看到实际上没有任何东西被下载。
% 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标志构建码头映像时,输出如下所示:
% 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的内容,方法是删除下载/运行部分中的所有内容。
(例如,保持每件事都符合本部的要求)
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)。
https://stackoverflow.com/questions/63359198
复制相似问题