O repositório do Docker não tem um arquivo de lançamento ao executar apt-get update no Ubuntu

94

Estou usando o Ubuntu 16.10 e recentemente instalei o Docker (v1.12.4) usando a compilação do Xenial seguindo as instruções encontradas aqui . Não encontrei nenhum problema ao criar contêineres, garantindo que eles reiniciem automaticamente, etc.

No entanto, agora, toda vez que executo apt-get update , recebo a seguinte mensagem de erro:

W: The repository 'https://apt.dockerproject.org/repo ubuntu-xenial Release' does not have a Release file.
N: Data from such a repository can't be authenticated and is therefore potentially dangerous to use.
N: See apt-secure(8) manpage for repository creation and user configuration details.
E: Failed to fetch https://apt.dockerproject.org/repo/dists/ubuntu-xenial/main/binary-amd64/Packages
E: Some index files failed to download. They have been ignored, or old ones used instead.

Tentei remediar o problema seguindo os conselhos encontrados aqui e não consigo resolver este problema.

Alguém encontrou isso antes e corrigiu? Em caso afirmativo, o que é necessário para resolver isso?

Daniel Eagle
fonte
1
Por favor, veja se isso ajuda - askubuntu.com/questions/768569/…
Rao
@Rao, infelizmente isso não resolve o problema. Ainda estou recebendo a mesma mensagem de erro depois de remover a chave, a entrada da lista de fontes, executar apt-get update novamente e repetir as etapas de instalação do Docker.
Daniel Eagle
@Rao, descobri a solução e adicionei a resposta. No entanto, o artigo que você mencionou pode ser benéfico para outras pessoas que tropeçam na minha pergunta, então +1. Felicidades.
Daniel Eagle
1
No meu caso, as respostas abaixo não ajudaram. Meu problema era que eu estava usando apt-cacher-ng que não fazia proxy de tráfego https. github.com/moby/moby/issues/22599#issuecomment-404675734
jamshid

Respostas:

86

No Linux Mint, as instruções oficiais não funcionaram para mim. Eu tive que entrar /etc/apt/sources.list.d/additional-repositories.liste mudar serenapara xenial.

Salame
fonte
2
Apenas uma nota, por algum motivo havia uma linha docker com trustye outra com serenanaquele arquivo para mim. Talvez eu tenha tentado passar por esse mesmo processo algum tempo atrás e me esquecido. De qualquer forma, tive que deletar a trustylinha, caso contrário, ela reclamou de dependências insolúveis.
lobati,
3
Obrigado pela referência do diretório sources.list.d. Foi corrigido o problema xenial do Ubuntu com "sudo rm /etc/apt/sources.list.d/docker*". Agora o apt-get update finalmente funciona.
nine9five
2
O mesmo para o Debian: substitua "debian 10 stable" por "debian stretch stable" no arquivo "/etc/apt/sources.list.d/docker.list" e deve funcionar.
peschanko
Tive que mudar o meu parabionic
jpthesolver2
74

Para o Linux Mint, esse problema é realmente mencionado no site do Docker :

Nota: O lsb_release -cssubcomando abaixo retorna o nome da sua distribuição Ubuntu, como xenial. Às vezes, em uma distribuição como o Linux Mint, você pode ter que mudar$(lsb_release -cs) para a distribuição pai do Ubuntu. Por exemplo, se você estiver usando o Linux Mint Rafaela, pode usar o trusty.

amd64:

$ sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"

O lsb_release -cscomando fornece um repositório para o qual o Docker não tem pacote preparado - você deve alterá-lo para xenial.

O comando correto para Linux Mint 18 baseado no Ubuntu 16.04 Xenial é

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   xenial \
   stable"
Chimpanzé guerreiro
fonte
1
O comando que você forneceu é o mesmo que existe no site do docker. No entanto, não funciona para mim no Ubuntu 16.04. A entrada gerada em sources.listé: deb [arch=amd64] https://download.docker.com/linux/ubuntu xenial stableMas ainda assim o mesmo problema. Gostaria que alguém pudesse explicar por que ele não consegue encontrar Releasedentro https://download.docker.com/linux/ubuntu/dists/xenial/stable/binary-amd64/. Triste: Depois de tantos anos usando o Ubuntu, ainda não consigo entender como as coisas funcionam com caminhos de repositório.
Marinos An
Isso também resolveu meus problemas para mover as coisas na nova distro WLinux.
rainabba
23

Elliot Beach está correto. Obrigado Elliot.

Aqui está o código da minha essência .

