如何在nvidia-docker构建中调试丢失的路径

问题描述

我正在创建一个nvidia-docker映像,并在Dockerfile中包含以下内容:

RUN curl -so /miniconda.sh https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh  && chmod +x /miniconda.sh  && /miniconda.sh -b -p /miniconda  && rm /miniconda.sh
ENV PATH=/miniconda/bin:$PATH
#this is stored in cache ---> fa383a2e1344
# check path
RUN /miniconda/bin/conda

我收到以下错误:

/bin/sh: 1: /miniconda/bin/conda: not found
The command '/bin/sh -c /miniconda/bin/conda' returned a non-zero code: 127

当我使用以下方法测试路径时:

nvidia-docker run --rm fa383a2e1344 ls

然后/ miniconda不存在,因此出现错误。

然后我更改了Dockerfile,以将/ miniconda替换为env var路径,即:

ENV CONDA_DIR $HOME/miniconda
# Install Miniconda
RUN curl -so /miniconda.sh https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh \
 && chmod +x /miniconda.sh \
 && /miniconda.sh -b -p CONDA_DIR \
 && rm /miniconda.sh

ENV PATH=$CONDA_DIR:$PATH

# check path
RUN $CONDA_DIR/conda

并得到错误:

/bin/sh: 1: /miniconda/conda: not found
The command '/bin/sh -c $CONDA_DIR/conda' returned a non-zero code: 127

解决方法

我可以通过将路径设置为当前目录来工作,而不用点击/

   WORKDIR /miniconda
   RUN curl -so ./miniconda.sh https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh \
    && chmod +x ./miniconda.sh \
    && ./miniconda.sh -b -p CONDA_DIR

以下是构建结果供参考

  docker build - < Dockerfile 
  Sending build context to Docker daemon  3.072kB
  Step 1/5 : FROM node:12.16.0-alpine
   ---> 466593119d17
  Step 2/5 : RUN apk update && apk add --no-cache curl
   ---> Using cache
   ---> 1d6830c38dfa
  Step 3/5 : WORKDIR /miniconda
   ---> Using cache
   ---> 8ee9890a7109
  Step 4/5 : WORKDIR /miniconda
   ---> Running in 63238c179aea
  Removing intermediate container 63238c179aea
   ---> 52f571393bf6
  Step 5/5 : RUN curl -so ./miniconda.sh https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh       && chmod +x ./miniconda.sh       && ./miniconda.sh -b -p CONDA_DIR
   ---> Running in b59e945ad7a9
  Removing intermediate container b59e945ad7a9
   ---> 74ce06c9af66
  Successfully built 74ce06c9af66

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...