如何升级Docker

我输入docker.io version,然后得到:
Client version: 0.9.1
Go version (client): go1.2.1
Git commit (client): 3600720
Server version: 0.9.1
Git commit (server): 3600720
Go version (server): go1.2.1
Last stable version: 0.11.1, please update docker

我接着执行一个apt-get update,然后要么执行apt-get upgrade,要么执行apt-get upgrade docker.io,但是它只给我返回了这个:
docker.io is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

我正在运行Ubuntu 14.04(trusty)64位服务器。
编辑:我想我在这个帖子评论中使用了一个脚本来安装docker(因为它声称可以让我只需键入docker而不是docker.io)。

1你是怎么安装Docker的? - jobin
除了将“docker.io”二进制文件重命名为“docker”之外,我不知道脚本的目标是什么。 - Braiam
@Braiam:我也不太确定,但由于我对Linux操作系统不太熟悉,我希望它做的事情比那个更有用(或者这只是一个比简单重命名二进制文件更好的方法)。 - Gerrat
9个回答

假设是Ubuntu Trusty(14.04)版本,官方提供的是0.9.1版本。
再次更新于2017/03/07,以反映新版本的变化,请参阅https://blog.docker.com/2017/03/docker-enterprise-edition/
官方指南在这里安装Ubuntu的Docker,旧版本有不同的软件包名称。
  • docker.io:在默认的Ubuntu仓库中是非常旧的版本(可以跳过此步骤)
  • docker-engine:在1.13.x版本之前使用
  • docker-ce:自17.03版本起

对于docker-engine

# add the new gpg key
$ sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
# add new repo
$ sudo add-apt-repository \
  "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) \
  stable"

然后您就可以顺利升级到最新的Docker版本。

$ sudo apt-get update

# remove the old
$ sudo apt-get purge lxc-docker*

# install the new
$ sudo apt-get install docker-engine

如果你不想安装最新的软件包,你可以按照以下步骤进行操作。
$ sudo apt-get install docker-engine=1.7.1-0~trusty

适用于docker-ce

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
$ sudo add-apt-repository \
  "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) \
  stable"
$ sudo apt-get update
$ sudo apt-get install docker-ce

3你对使用这种方法和我找到的从htts://get.docker.io安装的方法有什么优缺点吗?我觉得从官方docker域名下载的似乎更正式一些,但如果管理docker-maint/testing ppa的是同一批人,那也许并不重要。 - Gerrat
我不知道,你的方法链接有点老了,PPA是Ubuntu用户的好选择,这来自Docker Ubuntu维护团队,也是可信赖的。可能就像你说的那样,同一群人以更好的方式为社区服务;-) - Larry Cai
1卖出了! - Gerrat
@Gerrat,如果现在选择1.0版本的话,似乎又回到了你的解决方案上。 - Larry Cai
3使用sudo命令... gpg: 找不到可写入的密钥环: eof - Michael Cole
你如何在docker-ce和docker-engine之间做出选择呢?我找到的每个参考资料都是在比较docker-ce和docker-ee。 - Bruno Bronosky
如上所述,docker-engine现在已被docker-ce取代。 - Larry Cai
这个答案还正确吗?如果不正确,那么我该如何在Linux Debian 10机器上更新Docker? - Fakhar Ahmad Rasul

警告:由于这是一篇较旧的帖子,请使用官方资源以防止问题:https://www.docker.com/community-edition#/download
升级到最新版本的一种方法(无需从源代码安装)是使用Digital Ocean提供的这里的说明:
  1. 将Docker存储库密钥添加到apt-key以进行软件包验证

    sudo sh -c "wget -qO- https://get.docker.io/gpg | apt-key add -"
  2. 将Docker存储库添加到aptitude源:

    sudo sh -c "echo deb http://get.docker.io/ubuntu docker main\ > /etc/apt/sources.list.d/docker.list"
  3. 使用新添加的存储库更新:

    sudo aptitude update
  4. 最后,下载并安装Docker:

    sudo aptitude install lxc-docker

