在 Ubuntu 上安装 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 存储库访问包。
- 使用
sudo
或root
权限以用户身份登录计算机。 - 打开终端窗口。
- 更新程序包信息,确保 APT 与 https 方法一起使用,并且已安装 CA 证书。
$ sudo apt-get update
$ sudo apt-get install apt-transport-https ca-certificates
-
添加新的
GPG
密钥。此命令从密钥服务器hkp://ha.pool.sks-keyservers.net:80
下载 ID 为58118E89F3A912897C070ADBF76221572C52609D
的密钥,并将其添加到adv keychain
。有关更多信息,请参阅man apt-key
的输出。$ sudo apt-key adv \ --keyserver hkp://ha.pool.sks-keyservers.net:80 \ --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
-
在下表中找到与你的 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 。
-
运行以下命令,将占位符
<REPO>
的操作系统条目替换为。$ echo“”| sudo tee /etc/apt/sources.list.d/docker.list
-
通过执行
sudo apt-get update
更新APT
包索引。 -
验证
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 upgrade
,APT
从新的存储库中拉出来。
Ubuntu 版本的先决条件
对于 Ubuntu Trusty(14.04)
,Wily(15.10)和 Xenial(16.04)
,安装 linux-image-extra-*
内核软件包,允许你使用 aufs
存储驱动程序。
要安装 linux-image-extra-*
软件包:
-
在 Ubuntu 主机上打开终端。
-
使用命令
sudo apt-get update
更新包管理器。 -
安装推荐的软件包。
$ sudo apt-get install linux-image-extra-$(uname -r) linux-image-extra-virtual
-
继续 Docker 安装
对于 Ubuntu Precise(12.04 LTS),Docker 需要 3.13 内核版本。如果你的内核版本低于 3.13,则必须升级它。请参阅此表以查看你的环境所需的软件包:
包 | 描述 |
---|---|
linux-image-generic-lts-trusty |
通用 Linux 内核映像。这个内核内置了 AUFS 。这是运行 Docker 所必需的。 |
linux-headers-generic-lts-trusty |
允许依赖于它们的 ZFS 和 VirtualBox guest additions 等包。如果你没有为现有内核安装标头,那么你可以跳过 trusty 内核的这些标头。如果你不确定,应该包括此包以确保安全。 |
xserver-xorg-lts-trusty |
在没有 Unity / Xorg 的非图形环境中可选。在具有图形环境的计算机上运行 Docker 时需要。 |
ligbl1-mesa-glx-lts-trusty |
要了解有关这些程序包的原因的更多信息,请阅读 backported 内核的安装说明,特别是 LTS Enablement Stack 。请参阅每个版本下的注释 5。 |
要升级内核并安装其他软件包,请执行以下操作:
-
在 Ubuntu 主机上打开终端。
-
使用命令
sudo apt-get update
更新包管理器。 -
安装必需和可选包。
$ sudo apt-get install linux-image-generic-lts-trusty
-
对需要安装的其他软件包重复此步骤。
-
使用命令
sudo reboot
重新启动主机以使用更新的内核。 -
重启后,继续安装 Docker。
安装最新版本
确保满足先决条件,然后按照以下步骤操作。
注意: 对于生产系统,建议你安装特定版本, 以免意外更新 Docker。你应该仔细规划生产系统的升级。
-
以具有
sudo
权限的用户身份登录到你的 Ubuntu 安装。 (可能运行sudo -su
)。 -
通过运行
sudo apt-get update
更新你的 APT 包索引。 -
使用命令
sudo apt-get install docker-engine
安装 Docker。 -
使用命令
sudo service docker start
启动docker
守护程序。 -
通过运行 hello-world 映像验证是否正确安装了
docker
。$ sudo docker run hello-world
此命令下载测试映像并在容器中运行它。当容器运行时,它会打印一条信息性消息并退出。
以非 root 用户身份管理 Docker
如果你在使用 docker 命令时不想使用 sudo
,请创建一个名为 docker
的 Unix 组并向其添加用户。当 docker
守护程序启动时,它会使 docker 组对 Unix 套接字的所有权进行读/写。
要创建 docker
组并添加你的用户:
-
以具有
sudo
权限的用户身份登录 Ubuntu。 -
使用命令
sudo groupadd docker
创建docker
组。 -
将你的用户添加到
docker
组。$ sudo usermod -aG docker $USER
-
注销并重新登录,以便重新评估你的组成员身份。
-
验证你是否可以在没有
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
变量。