도커 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
'programing' 카테고리의 다른 글
푸시 사이드 메뉴로 신체 스크롤 방지 방법 (0) | 2023.10.05 |
---|---|
와일드카드 호스트를 사용한 MariaDB 부여 권한이 작동하지 않습니다. (0) | 2023.09.25 |
Typescript 컴파일 중 상대 가져오기 문에 .js 확장자 추가(ES6 모듈) (0) | 2023.09.25 |
ID 값이 같은 요소가 여러 개일 때 jQuery는 어떻게 작동합니까? (0) | 2023.09.25 |
오라클 데이터베이스의 SID, 서비스 이름 및 포트를 가져오는 방법은 무엇입니까? (0) | 2023.09.25 |