在 Ubuntu Linux 上安装 docker

以下 64 位版本的 Ubuntu Linux 支持 Docker :

  • Ubuntu Xenial 16.04(LTS)
  • Ubuntu Wily 15.10
  • Ubuntu Trusty 14.04(LTS)
  • Ubuntu Precise 12.04(LTS)

几个笔记:

以下说明仅涉及使用 Docker 软件包进行安装,这可确保获取 Docker 的最新官方版本。如果你只需要使用 Ubuntu-managed 软件包进行安装,请参阅 Ubuntu 文档(出于显而易见的原因,不建议使用)。

Ubuntu Utopic 14.10 和 15.04 存在于 Docker 的 APT 存储库中,但由于已知的安全问题而不再受到官方支持。

先决条件

  • Docker 仅适用于 64 位 Linux 安装。
  • Docker 需要 Linux 内核版本 3.10 或更高版本(Ubuntu Precise 12.04 除外,它需要 3.13 或更高版本)。早于 3.10 的内核缺少运行 Docker 容器所需的一些功能,并且包含导致数据丢失的已知错误,并且在某些情况下经常出现恐慌。使用命令 uname -r 检查当前内核版本。如果你需要通过向下滚动来更新 Ubuntu Precise (12.04 LTS) 内核,请查看此帖子。请参阅此 WikiHow 帖子以获取其他 Ubuntu 安装的最新版本。

更新 APT 来源

这需要完成以便从 Docker 存储库访问包。

  1. 使用 sudoroot 权限以用户身份登录计算机。
  2. 打开终端窗口。
  3. 更新程序包信息,确保 APT 与 https 方法一起使用,并且已安装 CA 证书。
$ sudo apt-get update
$ sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    software-properties-common
  1. 添加 Docker 的官方 GPG 密钥:

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

    验证密钥指纹是否为 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88

     $ sudo apt-key fingerprint 0EBFCD88
    
        pub   4096R/0EBFCD88 2017-02-22
              Key fingerprint = 9DC8 5822 9FC7 DD38 854A  E2D8 8D81 803C 0EBF CD88
        uid                  Docker Release (CE deb) <docker@docker.com>
        sub   4096R/F273FCD8 2017-02-22
  1. 在下表中找到与你的 Ubuntu 版本对应的条目。这决定了 APT 搜索 Docker 软件包的位置。如果可能,运行 Ubuntu 的长期支持(LTS)版本。
Ubuntu 版本 知识库
Precise 12.04(LTS) deb https://apt.dockerproject.org/repo ubuntu-precise main
Trusty 14.04(LTS) deb https://apt.dockerproject.org/repo ubuntu-trusty main
Wily 15.10 deb https://apt.dockerproject.org/repo ubuntu-wily main
Xenial 16.04(LTS) deb https://apt.dockerproject.org/repo ubuntu-xenial main

注意: Docker 不提供所有体系结构的包。二进制工件是每晚构建的,你可以从 https://master.dockerproject.org 下载它们。要在多架构系统上安装 docker,请在条目中添加 [arch=...] 子句。有关详细信息,请参阅 Debian Multiarch wiki

  1. 运行以下命令,将占位符 <REPO> 的操作系统条目替换为。

    $ echo“”| sudo tee /etc/apt/sources.list.d/docker.list

  2. 通过执行 sudo apt-get update 更新 APT 包索引。

  3. 验证 APT 是否从正确的存储库中提取。

运行以下命令时,将为可供你安装的每个版本的 Docker 返回一个条目。每个条目都应该有 URL https://apt.dockerproject.org/repo/。当前安装的版本标有***。参见下面的示例输出。

$ apt-cache policy docker-engine

  docker-engine:
    Installed: 1.12.2-0~trusty
    Candidate: 1.12.2-0~trusty
    Version table:
   *** 1.12.2-0~trusty 0
          500 https://apt.dockerproject.org/repo/ ubuntu-trusty/main amd64 Packages
          100 /var/lib/dpkg/status
       1.12.1-0~trusty 0
          500 https://apt.dockerproject.org/repo/ ubuntu-trusty/main amd64 Packages
       1.12.0-0~trusty 0
          500 https://apt.dockerproject.org/repo/ ubuntu-trusty/main amd64 Packages