1这意味着,你决定使用可能不太稳定的上游版本。例如,升级到上游的docker 1.1.0后,我在删除某些容器时开始看到错误Driver aufs failed to remove root filesystem。而在Trusty中,我从未见过这种情况发生在docker.io软件包上,可以推测它更经过测试和稳定。 - Sridhar Ratnakumar
1@Sridhar:同意。然而,我最初升级的原因是当前的“经过测试和稳定”的版本要么缺少一些重要功能(现在记不清是什么了),要么对我来说有一些无法忍受的错误。而你所提到的问题似乎是存在已经相当长时间的一个错误:请参阅此页面底部引用的三个相关错误:https://coderwall.com/p/h24pgw - Gerrat
请使用官方资源进行安装,这些已经过时了... https://www.docker.com/community-edition#/download - schlenger

简短回答:官方 Docker 安装文档 现在已经为 Ubuntu 14.04 提供了相关说明(尽管可能不够清晰)。
Ubuntu 包名为 docker.io 的软件包由 Docker 公司未维护,版本更新较慢。例如,目前它仍停留在版本 0.9.1,而最新版本为 1.0.1。如果您安装了该软件包,建议将其删除。
Docker 软件包的名称为 lxc-docker(有点令人困惑,因为 LXC 已不再是必需的)。不过,这个软件包是最新的。您需要将 Docker 拥有的存储库添加到您的 apt-get 设置中。官方 Docker 安装文档 为 Ubuntu 14.04 提供了相关说明,请查找“如果您想要尝试最新版本的 Docker”。请注意,由 Ubuntu 提供的软件包名称为 docker.io,而下载的二进制文件名称为 docker

如果你信任 get.docker.com,请运行:
curl -sSL https://get.docker.com/ | sudo bash

1警告:此系统上似乎已存在“docker”命令。如果您已经安装了Docker,运行此脚本可能会引起问题。 - ecoologic

您可以按照说明从第三方存储库安装。
$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9
$ sudo sh -c "echo deb https://get.docker.io/ubuntu docker main > /etc/apt/sources.list.d/docker.list"
$ sudo apt-get update
$ sudo apt-get install lxc-docker

你已经拥有最新版本的docker.io(0.9.1),该版本今天在Trusty Tahr的ubuntu软件库中可用。
然而,如果你仍然想要升级版本,你可以从github克隆最新版本的docker.io并重新编译。关于从源代码安装的说明,请参考docker.io博客上的交互式教程

谢谢,但我刚刚完成了交互式教程。它没有提到如何从源代码安装 - 它只是介绍了一些非常基本的Docker命令。 - Gerrat
我需要更新版本的原因是,尝试运行导入的图像时完全崩溃了。该图像在最新稳定版本0.11.1上运行良好。我在另一台机器上运行最新的稳定版本,但不确定如何获得它,但很可能不是从源代码编译而来。也许有另一个存储库拥有最新的稳定版本吗? - Gerrat
你在提醒我如何安装最新版本时非常有帮助。 - Gerrat

或者只需简单地运行sudo apt-get install -f docker-ce来获取最新的稳定版本。

2这对我没用 - 我得到了 E: Package 'docker-ce' has no installation candidate 的错误提示。 - Alexander Mills


欢迎来到Ask Ubuntu。虽然这些链接可能回答了问题,但最好在这里添加必要的部分。 - user833907
这些脚本有点危险,因为它们会删除任何名称中包含"docker"的软件包,例如docker-registry - knb

你还可以从Launchpad下载docker.io 0.11.1 .deb文件并安装。
wget https://launchpad.net/~docker-maint/+archive/testing/+files/docker.io_0.11.1%7Edfsg1-1%7Eppa1%7Etrusty1_amd64.deb

sudo dpkg -i docker.io_0.11.1~dfsg1-1~ppa1~trusty1_amd64.deb

有趣。看起来那只是几周前刚建立的。 - Gerrat