Não é possível instalar pacotes dentro da imagem do docker Ubuntu


289

Eu instalei a imagem do Ubuntu 14.04 no docker. Depois disso, quando tento instalar pacotes dentro da imagem do ubuntu, não consigo localizar o erro do pacote:

apt-get install curl

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

Como corrigir este erro?

Respostas:


621

É porque não há cache de pacote na imagem, você precisa executar:

apt-get update

antes de instalar pacotes, e se seu comando estiver em um Dockerfile, você precisará:

apt-get -y install curl

Para suprimir a saída padrão de um comando, use -qq. Por exemplo

apt-get -qq -y install curl

1
Isso funciona para mim, eu deveria correr -qq para todos os tempos
desenvolvedor

6
-qq suprime a saída que você normalmente não precisa no Dockerfile. Outro truque interessante - diga ao debconf que ele está funcionando em um ambiente não interativo: echo 'debconf debconf / frontend select Noninteractive' | debconf-set-selections
ISanych

7
Por alguma razão isso não funciona para mim, continua a mesma "E: Não foi possível localizar pacote .." mensagem
tblancog

"apt-get-update" e "apt-get install curl" funcionaram bem!
Sindhu #

Descobri que esse erro também ocorre no docker quando o espaço está acabando. Corri docker image prunepara liberar espaço e isso foi corrigido para mim.
Jonathan Rys

123

Dos documentos de maio2017 2018 2019 2020

Sempre combine RUN apt-get updatecom apt-get installa mesma RUNinstrução, por exemplo

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

(...)

Usar apt-get updatesozinho em uma RUNinstrução causa problemas de cache e as apt-get installinstruções subseqüentes falham.

(...)

O uso RUN apt-get update && apt-get install -ygarante que o Dockerfile instale as versões mais recentes dos pacotes sem necessidade de codificação ou intervenção manual. Essa técnica é conhecida como "impedimento de cache".



4

Verifique se você não possui erros de sintaxe no seu Dockerfile, pois isso também pode causar esse erro. Um exemplo correto é:

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

Foi uma combinação de corrigir um erro de sintaxe e adicionar o apt-get updateque resolveu o problema para mim.


1

Eu descobri que montar um volume local sobre / tmp pode causar problemas de permissão quando a "apt-get update" é executada, o que impede que o cache do pacote seja preenchido. Felizmente, isso não é algo que a maioria das pessoas faz, mas é outra coisa a procurar se você vir esse problema.


-3

Você precisa atualizar a lista de pacotes no seu Ubuntu:

$ sudo apt-get update
$ sudo apt-get install <package_name>
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.