我试过很多事情
.profile
文件,并使用source
命令dockerfile和build dockerfile的结果示例如下
ARG handler_file=handler.py
ARG handler_name=Handler
ARG HANDLER_DIR=/handler
ARG HANDLER_FILE=${HANDLER_DIR}/${handler_file}
ARG HANDLER_NAME=${handler_name}
# Global arguments for Nvidia-docker
ARG CUDA_VERSION=9.0
ARG CUDNN_VERSION=7.4.1.5
ARG UBUNTU_VERSION=16.04
# == MutiStage Build ==
# 1-Stage
FROM python:3.7-alpine
ARG HANDLER_DIR
ARG HANDLER_FILE
ARG HANDLER_NAME
ARG handler_file
ARG handler_name
ARG CUDA_VERSION
RUN echo "${CUDA_VERSION}"
RUN mkdir -p ${HANDLER_DIR}
WORKDIR ${HANDLER_DIR}
COPY . .
RUN touch ${HANDLER_DIR}/__init__.py
# 2-Stage
FROM nvidia/cuda:${CUDA_VERSION}-devel-ubuntu${UBUNTU_VERSION}
# For Nvidia-Docker
ARG CUDA_VERSION
ARG CUDNN_VERSION
RUN echo "${CUDA_VERSION}"
# Copy directory from 1-stage
ARG HANDLER_DIR
RUN mkdir -p ${HANDLER_DIR}
WORKDIR ${HANDLER_DIR}
COPY --from=0 ${HANDLER_DIR} .
RUN echo "/usr/local/cuda-${CUDA_VERSION}/extras/CUPTI/lib64" > /etc/ld.so.conf.d/cupti.conf
RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential \
wget \
tar \
libgomp1 \
libcudnn7=${CUDNN_VERSION}-1+cuda${CUDA_VERSION} \
python \
python-dev \
python-numpy \
python-pip \
python-setuptools \
python3 \
python3-dev \
python3-numpy \
python3-pip \
python3-setuptools \
python3-tk \
libgtk2.0-dev \
${ADDITIONAL_PACKAGE} \
&& rm -rf /var/lib/apt/lists/*
ENV LD_LIBRARY_PATH /usr/local/cuda/extras/CUPTI/lib64:$LD_LIBRARY_PATH
RUN pip3 --no-cache-dir install --upgrade \
pip setuptools
RUN pip3 install --upgrdae pip && \
pip3 install -r requirements.txt
...
Step 9/33 : FROM python:3.7-alpine
---> 2caaa0e9feab
...
Step 16/33 : RUN echo "${CUDA_VERSION}"
---> Running in d057b0fd57a7
9.0
...
Step 21/33 : FROM nvidia/cuda:${CUDA_VERSION}-devel-ubuntu${UBUNTU_VERSION}
---> 2f9810b1b916
...
Step 24/33 : RUN echo "${CUDA_VERSION}"
---> Running in dc676c2a2992
9.0.176
...
Step 30/33 : RUN apt-get update && apt-get install -y --no-install-recommends build-essential wget tar libgomp1 libcudnn7=${CUDNN_VERSION}-1+cuda${CUDA_VERSION} python python-dev python-numpy python-pip python-setuptools python3 python3-dev python3-numpy python3-pip python3-setuptools python3-tk libgtk2.0-dev ${ADDITIONAL_PACKAGE} && rm -rf /var/lib/apt/lists/*
---> Running in 8518fb8d755c
...
E: Version '7.4.1.5-1+cuda9.0.176' for 'libcudnn7' was not found
The command '/bin/sh -c apt-get update && apt-get install -y --no-install-recommends build-essential wget tar libgomp1 libcudnn7=${CUDNN_VERSION}-1+cuda${CUDA_VERSION} python python-dev python-numpy python-pip python-setuptools python3 python3-dev python3-numpy python3-pip python3-setuptools python3-tk libgtk2.0-dev ${ADDITIONAL_PACKAGE} && rm -rf /var/lib/apt/lists/*' returned a non-zero code: 100
我是这样解决我的问题的
我在问题https://github.com/docker/for-linux/issues/713上发表了文章
# Global arguments for Nvidia-docker
ARG CUDA_VERSION=9.0
ARG CUDNN_VERSION=7.4.1.5
ARG UBUNTU_VERSION=16.04
ARG BACKUP=${CUDA_VERSION}
...
RUN echo "/usr/local/cuda-${BACKUP}/extras/CUPTI/lib64" > /etc/ld.so.conf.d/cupti.conf
RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential \
wget \
tar \
libgomp1 \
libcudnn7=${CUDNN_VERSION}-1+cuda${BACKUP} \
python \
python-dev \
python-numpy \
python-pip \
python-setuptools \
python3 \
python3-dev \
python3-numpy \
python3-pip \
python3-setuptools \
python3-tk \
libgtk2.0-dev \
${ADDITIONAL_PACKAGE} \
&& rm -rf /var/lib/apt/lists/*
...
DockerFile
# Arguments for Nvidia-Docker
# all combination set in CUDA, cuDNN, Ubuntu is not Incompatible please check REFERENCE OF NVIDIA-DOCKER
# REFERENCE OF NVIDIA-DOCKER
# https://hub.docker.com/r/nvidia/cuda/
ARG handler_file=handler.py
ARG handler_name=Handler
ARG HANDLER_DIR=/handler
ARG HANDLER_FILE=${HANDLER_DIR}/${handler_file}
ARG HANDLER_NAME=${handler_name}
# Global arguments for Nvidia-docker
ARG CUDA_VERSION=9.0
ARG CUDNN_VERSION=7.4.1.5
ARG UBUNTU_VERSION=16.04
ARG BACKUP=${CUDA_VERSION}
# == MutiStage Build ==
# 1-Stage
# Get watcher - if watcher is uploaded on github, remove this line.
FROM python:3.7-alpine
ARG HANDLER_DIR
ARG HANDLER_FILE
ARG HANDLER_NAME
ARG handler_file
ARG handler_name
ARG BACKUP
ARG CUDA_VERSION
RUN echo "${CUDA_VERSION}"
RUN echo "${BACKUP}"
RUN mkdir -p ${HANDLER_DIR}
WORKDIR ${HANDLER_DIR}
COPY . .
RUN touch ${HANDLER_DIR}/__init__.py
# 2-Stage
FROM nvidia/cuda:${CUDA_VERSION}-devel-ubuntu${UBUNTU_VERSION}
ARG BACKUP
# For Nvidia-Docker
ARG CUDA_VERSION
ARG CUDNN_VERSION
RUN echo "${CUDA_VERSION}"
RUN echo "${BACKUP}"
# Copy directory from 0-stage
ARG HANDLER_DIR
RUN mkdir -p ${HANDLER_DIR}
WORKDIR ${HANDLER_DIR}
COPY --from=0 ${HANDLER_DIR} .
RUN echo "/usr/local/cuda-${BACKUP}/extras/CUPTI/lib64" > /etc/ld.so.conf.d/cupti.conf
RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential \
wget \
tar \
libgomp1 \
libcudnn7=${CUDNN_VERSION}-1+cuda${BACKUP} \
python \
python-dev \
python-numpy \
python-pip \
python-setuptools \
python3 \
python3-dev \
python3-numpy \
python3-pip \
python3-setuptools \
python3-tk \
libgtk2.0-dev \
${ADDITIONAL_PACKAGE} \
&& rm -rf /var/lib/apt/lists/*
ENV LD_LIBRARY_PATH /usr/local/cuda/extras/CUPTI/lib64:$LD_LIBRARY_PATH
RUN pip3 --no-cache-dir install --upgrade \
pip setuptools
RUN pip3 install --upgrdae pip && \
pip3 install -r requirements.txt
问题内容: 我在环境指令的管道顶部定义了环境变量: 但是我需要在阶段中动态设置或覆盖一些内容。但是,如果我在一个阶段中使用environment {}指令,则其他阶段将无法访问var。最初,我认为我可以在top环境指令中使用默认值定义它们,并在管道中覆盖它们,但这是我观察到的行为: 在环境块中定义var 尝试覆盖script {}块,例如: 该环境不会被覆盖 如何更改环境? 问题答案: 您可以按照
问题内容: 我想以某种方式将在阶段A中读取的变量传递给阶段B。在某些示例中,我看到人们将其写入文件中,但是我认为这并不是一个很好的解决方案。我尝试将其写入环境变量,但是在此方面我并没有真正成功。如何正确设置? 为了使它正常工作,我尝试了很多事情,并读到我应该使用“””而不是“’‘来启动外壳程序并将这些变量转义为例如。 以下是我拥有的管道: 如您所见,我从阶段 Package中 读取的内容也需要在阶
问题内容: 我想制作一个可以在整个应用程序中访问的自定义对象的全局数组(AppDelegate,ViewController类,TableViewController类等)。我已经研究了一种解决方法,但没有找到答案。我曾尝试将数组设置为公共范围,但是收到了编译器警告,提示当我尝试在其他文件中访问该数组时,出现错误提示 我将如何使该数组可被应用程序中的所有文件全局访问,我将在哪里实例化该数组? 问题
问题内容: 我正在尝试创建一个分页类,并使用该类外部的变量。 但这给了我致命错误“在非对象上调用成员函数query()”。 这是索引文件: 这是pagi.php文件: 是否可以在类内部使用该变量,而无需在类内部创建新变量? 问题答案: 解决此问题的正确方法是将数据库对象注入另一个类(依赖项注入): 解决该问题的另一种方法是将数据库类的实例注入使用它的方法中: 您选择哪种方法取决于情况。如果只有一个
在JavaScript中,我可以这样做: 然后在另一个文件中: 它将定义
问题内容: 我正在使用函数,这样我的程序就不会一团糟,但我不知道如何将局部变量变成全局变量。 问题答案: 这是两种实现相同目的的方法: 使用参数并返回(推荐) 运行时,将获得以下输出 使用全局变量(永远不要这样做) 现在您将获得: