No se pueden instalar paquetes dentro de la imagen de Docker Ubuntu


289

Instalé la imagen de Ubuntu 14.04 en la ventana acoplable. Después de eso, cuando intento instalar paquetes dentro de la imagen de ubuntu, no puedo encontrar el error del paquete:

apt-get install curl

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

¿Cómo arreglar este error?

Respuestas:


621

Es porque no hay caché de paquete en la imagen, debe ejecutar:

apt-get update

antes de instalar paquetes, y si su comando está en un Dockerfile, necesitará:

apt-get -y install curl

Para suprimir la salida estándar de un comando use -qq. P.ej

apt-get -qq -y install curl

1
esto funciona para mí, ¿debería ejecutar -qq todo el tiempo
Desarrollador

66
-qq suprime la salida que generalmente no necesita en Dockerfile. Otro buen truco: dígale a debconf que está funcionando en un entorno no interactivo: echo 'debconf debconf / frontend select Noninteractive' | debconf-set-selections
ISanych

77
Por alguna razón, esto no funciona para mí, sigue siendo el mismo mensaje "E: No se puede encontrar el paquete ..."
tblancog

¡"apt-get-update" y "apt-get install curl" funcionaron bien!
Sindhu

Descubrí que este error también ocurre en la ventana acoplable cuando se queda sin espacio. Corrí docker image prunepara liberar espacio y eso me lo arregló.
Jonathan Rys

123

De los documentos en mayo2017 2018 2019 2020

Siempre combine RUN apt-get updatecon apt-get installen la misma RUNdeclaración, por ejemplo

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

(...)

Usar apt-get updatesolo en una RUNdeclaración causa problemas de almacenamiento en caché y las apt-get installinstrucciones posteriores fallan.

(...)

El uso RUN apt-get update && apt-get install -yasegura que su Dockerfile instala las últimas versiones de paquete sin más codificación o intervención manual. Esta técnica se conoce como "almacenamiento en caché".



4

Asegúrese de no tener errores de sintaxis en su Dockerfile, ya que esto también puede causar este error. Un ejemplo correcto es:

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

Fue una combinación de arreglar un error de sintaxis y agregar apt-get updateque resolvió el problema para mí.


1

Descubrí que montar un volumen local sobre / tmp puede causar problemas de permisos cuando se ejecuta "apt-get update", lo que evita que se llene el caché del paquete. Con suerte, esto no es algo que la mayoría de la gente hace, pero es algo más que debe buscar si ve este problema.


-3

Necesita actualizar la lista de paquetes en su Ubuntu:

$ sudo apt-get update
$ sudo apt-get install <package_name>
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.