从现在开始运行 apt-get upgradeAPT 从新的存储库中拉出来。

Ubuntu 版本的先决条件

对于 Ubuntu Trusty(14.04),Wily(15.10)和 Xenial(16.04),安装 linux-image-extra-*内核软件包,允许你使用 aufs 存储驱动程序。

要安装 linux-image-extra-*包:

  1. 在 Ubuntu 主机上打开终端。

  2. 使用命令 sudo apt-get update 更新包管理器。

  3. 安装推荐的软件包。

    $ sudo apt-get install linux-image-extra-$(uname -r) linux-image-extra-virtual
    
  4. 继续 Docker 安装

对于 Ubuntu Precise(12.04 LTS),Docker 需要 3.13 内核版本。如果你的内核版本低于 3.13,则必须升级它。请参阅此表以查看你的环境所需的软件包:

描述
linux-image-generic-lts-trusty 通用 Linux 内核映像。这个内核内置了 AUFS。这是运行 Docker 所必需的。
linux-headers-generic-lts-trusty 允许依赖于它们的 ZFSVirtualBox guest additions 等包。如果你没有为现有内核安装标头,那么你可以跳过 trusty 内核的这些标头。如果你不确定,应该包括此包以确保安全。
xserver-xorg-lts-trusty 在没有 Unity / Xorg 的非图形环境中可选。在具有图形环境的计算机上运行 Docker 时需要
ligbl1-mesa-glx-lts-trusty 要了解有关这些程序包的原因的更多信息,请阅读 backported 内核的安装说明,特别是 LTS Enablement Stack 。请参阅每个版本下的注释 5。

要升级内核并安装其他软件包,请执行以下操作:

  1. 在 Ubuntu 主机上打开终端。

  2. 使用命令 sudo apt-get update 更新包管理器。

  3. 安装必需和可选包。

    $ sudo apt-get install linux-image-generic-lts-trusty
    
  4. 对需要安装的其他软件包重复此步骤。

  5. 使用命令 sudo reboot 重新启动主机以使用更新的内核。

  6. 重启后,继续安装 Docker。

安装最新版本

确保满足先决条件,然后按照以下步骤操作。

注意: 对于生产系统,建议你安装特定版本, 以免意外更新 Docker。你应该仔细规划生产系统的升级。

  1. 以具有 sudo 权限的用户身份登录到你的 Ubuntu 安装。 (可能运行 sudo -su)。

  2. 通过运行 sudo apt-get update 更新你的 APT 包索引。

  3. 使用命令 sudo apt-get install docker-ce 安装 Docker Community Edition。

  4. 使用命令 sudo service docker start 启动 docker 守护程序。

  5. 通过运行 hello-world 图像验证是否正确安装了 docker

     $ sudo docker run hello-world
    

此命令下载测试映像并在容器中运行它。当容器运行时,它会打印一条信息性消息并退出。

以非 root 用户身份管理 Docker

如果你在使用 docker 命令时不想使用 sudo,请创建一个名为 docker 的 Unix 组并向其添加用户。当 docker 守护程序启动时,它会使 docker 组对 Unix 套接字的所有权进行读/写。

要创建 docker 组并添加你的用户:

  1. 以具有 sudo 权限的用户身份登录 Ubuntu。

  2. 使用命令 sudo groupadd docker 创建 docker 组。

  3. 将你的用户添加到 docker 组。

     $ sudo usermod -aG docker $USER
    
  4. 注销并重新登录,以便重新评估你的组成员身份。

  5. 验证你是否可以在没有 sudo 权限的情况下使用 docker 命令。

     $ docker run hello-world
    

如果失败,你将看到错误:

     Cannot connect to the Docker daemon. Is 'docker daemon' running on this host?

检查是否为 shell 设置了 DOCKER_HOST 环境变量。

    $ env | grep DOCKER_HOST

如果已设置,则上述命令将返回结果。如果是这样,请取消设置。

    $ unset DOCKER_HOST

你可能需要在~/.bashrc~/.profile 等文件中编辑环境,以防止错误地设置 DOCKER_HOST 变量。