docker - 如何调试 nvidia-docker build 中缺少的路径
问题描述
我正在创建一个 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
推荐阅读
- r - 如何添加手动离散颜色填充向量ggmap
- java - 错误:无法打开 D:\Java2\lib\i386\jvm.cfg
- python - 使用 python pandas 存储数据时出现值错误
- jquery - 当我使用“modal-dialog-scrollable”类时,scrollTop 不适用于引导程序 5 中的模式内容
- go - 发布一个 golang 模块:语义版本控制
- asp.net-core-webapi - 如何在 Ocelot 和 .Net WebApi 中覆盖 AuthorizationMiddleware 时返回未经授权的响应
- node.js - Smartsheet 提取工作表范围以在另一个工作表中重用 - node.js
- python - 如何在烧瓶应用程序中打开多个 url
- r - 使用 for 循环将布尔向量简单转换为字符串向量
- django - django Field 'id' 期望一个数字,但得到了