Docker存储库在Ubuntu上运行apt-get更新时没有发布文件


89

我正在使用Ubuntu 16.10,并且最近按照此处的说明使用Xenial构建安装了Docker(v1.12.4)。在创建容器,确保它们自动重新启动等方面,我没有遇到任何问题。

但是,现在每次我运行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.

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

有人以前遇到过并修复过吗?如果是这样,需要什么解决呢?


1
请看看这有助于- askubuntu.com/questions/768569/...
拉奥

@Rao,很遗憾,这不能解决问题。删除密钥,源列表条目,再次运行apt-get update,然后重复Docker安装步骤后,我仍然收到相同的错误消息。
丹尼尔·伊格尔

@Rao,我想出了解决方案并添加了答案。但是,您提到的文章可能会对其他在我的问题上绊脚石的人有所帮助,因此+1。干杯。
丹尼尔·伊格尔

1
就我而言,以下答案无济于事。我的问题是我正在使用apt-cacher-ng而不代理https流量。github.com/moby/moby/issues/22599#issuecomment-404675734
jamshid

Answers:


84

在Linux Mint上,官方说明对我不起作用。我必须进入/etc/apt/sources.list.d/additional-repositories.list并更改serenaxenial


2
请注意,出于某种原因trustyserena在我的文件中有一个docker line和另一个。也许我曾经尝试过同样的过程,却忘记了。无论如何,我必须删除该trusty行,否则它将抱怨无法解决的依赖关系。
罗巴蒂

3
感谢您提供目录sources.list.d参考。修复了“ sudo rm /etc/apt/sources.list.d/docker*”的Ubuntu xenial问题。现在,apt-get更新终于可以了。
nine9five19”,2013年

2
对于Debian一样:将文件“ /etc/apt/sources.list.d/docker.list”中的“ debian 10稳定版”替换为“ debian拉伸稳定版”,它应该可以工作。
peschanko

我不得不将我的更改为bionic
jpthesolver2

72

对于Linux Mint,此问题实际上是在Docker网站中引用的:

注意:下面的lsb_release -cs子命令返回Ubuntu发行版的名称,例如xenial。有时,在Linux Mint之类的发行版中,您可能必须更改$(lsb_release -cs)为父Ubuntu发行版。例如,如果您使用的是Linux Mint Rafaela,则可以使用trusty。

amd64:

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

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

基于Ubuntu 16.04 Xenial的Linux Mint 18的正确命令是

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

1
您提供的命令与Docker站点上存在的命令相同。但是,它在ubuntu 16.04上对我不起作用。生成的条目sources.list是: deb [arch=amd64] https://download.docker.com/linux/ubuntu xenial stable但仍然是同样的问题。我希望有人能解释为什么它不能找到Release里面https://download.docker.com/linux/ubuntu/dists/xenial/stable/binary-amd64/。悲伤:在使用ubuntu多年之后,我仍然无法弄清楚事物如何与存储库路径一起工作。
马里诺斯(Marinos)

这解决了我的问题,也使事情在新的WLinux发行版上发展起来。
rainabba

22

艾略特海滩是正确的。谢谢艾略特。

这是我要旨中的代码。

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

2
如果不运行xenial,请仔细运行这些命令。此命令会更安全add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
spuder

在某些情况下(例如,Mint),没有受支持的发行版的lsb_release -cs返回非常有用,tara因此xenial,如图所示(或值得信赖)将其覆盖。
Strixy

正式名称为Elliott Beach的用户将被称为战争黑猩猩
战争黑猩猩

您的要点解决了Kubuntu eoan的“ E:软件包'containerd.io'没有候选安装程序”的问题。有人用仿生学解决了这个问题,但是对我来说,这对我不起作用。$(lsb_release -cs)由于不完全支持,因此在使用时会出现问题。其他人使用这样的“错误配置”无4个月,计数(任何问题,破解报告stackoverflow.com/questions/60274857/...
Leamsi

17

正如官方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

就我而言,它奏效了。


10

我在这里从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


4

我在Linux Mint上遇到了类似的问题,发现我使用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

4

警告:使用以下步骤需要您自担风险。您可能会收到注释中指示的不同结果。请谨慎行事,并在执行此操作之前进行完整备份。

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

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

    sudo apt-get purge docker-engine

  2. 删除Docker apt键:

    须藤apt-key del 58118E89F3A912897C070ADBF76221572C52609D

  3. 删除docker.list文件:

    须藤rm /etc/apt/sources.list.d/docker.list

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

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

  5. 删除apt-transport-httpsca-certificates

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

  6. 清洁apt并执行自动删除:

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

  7. 重新启动Ubuntu:

    须藤重启

  8. 运行apt-get update:

    sudo apt-get更新

  9. 安装apt-transport-https并再次获得ca证书:

    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
  1. 再次添加docker.list文件:
> echo "deb https://apt.dockerproject.org/repo ubuntu-xenial main" |
sudo tee /etc/apt/sources.list.d/docker.list
  1. 运行apt-get update:
> sudo apt-get update
  1. 安装Docker:
> sudo apt-get install docker-engine

当然,有很多变量,您的结果可能会有所不同。但是,这些步骤覆盖了尽可能多的区域,以确保消除潜在的问题点,从而使成功的可能性更高。

更新7/6/2017

看来较新版本的Docker正在使用不同的安装过程,这应消除许多此类问题。确保检查出https://docs.docker.com/engine/installation/linux/ubuntu/


运行重启后,我的登录屏幕显示在Linux Mint中
Sathishkumar Rakkiasamy

3
运行:sudo apt-get purge apt-transport-https ca-certificates是一个可怕的主意,我想我搞砸了我的OS:C
RicardoE

@RicardoE,运行完之后,您的系统正在发生什么?
丹尼尔·伊格尔

1
我使用的是Linux Mint,它基本上卸载了所有的肉桂产品和其他一些软件/软件包,例如Google chrome
RicardoE

1
我再次使用以下命令重新安装了所有内容:/var/log/apt/history.log
RicardoE

3

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

机器正在运行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)的行。


在Ubuntu 18.10上,我注释掉了这一行:#deb [arch = amd64] download.docker.com/linux/ubuntu宇宙稳定
Sergei G


1

我仍然有同样的问题。上面的答案似乎都无法解决。我有ubuntu 16.04,并且按照https://docs.docker.com/install/linux/docker-ce/ubuntu/中所述的步骤进行操作

我怀疑这与apt-get关于https的错误有关。所打印的信息具有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.

失败


在上述情况下 ,实际上可以使用相同的代理配置从/ /访问apt-get的URLFailed to fetch以及Release文件。仅适用于http反向代理url 的事实意味着从https连接访问资源存在一些问题。 我不知道这个问题是什么,但是应该显示更多信息(甚至更冗长)。browserwgetcurl
apt-get
apt-getapt

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


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


-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 update:

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

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

    #sudo apt-get install docker-ce
    
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.