오류: 첫 번째 dockerfile을 구성하려고 할 때 "'/bin/sh -c source protected-env/bin/activate' 명령이 0이 아닌 코드를 반환했습니다: 127"

오류: 첫 번째 dockerfile을 구성하려고 할 때 "'/bin/sh -c source protected-env/bin/activate' 명령이 0이 아닌 코드를 반환했습니다: 127"

도커를 배우려고 합니다. 이것은 나의 첫 번째 실험입니다. 나는 이 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컨테이너 이미지에 넣은 다음 RUNning하는 것입니다.

그러나 pip를 통해 numpy를 설치해야 할 이유를 찾지 못했습니다. 아마도 이렇게 하지 말고 대신 apt!

동일하고 아마도 더 중요한 것은 Python 자체에도 적용됩니다. 소스에서 빌드하지 마세요. 귀하의 가이드가 어디서 왔는지는 모르겠지만, 심각하게 말하면 끔찍한 아이디어입니다. 우분투에는 Python3이 함께 제공되며, 이는 대부분 사전 설치되어 있거나 설치할 수 있습니다 apt install python3. 전반적으로, python3-numpy설치할 패키지 목록 끝에 추가하기만 하면 완료됩니다. Python을 다운로드할 필요도 없고, 빌드할 필요도 없으며, 활성화 파일을 구하고 pip를 통해 numpy를 설치할 필요도 없습니다.

관련 정보