sudo apt-get remove docker docker-engine docker.io

sudo apt-get update

sudo apt-get install apt-transport-https ca-certificates curl software-properties-common

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

sudo apt-key fingerprint 0EBFCD88

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
xenial \
stable"

sudo apt-get update

sudo apt-get install docker-ce

sudo docker run hello-world
Christopher Govender
fonte
2
Cuidado ao executar esses comandos se não estiver executando o xenial. Este comando seria mais seguroadd-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
spuder de
Em alguns casos (por exemplo, Mint), os lsb_release -csretornos taraque não têm uma versão com suporte, portanto, substituir especificamente o xenialconforme mostrado (ou confiável) é uma solução alternativa útil.
Strixy
O usuário formalmente conhecido como Elliott Beach será referido como Chimpanzé Guerreiro
Warlike Chimpanzee
Sua essência corrige o problema "E: Package 'containerd.io' não tem nenhum candidato a instalação" com o Kubuntu eoan. Algumas pessoas resolveram com biônico, mas não funcionou para mim, seguir sua essência com xenial funcionou. O problema surge quando você usa $(lsb_release -cs)porque não é totalmente compatível. Outros relatam o uso de tal hack de "configuração incorreta" sem problemas por 4 meses e contando ( stackoverflow.com/questions/60274857/… )
Leamsi
17

Conforme sugerido no documento docker oficial também. Tente executar este:

  • sudo vi /etc/apt/sources.list

