docker Ubuntu 이미지 안에 패키지를 설치할 수 없습니다


289

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

apt-get install curl

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

이 오류를 해결하는 방법?

답변:


621

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

apt-get update

패키지를 설치하기 전에 명령이 Dockerfile에 있으면 다음이 필요합니다.

apt-get -y install curl

명령의 표준 출력을 억제하려면을 사용하십시오 -qq. 예 :

apt-get -qq -y install curl

1
이것은 나를 위해 작동합니다, 나는 항상 -qq를 실행해야합니다
개발자

6
-qq는 Dockerfile에서 일반적으로 필요하지 않은 출력을 억제합니다. 또 다른 좋은 트릭-대화 형 환경이 아닌 환경에서 작동한다고 debconf에 알려주십시오. echo 'debconf debconf / frontend select noninteractive'| debconf-set-selections
ISanych

7
어떤 이유로 든 이것이 작동하지 않습니다. 여전히 동일한 "E : 패키지를 찾을 수 없습니다."메시지
tblancog

"apt-get-update"및 "apt-get install curl"이 제대로 작동했습니다!
Sindhu

이 오류는 도커에 공간이 부족한 경우에도 발생합니다. 나는 docker image prune공간을 확보하기 위해 달렸고 그것은 나를 위해 고쳤다.
조나단리스

123

5 월문서 에서2017 년 2018 년 2019 년 2020

항상 결합 RUN apt-get updateapt-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하면 Dockerfile이 추가 코딩이나 수동 개입없이 최신 패키지 버전을 설치합니다. 이 기술을 "캐시 버스 팅"이라고합니다.



4

Dockerfile에 구문 오류가 없어야이 오류가 발생할 수 있습니다. 올바른 예는 다음과 같습니다.

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

구문 오류를 수정하고 추가 apt-get update하여 문제를 해결했습니다.


1

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


-3

우분투에서 패키지 목록을 업데이트해야합니다 :

$ sudo apt-get update
$ sudo apt-get install <package_name>
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.