Docker存储库在Ubuntu

时间:2016-12-14 01:40:33

标签: ubuntu docker apt-get

我正在使用Ubuntu 16.10并且最近使用Xenial版本安装了Docker(v1.12.4),方法是按照here找到的说明进行操作。我没有遇到任何创建容器的问题,确保它们自动重启等等。

但是,现在每次运行 apt-get update 时,都会收到以下错误消息:

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.

我试图通过遵循here找到的建议来解决问题,但似乎无法解决这个问题。

有没有人遇到这个并修复过它?如果是这样,解决这个问题需要什么?

12 个答案:

答案 0 :(得分:64)

在linux mint上,官方说明对我不起作用。我必须进入/etc/apt/sources.list.d/additional-repositories.list并将serena更改为xenial

答案 1 :(得分:53)

对于Linux Mint,Docker website中实际引用了此问题:

  

注意:下面的lsb_release -cs子命令会返回您的名字   Ubuntu分发,如xenial。有时候,在像   Linux Mint,您可能需要将$(lsb_release -cs)更改为您的父级   Ubuntu发行版。例如,如果您使用的是Linux Mint Rafaela,   你可以使用可靠的。 AMD64:

     

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

lsb_release -cs命令提供了一个Docker没有准备好包的存储库 - 您必须将其更改为xenial。

Linux Mint 18 which is based on Ubuntu 16.04 Xenial的正确命令是

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

答案 2 :(得分:8)

我在这里看到Ikraider的一篇有趣帖子解决了我的问题: https://github.com/docker/docker/issues/22599

网站说明有误,这是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

答案 3 :(得分:7)

也如官方docker文档中所建议。尝试运行此:

  • sudo vi /etc/apt/sources.list

然后删除/注释文件末尾的任何(deb [arch=amd64] https://download.docker.com/linux/ubuntu/ xenial stable)这样的条目。

然后在终端中运行以下命令:

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

  • sudo apt-get update

在我的情况下有效。

答案 4 :(得分:7)

Linux Mint 20 Ulyana用户需要在

中将“ ulyana” 更改为“仿生”

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

像这样:

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

答案 5 :(得分:6)

以下是用于解决问题的步骤列表:

  1. 删除Docker(这不会删除图像,容器,卷或 自定义配置文件):

      

    sudo apt-get purge docker-engine

  2. 删除Docker apt键:

      

    sudo apt-key del 58118E89F3A912897C070ADBF76221572C52609D

  3. 删除docker.list文件:

      

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

  4. 手动删除apt缓存文件:

      

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

  5. 删除 apt-transport-https ca-certificates

      

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

  6. 清理apt并执行autoremove:

      

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

  7. 重启Ubuntu:

      

    sudo reboot

  8. 运行apt-get update:

      

    sudo apt-get update

  9. 再次安装apt-transport-https和ca-certificates:

      

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

  10. 添加apt键:

      

    sudo apt-key adv \          --keyserver hkp://ha.pool.sks-keyservers.net:80 \          --recv-keys 58118E89F3A912897C070ADBF76221572C52609D

  11. 再次添加docker.list文件:

      回声" deb https://apt.dockerproject.org/repo ubuntu-xenial main" |   sudo tee /etc/apt/sources.list.d/docker.list

  12. 运行apt-get update:

      

    sudo apt-get update

  13. 安装Docker:

      

    sudo apt-get install docker-engine

  14. 当然,有很多变数,你的结果可能会有所不同。但是,这些步骤涵盖了尽可能多的区域,以确保清除潜在的问题点,从而提高成功的可能性。

    更新7/6/2017

    似乎较新版本的Docker正在使用不同的安装过程,这应该可以消除许多这些问题。请务必查看https://docs.docker.com/engine/installation/linux/ubuntu/

答案 6 :(得分:4)

我在Linux上也遇到了类似的问题,发现我使用Debian版本发现了我所做的事情,

$ cat /etc/debian_version buster/sid

然后在

中替换了Debian版本
$ sudo vi /etc/apt/sources.list.d/additional-repositories.list
deb [arch=amd64] https://download.docker.com/linux/debian    buster    stable

答案 7 :(得分:2)

编辑文件/etc/apt/sources.list.d/additional-repositories.list并添加deb [arch=amd64] https://download.docker.com/linux/ubuntu xenial stable  为我工作,这篇帖子对您很有帮助https://github.com/typora/typora-issues/issues/2065

答案 8 :(得分:1)

我仍然有同样的问题。上面的答案似乎都无法解决。 我拥有ubuntu 16.04,并且按照https://docs.docker.com/install/linux/docker-ce/ubuntu/

中所述的步骤进行操作

我怀疑它与关于https的apt-get错误有关。 apt-get打印的信息具有误导性。

我认为Failed to fetch..也可以翻译为:problem accessing resource from within an https connection

我如何得出这个结论:

首先,我支持公司代理,因此我设置了以下内容  配置:

/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;
};

我对sources.list

中的不同条目执行了以下测试

测试条目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.

失败

测试条目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

成功

测试条目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.

失败


在上述情况下,实际上可以使用以下命令从Failed to fetch / Release / browser访问易于获取wgetcurl文件的URL相同的代理配置。
apt-get仅与http反向代理url一起使用的事实,意味着存在一些在https连接中发出访问资源的问题
我不知道这个问题是什么,但是apt-get应该显示更多信息(apt更为冗长)。

  

注意:导线缠结情况1显示代理CONNECT成功,并且没有发送RST,但是当然无法读取文件。

答案 9 :(得分:1)

我也有类似的问题。有人可能会发现对我有用的东西很有帮助。

机器正在运行Ubuntu 16.04,并具有Docker CE。在查看了此处提供的答案和链接之后,尤其是从Elliot Beach提供的Docker网站的链接中,我打开了/etc/apt/sources.list并进行了检查。

文件同时包含deb [arch=amd64] https://download.docker.com/linux/ubuntu (lsb_release -cs) stabledeb [arch=amd64] https://download.docker.com/linux/ubuntu xenial stable

由于需要第二个,所以我只注释掉第一个,保存了文档,现在问题已解决。作为测试,我返回了同一文档,删除了注释符号,然后再次运行sudo apt-get update。当我这样做时,问题又回来了。

回顾一下:不仅我有Docker网站上所述的父Ubuntu发行版名称,而且我还注释掉了仍包含(lsb_release -cs)的行。

答案 10 :(得分:0)

这是在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

答案 11 :(得分:-1)

此问题的最佳检查:(如果您在代理后面),(在ubuntu 18.04上测试),(也将在其他ubuntu上工作),(主要错误:https_proxy =“ http://192.168.0.251:808 /)

  1. 检查这些文件:

    #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. 添加docker稳定存储库

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

    #sudo apt-get update
    
  4. 检查Docker CE

    #apt-cache policy docker-ce
    
  5. 安装Docker

    #sudo apt-get install docker-ce