Em seguida, remova / comente qualquer ( deb [arch=amd64] https://download.docker.com/linux/ubuntu/ xenial stable) tal entrada nas últimas linhas do arquivo.

Então, no terminal, execute este comando:

  • sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu/ bionic stable"

  • sudo apt-get update

Funcionou no meu caso.

Parneeti Sood
fonte
10

Eu vi uma postagem interessante da Ikraider aqui que resolveu meu problema: https://github.com/docker/docker/issues/22599

As instruções do site estão erradas, aqui está o que funciona em 16.04:

curl -s https://yum.dockerproject.org/gpg | sudo apt-key add
apt-key fingerprint 58118E89F3A912897C070ADBF76221572C52609D
sudo add-apt-repository "deb https://apt.dockerproject.org/repo ubuntu-$(lsb_release -cs) main"
sudo apt-get update
sudo apt-get install docker-engine=1.13.0-0~ubuntu-xenial
Nicolas D
fonte
9

Usuários do Linux Mint 20 Ulyana precisam mudar "ulyana" para "biônico" no

/etc/apt/sources.list.d/additional-repositories.list

igual a:

deb [arch=amd64] https://download.docker.com/linux/ubuntu    bionic    stable
Alex Paramonov
fonte
4

Eu estava enfrentando um problema semelhante no Linux, mas descobri a versão do Debian usando,

$ cat /etc/debian_version buster/sid

então substituiu a versão Debian em

$ sudo vi /etc/apt/sources.list.d/additional-repositories.list
deb [arch=amd64] https://download.docker.com/linux/debian    buster    stable
Abhijeet Farakate
fonte
4

Aviso: Use as etapas abaixo por sua própria conta e risco. Você pode receber resultados diferentes conforme indicado nos comentários. Tenha cuidado e faça um backup completo antes de fazer isso.

Abaixo está uma lista de etapas usadas para resolver o problema:

  1. Remova o Docker (isso não excluirá imagens, contêineres, volumes ou arquivos de configuração personalizados):

    sudo apt-get purge docker-engine

  2. Remova a chave Docker apt:

    sudo apt-key del 58118E89F3A912897C070ADBF76221572C52609D

  3. Exclua o arquivo docker.list:

    sudo rm /etc/apt/sources.list.d/docker.list

  4. Exclua manualmente os arquivos de cache apt:

    sudo rm /var/lib/apt/lists/apt.dockerproject.org_repo_dists_ubuntu-xenial_*

  5. Exclua apt-transport-https e ca-certificados :

    sudo apt-get purge apt-transport-https ca-certificados

  6. Limpe o apt e execute a remoção automática:

    sudo apt-get clean && sudo apt-get autoremove

  7. Reinicialize o Ubuntu:

    sudo reboot

  8. Execute apt-get update:

    sudo apt-get update

  9. Instale apt-transport-https e ca-certificates novamente:

    sudo apt-get install apt-transport-https ca-certificados

  10. Adicione a chave apt:

> sudo apt-key adv \
       --keyserver hkp://ha.pool.sks-keyservers.net:80 \
       --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
  1. Adicione o arquivo docker.list novamente:
> echo "deb https://apt.dockerproject.org/repo ubuntu-xenial main" |
sudo tee /etc/apt/sources.list.d/docker.list
  1. Execute apt-get update:
> sudo apt-get update
  1. Instale o Docker:
> sudo apt-get install docker-engine

Certo, existem muitas variáveis ​​e seus resultados podem variar. No entanto, essas etapas cobrem o máximo de áreas possível para garantir que os possíveis pontos problemáticos sejam eliminados para que a probabilidade de sucesso seja maior.

Atualização 06/07/2017

Parece que as versões mais recentes do Docker estão usando um processo de instalação diferente, que deve eliminar muitos desses problemas. Certifique-se de verificar https://docs.docker.com/engine/installation/linux/ubuntu/ .

Daniel Eagle
fonte
Após executar a reinicialização, minha tela de login está aparecendo no Linux Mint
Sathishkumar Rakkiasamy
4
executando: sudo apt-get purge apt-transport-https ca-certificados é uma ideia horrível, acho que acabei de estragar meu SO: C
RicardoE
@RicardoE, depois de rodar isso, o que está acontecendo com o seu sistema?
Daniel Eagle
1
Estou usando o linux mint, e basicamente desinstalou todo o material de canela e alguns outros softare / pacotes como google chrome
RicardoE
1
Vou reinstalar tudo de novo com, verificando a lista em: /var/log/apt/history.log
RicardoE
3

Eu também tive um problema semelhante. Alguém pode achar útil o que funcionou para mim.

A máquina está executando o Ubuntu 16.04 e tem Docker CE. Depois de examinar as respostas e os links fornecidos aqui, especialmente do link do site Docker fornecido por Elliot Beach, abri meu /etc/apt/sources.list e o examinei.

O arquivo tinha ambos deb [arch=amd64] https://download.docker.com/linux/ubuntu (lsb_release -cs) stablee deb [arch=amd64] https://download.docker.com/linux/ubuntu xenial stable.

Como o segundo era o que eu precisava, simplesmente comentei o primeiro, salvei o documento e agora o problema foi corrigido. Como um teste, voltei para o mesmo documento, removi o sinal de comentário e corri sudo apt-get updatenovamente. O problema voltou quando eu fiz isso.

Então, para recapitular: não só eu tinha meu nome de distribuição pai do Ubuntu conforme declarado no site do Docker, mas também comentei a linha que ainda contém (lsb_release -cs).

Simeon
fonte
No Ubuntu 18.10, comentei esta linha: # deb [arch = amd64] download.docker.com/linux/ubuntu cosmic stable
Sergei G
2

Editar arquivo /etc/apt/sources.list.d/additional-repositories.liste adicionar deb [arch=amd64] https://download.docker.com/linux/ubuntu xenial stable funcionou para mim, este post foi muito útil https://github.com/typora/typora-issues/issues/2065

Horário nobre
fonte
1

Eu ainda tenho o mesmo problema. Nenhuma das respostas acima parece resolvê-lo. Tenho ubuntu 16.04 e sigo os passos descritos em https://docs.docker.com/install/linux/docker-ce/ubuntu/

Suspeito que esteja relacionado a um apt-getbug em https. A informação que está sendo impressa por apt-geté meio enganosa.

Acho que Failed to fetch..também pode ser traduzido como:problem accessing resource from within an https connection

Como cheguei a esta conclusão:

Em primeiro lugar, estou atrás de um proxy corporativo, portanto, defini a seguinte configuração:

/etc/apt/apt.conf

Acquire::http::proxy "http://squidproxy:8080/";
Acquire::https::proxy "http://squidproxy:8080/";
Acquire::ftp::proxy "ftp://squidproxy:8080/";

Acquire::https::CaInfo     "/etc/ssl/certs/ca-certificates.pem";

/etc/apt/apt.conf.d/99proxy

Acquire::http::Proxy {
    localhost DIRECT;
    localhost:9020 DIRECT;
    localhost:9021 DIRECT;
};

Realizei os seguintes testes com entradas diferentes em sources.list

entrada de teste 1:

deb [arch=amd64] https://download.docker.com/linux/ubuntu xenial stable

sudo apt-get update

W: The repository 'https://download.docker.com/linux/ubuntu xenial Release' does not have a Release file.
N: Data from such a repository can't be authenticated and is therefore potentially dangerous to use.
N: See apt-secure(8) manpage for repository creation and user configuration     details.
E: Failed to fetch     https://download.docker.com/linux/ubuntu/dists/xenial/stable/binary-amd64/Packages  
E: Some index files failed to download. They have been ignored, or old ones used instead.

Fracasso

entrada de teste 2:

deb [arch=amd64] http://localhost:9020/linux/ubuntu xenial stable

/etc/apache2/sites-enabled/apt-proxy.conf

# http to https reverse proxy configuration.
Listen 9020
<VirtualHost *:9020>
SSLProxyEngine On
# pass from squid proxy
ProxyRemote https://download.docker.com/ http://squidproxy:8080
ProxyPass / https://download.docker.com/
ProxyPassReverse / https://download.docker.com/
ErrorLog ${APACHE_LOG_DIR}/apt-proxy-error.log
CustomLog ${APACHE_LOG_DIR}/apt-proxy-access.log combined
</VirtualHost>

sudo apt-get update

Hit:1 ..
Hit:2 ..
  ...                                                              
Hit:7 http://localhost:9020/linux/ubuntu xenial InRelease                
Get:8 ...
Fetched 323 kB in 0s (419 kB/s)
Reading package lists... Done

Sucesso

entrada de teste 3:

deb [arch=amd64] https://localhost:9021/linux/ubuntu xenial stable

/etc/apache2/sites-enabled/apt-proxy.conf

# https to https revere proxy
Listen 9021
<VirtualHost *:9021>
# serve on https
SSLEngine on
SSLCertificateFile      /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
SSLProxyEngine On
# pass from squid proxy
ProxyRemote https://download.docker.com/ http://squidproxy:8080
ProxyPass / https://download.docker.com/
ProxyPassReverse / https://download.docker.com/
ErrorLog ${APACHE_LOG_DIR}/apt-proxy-error.log
CustomLog ${APACHE_LOG_DIR}/apt-proxy-access.log combined
</VirtualHost>

sudo apt-get update

W: The repository 'https://localhost:9021/linux/ubuntu xenial Release' does not have a Release file.
N: Data from such a repository can't be authenticated and is therefore potentially dangerous to use.
N: See apt-secure(8) manpage for repository creation and user configuration details.
E: Failed to fetch https://localhost:9021/linux/ubuntu/dists/xenial/stable/binary-amd64/Packages  
E: Some index files failed to download. They have been ignored, or old ones used instead.

Fracasso


Nos casos acima, a url do apt-get Failed to fetche também o Release arquivo, estavam realmente acessíveis a partir de browser/ wget/ curlusando a mesma configuração de proxy.
O fato de que apt-getfuncionou apenas com a url de proxy reverso http, implica que há algum problema ao acessar recursos de dentro de uma conexão https .
Não sei o que é esse problema, mas apt-getdeveria mostrar uma mensagem mais informativa ( apté ainda menos prolixo).

Nota: O caso 1 do WireSharking mostrou que o proxy CONNECTfoi bem-sucedido e nenhum RST foi enviado, mas é claro que os arquivos não puderam ser lidos.

Marinos An
fonte
0

Isso é o que funcionou para mim no LinuxMint 19.

curl -s https://yum.dockerproject.org/gpg | sudo apt-key add
apt-key fingerprint 58118E89F3A912897C070ADBF76221572C52609D
sudo add-apt-repository "deb https://apt.dockerproject.org/repo ubuntu-$(lsb_release -cs) main"
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

GilbertS
fonte
-1

Melhor verificar este problema: (se você estiver atrás de proxy), (testado no ubuntu 18.04), (funcionará em outro ubuntu também), (principalmente erro em: https_proxy = "http://192.168.0.251:808/)

  1. Verifique estes arquivos:

    #sudo cat /etc/environment :
    http_proxy="http://192.168.0.251:808/"
    https_proxy="http://192.168.0.251:808/"
    ftp_proxy="ftp://192.168.0.251:808/"
    socks_proxy="socks://192.168.0.251:808/"
    #sudo cat /etc/apt/apt.conf :
    Acquire::http::proxy "http://192.168.0.251:808/";
    Acquire::https::proxy "http://192.168.0.251:808/";
    Acquire::ftp::proxy "ftp://192.168.0.251:808/";
    Acquire::socks::proxy "socks://192.168.0.251:808/";
    
  2. Adicionar repositório docker estável

    #sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" 
    
  3. Execute apt-get update:

    #sudo apt-get update
    
  4. Verifique Docker CE

    #apt-cache policy docker-ce
    
  5. instalar Docker

    #sudo apt-get install docker-ce
    
Abhishek Jangid
fonte