다음과 같은 특이점 정의 파일이 있습니다.
Bootstrap: docker
From: nvcr.io/nvidia/tensorflow:21.08-tf2-py3
%files
/home/zfan/sandbox/Virgo_Algo/DevEnv/AMD/requirements.txt /tmp/requirements.txt
/home/zfan/sandbox/Virgo_Algo/DevEnv/AMD/aocl-linux-aocc-2.2.0_1_amd64.deb /tmp/aocl-linux-aocc-2.2.0_1_amd64.deb
%environment
export JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64"
export LD_LIBRARY_PATH="/usr/local/lib/kla:${LD_LIBRARY_PATH}"
export MODEL_PATH="/home/data"
export LD_LIBRARY_PATH="/usr/local/lib/tensorflow:/usr/local/lib/python3.8/dist-packages/tensorflow/:${LD_LIBRARY_PATH}"
export LD_LIBRARY_PATH="/opt/amd-fftw/lib:${LD_LIBRARY_PATH}"
%post
echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections
dpkg -i /tmp/aocl-linux-aocc-2.2.0_1_amd64.deb && rm -rf /tmp/aocl-linux-aocc-2.2.0_1_amd64.deb
python -m pip install --upgrade pip
pip --no-cache-dir --no-cache install --user -r /tmp/requirements.txt
특이점 이미지를 빌드할 때 다음 오류가 발생합니다: ERROR: Could not open requirements file: [Errno 2] No such file or directory: '/tmp/requirements.txt'
및 error: cannot access archive '/tmp/aocl-linux-aocc-2.2.0_1_amd64.deb': No such file or directory
.
내가 이해한 바에 따르면 %files는 해당 파일을 이미지의 /tmp에 복사했습니다. 그러나 빌드 로그를 확인하면 다음 메시지가 표시됩니다 INFO: Copying /home/zfan/sandbox/Virgo_Algo/DevEnv/AMD/requirements.txt to /tmp/build-temp-687487635/rootfs/tmp/requirements.txt INFO: Copying /home/zfan/sandbox/Virgo_Algo/DevEnv/AMD/aocl-linux-aocc-2.2.0_1_amd64.deb to /tmp/build-temp-687487635/rootfs/tmp/aocl-linux-aocc-2.2.0_1_amd64.deb
.
이 두 파일이 실제로 에 복사되었는지 확인하기 위해 정의 파일에 지정했습니다 \tmp
. ls -l /tmp
이 파일은 에서 찾을 수 없습니다 \tmp
. 또한 정의 파일에 지정하여 파일 중 하나를 검색했지만 find / -name aocl-linux-aocc-2.2.0_1_amd64.deb
다음 오류가 발생했습니다 find: File system loop detected; ‘/tmp/build-temp-565811705/rootfs’ is part of the same file system loop as ‘/’
.
답변1
다음 댓글을 참고하세요.깃허브:
빌드 시
/var/tmp
호스트 시스템에서 설치됩니다.
- 도커 이미지가 디스크로 추출됩니다.
- 당신의 파일예이제 추출된 이미지에 복사됩니다.
/var/tmp
- 빌드가
%post
실행되면,호스트의 tmp 디렉터리가 컨테이너에 마운트됩니다. 이렇게 하면 추출된 이미지에 복사된 파일이 숨겨집니다.
/tmp
/var/tmp
/home
그렇지 않은 경로 에서도 작동해야 합니다 .
반품또 다른 댓글github의 또 다른 문제:
...호스트 /tmp 및 /var/tmp는 %post 동안 /tmp 및 /var/tmp 컨테이너 디렉토리 위에 마운트됩니다...
두 가지 옵션이 있습니다:
- 대신 파일을 다른 폴더에 복사하세요
/tmp
. 예:/opt
.
%files
/home/zfan/sandbox/Virgo_Algo/DevEnv/AMD/requirements.txt /opt/requirements.txt
/home/zfan/sandbox/Virgo_Algo/DevEnv/AMD/aocl-linux-aocc-2.2.0_1_amd64.deb /opt/aocl-linux-aocc-2.2.0_1_amd64.deb
...
%post
...
dpkg -i /opt/aocl-linux-aocc-2.2.0_1_amd64.deb && rm -rf /opt/aocl-linux-aocc-2.2.0_1_amd64.deb
...
pip --no-cache-dir --no-cache install --user -r /opt/requirements.txt
- 이
%post
섹션$SINGULARITY_CONTAINER/tmp
에서는/tmp
.
/tmp
호스트는 /tmp
컨테이너 내부에 마운트 되므로 빌드( )에 사용된 컨테이너의 루트 파일 시스템을 $SINGULARITY_CONTAINER
가리키며 파일이 복사되는 호스트에서 시작됩니다 ./tmp/build-temp-XXX/rootfs
$SINGULARITY_CONTAINER/tmp
/tmp/build-temp-XXX/rootfs/tmp
%post
...
dpkg -i $SINGULARITY_CONTAINER/tmp/aocl-linux-aocc-2.2.0_1_amd64.deb && rm -rf $SINGULARITY_CONTAINER/tmp/aocl-linux-aocc-2.2.0_1_amd64.deb
...
pip --no-cache-dir --no-cache install --user -r $SINGULARITY_CONTAINER/tmp/requirements.txt