programing

도커 Ubuntu 이미지 내에 패키지를 설치할 수 없습니다.

cafebook 2023. 9. 25. 23:07
반응형

도커 Ubuntu 이미지 내에 패키지를 설치할 수 없습니다.

우분투 14.04 이미지를 도커에 설치했습니다.그 후 우분투 이미지 안에 패키지를 설치하려고 하면 패키지 오류를 찾을 수 없습니다.

apt-get install curl

Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package curl

이 오류를 해결하는 방법은 무엇입니까?

이미지에 패키지 캐시가 없기 때문에 다음을 실행해야 합니다.

apt-get update

패키지를 설치하기 전에 명령어가 도커 파일에 있는 경우 다음이 필요합니다.

apt-get -y install curl

명령 사용에서 표준 출력을 억제하려면 다음과 같이 하십시오.-qq.예.

apt-get -qq -y install curl

2017년 5월 문서로 부터 2018년 2018년 2019년 2020년 2021년 2022년 2023년

항상 결합RUN apt-get update와 함께apt-get install마찬가지로RUN예를 들어 문장

RUN apt-get update && apt-get install -y package-bar

(...)

사용.apt-get update혼자서RUN문은 캐싱 문제 및 후속 문제를 야기합니다.apt-get install명령이 실패했습니다.

(...)

사용.RUN apt-get update && apt-get install -y추가적인 코딩이나 수동 작업 없이 도커 파일이 최신 패키지 버전을 설치하도록 보장합니다.이 기술은 "캐시 버스팅(cache busting)"이라고 알려져 있습니다.

도커 파일에 다음 명령을 추가합니다.

RUN apt-get update

도커 파일에 구문 오류가 없는지 확인하십시오. 이 오류도 발생할 수 있습니다.올바른 예는 다음과 같습니다.

RUN apt-get update \
    && apt-get -y install curl \
    another-package

그것은 구문 오류를 수정하고 추가하는 것의 조합이었습니다.apt-get update문제를 해결해 줬습니다

apt-get 업데이트를 실행해도 항상 캐시에서 이 명령의 결과를 읽는 것 같았고 캐시가 손상된 것처럼 보였기 때문에 해결되지 않았습니다.내가 의심하는 것은, 만약 당신이 같은 '베이스 이미지'를 가진 여러 개의 도커 컨테이너를 가지고 있다면 (나는 python:3.8-slim이었습니다).

그래서, 제게 효과가 있었던 것은 다음과 같습니다.

시스템의 모든 도커 컨테이너 중지

docker stop $(sudo docker ps -aq) 

매달린 용기를 모두 제거

docker container prune 

매달린 영상을 모두 제거

docker image prune 

이러한 명령을 실행한 후 도커 빌드는 손상된 캐시를 잃어버리는 것처럼 보이고 올바른 패키지 정보를 가져오는 깨끗한 apt-get 업데이트를 수행하고 패키지 설치는 예상대로 진행됩니다.

/tmp를 통해 로컬 볼륨을 마운트하면 "apt-get update"가 실행될 때 권한 문제가 발생할 수 있으며, 이로 인해 패키지 캐시가 채워지지 않게 됩니다.대부분의 사람들이 하는 일이 아니기를 바라지만, 이 문제를 본다면 다른 것을 찾아야 할 것입니다.

갑자기 이런 문제가 생기기 시작했습니다.제가 먼저 이 작업을 했는데 문제가 해결된 것 같습니다.

RUN apt-get clean
RUN rm -rf /var/lib/apt/lists/*

내 도커 파일에 cron과 nginx-extra를 설치하려고 할 때 같은 오류가 발생했습니다.나는 지금까지 모든 답을 시도했지만 주사위는 없었습니다.

그리고는 그냥 뛰었습니다.sudo service docker restart문제를 해결해 줬습니다

이 문제는 그 이후로 해결되었지만 이전에 이 문제에 직면했고 이 단계 중 아무 것도 작동하지 않았습니다.

문제는 제가 설치할 패키지 목록을 별도의 파일에 저장했다는 것입니다.CRLF 선 구분기(\r\n뿐만 아니라\n)가 있는 윈도우 시스템에 저장되었습니다.승인된 답변에 제공된 단계 위에 줄 끝을 \n으로만 강제 적용하면 문제가 해결되었습니다.

jre를 설치하려고 할 때 동일한 질문을 받고 "apt-get update" 명령을 시도한 다음 "apt install default-jre"를 다시 시도하면 작동했습니다!

도움이 되었으면 좋겠군요, 행운을 빌어요!

Ubuntu에서 패키지 목록을 업데이트해야 합니다.

$ sudo apt-get update
$ sudo apt-get install <package_name>

언급URL : https://stackoverflow.com/questions/27273412/cannot-install-packages-inside-docker-ubuntu-image

반응형