도커를 배우려고 합니다. 이것은 나의 첫 번째 실험입니다. 나는 이 dockerfile을 작성했습니다:
FROM nvidia/cudagl:11.3.0-base-ubuntu20.04
LABEL Author="ZioMario"
LABEL Title="Firefox/Docker20.10.6/Ubuntu20.04"
# Enviorment variables
ENV DEBIAN_FRONTEND noninteractive
ENV LC_ALL C.UTF-8
ENV LANG C.UTF-8
ENV PATH "$PATH:/bin/2.82/python/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin"
ENV FIREFOX_PATH "/bin/2.82"
ENV FIREFOXPIP "/bin/2.82/python/bin/pip3"
ENV FIREFOXPY "/bin/2.82/python/bin/python3.7m"
ENV HW="GPU"
# Install dependencies
RUN apt-get update && apt-get install -y \
apt-utils \
wget \
libopenexr-dev \
bzip2 \
build-essential \
zlib1g-dev \
libxmu-dev \
libxi-dev \
libxxf86vm-dev \
libfontconfig1 \
libxrender1 \
libgl1-mesa-glx \
xz-utils \
firefox \
openjdk-8-jre
# Download the Python source
RUN wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz \
&& tar -xzf Python-3.7.0.tgz \
&& cp -r Python-3.7.0/Include/* $FIREFOX_PATH/python/include/python3.7m/ \
&& rm -rf Python-3.7.0.tgz \
&& rm -rf Python-3.7.0
# Installing a modern version of numpy
RUN rm -rf ${FIREFOX_PATH}/python/lib/python3.7/site-packages/numpy
# Must first ensurepip to install Firefox pip3 and then new numpy
RUN ${FIREFOXPY} -m venv protected-env
RUN source protected-env/bin/activate
RUN ${FIREFOXPY} -m ensurepip && ${FIREFOXPIP} install --upgrade pip && ${FIREFOXPIP} install numpy
RUN deactivate
# Set the working directory
WORKDIR /
불행히도 작동하지 않습니다. 내가 받은 오류는 다음과 같습니다.
"/bin/sh -c source protected-env/bin/activate" 명령이 0이 아닌 코드를 반환합니다: 127
잘못된 줄은 다음과 같습니다.
소스 protected-env/bin/activate 실행
해결 방법을 알고 있나요? 감사해요.
답변1
RUN source protected-env/bin/activate
무의미한.
activate
일부 환경 변수를 설정하는 스크립트입니다.현재 쉘의 경우;그러나 현재 쉘은 파일을 검색한 후 바로 종료됩니다. 따라서 효과가 없습니다. 특히 다음 줄에는 아무런 영향을 미치지 않습니다!
그러나 오류는 실행 시도로 인해 발생합니다.-술집sh 스크립트는 sh를 사용하지만 작동하지 않습니다. 여기서 해결책은 이 모든 항목(활성화 파일 가져오기, pip를 사용하여 항목 설치)을 pip로 시작하는 셸 스크립트에 넣어 #!/bin/bash
한 번에 실행할 수 있도록 한 다음 COPY
컨테이너 이미지에 넣은 다음 RUN
ning하는 것입니다.
그러나 pip를 통해 numpy를 설치해야 할 이유를 찾지 못했습니다. 아마도 이렇게 하지 말고 대신 apt
!
동일하고 아마도 더 중요한 것은 Python 자체에도 적용됩니다. 소스에서 빌드하지 마세요. 귀하의 가이드가 어디서 왔는지는 모르겠지만, 심각하게 말하면 끔찍한 아이디어입니다. 우분투에는 Python3이 함께 제공되며, 이는 대부분 사전 설치되어 있거나 설치할 수 있습니다 apt install python3
. 전반적으로, python3-numpy
설치할 패키지 목록 끝에 추가하기만 하면 완료됩니다. Python을 다운로드할 필요도 없고, 빌드할 필요도 없으며, 활성화 파일을 구하고 pip를 통해 numpy를 설치할 필요도 없습니다.