Docker的安装要求
Docker支持在多种平台上使用,包括Mac、Windows、Cloud以及Linux系统上等。由于Docker是基于Ubuntu发布的,所以官方更推荐在Ubuntu上使用Docker,开发者也可以根据自己的实际开发环境选择合适的开发平台。
Docker的安装并非想象中那么随意,在不同的平台上安装Docker必须满足不同的先决条件。由于本书选择在Ubuntu16.04版本上使用Docker,因此这里只针对Ubuntu系统上的Docker安装要求进行说明。
根据Docker官网上的安装说明,想要在Ubuntu上安装Docker需要满足两点要求,一是Ubuntu的版本支持,二是Ubuntu的内核支持,具体如下。
- Ubuntu的版本支持
● Ubuntu Trusty 14.04 (LTS)
● Ubuntu Xenial 16.04 (LTS)
● Ubuntu Zesty 17.04
● 其他更高的版本
2.Ubuntu的内核支持
Docker需要在64位版本的Ubuntu上安装。此外,还需要保证Ubuntu的内核版本不低于3.10(可以通过uname -r命令查看),其中3.10版本和更新维护版也是可以使用的,在低于3.10版本的内核上运行Docker会丢失一部分功能。
小提示:
上述版本和内核要求是对Docker全面支持的,也有一些开发者的版本或者系统无法满足条件,可以参考网上一些方法进行额外配置,达到满足Docker使用的需求,当然这种方法是不推荐的。
在线安装
由于在线安装方式比较容易,且后期升级维护相对方便,所以对于大多数开发者而言,通常会选择在线安装Docker。这种安装方式需要先设置一个Docker仓库,然后通过该仓库进行安装和后续更新。
在线安装方式的具体实现步骤如下。
1.设置Docker仓库
在新的主机上初次安装Docker CE之前,必须先设置Docker存储库,其步骤如下。
(1)更新apt的索引包
$ sudo apt-get update
需要注意的是,在执行apt更新完成后,终端可能会返回如“Problem executing scripts APT::Update::Post-Invoke-Success ‘if /usr/bin/test -w /var/cache/app-info -a -e /usr/bin/appstreamcli; then appstreamcli refresh > /dev/null; fi’”的子流程错误信息,这个错误是在Ubuntu16.04系统下更新apt时内部出现的问题,并不影响后续Docker的安装和使用,所以这个问题可以直接忽略。
(2)安装软件包允许apt通过HTTPS方式使用Docker仓库
$ sudo apt-get install
apt-transport-https
ca-certificates
curl
software-properties-common
(3)添加Docker官网的GPG key
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
(4)添加Docker稳定的仓库源(根据Ubuntu镜像版本的不同进行选择安装)
amd64:
$ sudo add-apt-repository
“deb [arch=amd64] https://download.docker.com/linux/ubuntu
$(lsb_release -cs)
stable”
armhf:
$ sudo add-apt-repository
“deb [arch=armhf] https://download.docker.com/linux/ubuntu
$(lsb_release -cs)
stable”
s390x:
$ sudo add-apt-repository
“deb [arch=s390x] https://download.docker.com/linux/ubuntu
$(lsb_release -cs)
stable”
2.安装Docker CE
设置好Docker仓库之后,就可以从存储库中安装和更新Docker,其实现步骤如下。
(1)更新apt的索引包
$ sudo apt-get update
(2)安装不同版本的Docker
在安装Docker时,通常会根据个人情况选择安装不同的版本。为此,Docker提供了两种安装方式,一是安装默认的最新版本的Docker,二是安装指定版本的Docker,具体如下。
● 安装最新版本的Docker,具体指令如下。
$ sudo apt-get install docker-ce
需要注意的是,执行上述指令后,之前存在的任何版本的Docker都会被替换。
● 安装指定版本的Docker,具体指令如下。
$ sudo apt-get install docker-ce=
从上述指令可以看出,安装指定版本的Docker时,需要通过“=”将版本字符串附加到安装包后。
为了更好的选择指定版本的Docker,可以使用apt-cache madison指令查看Docker仓库中的Docker版本信息,具体指令如下。
$ apt-cache madison docker-ce
执行上述指令后,就会显示出当前Docker仓库提供的在线的Docker的版本信息,具体效果如图1所示。
图1 Docker版本信息
图1列表中的内容依赖于启用的存储库,其中第二列是版本字符串,第三列是存储库名称,用于指示安装包来自哪个存储库。
(3)安装完成后,可以使用sudo docker run hello-world指令运行测试,具体指令如下。
$ sudo docker run hello-world
执行完上述指令后,Docker主机终端显示的结果信息如图2所示。
离线安装
在没有网络或者网络条件较差的情况下,我们可以选择离线安装Docker(使用DEB格式的安装文件)。这种安装方式的好处是不依赖于网络,但其缺点是后期使用时需要手动升级和维护,并且每次升级时都需要下载一个新的.deb文件。
离线安装方式的具体实现步骤如下。 - 下载离线安装文件
通过官方提供的地址https://download.docker.com/linux/ubuntu/dists/,下载安装Docker的.deb文件,访问该地址后的效果如图1所示。
图1 Docker离线安装文件地址
在图1中,需要选择自己机器所对应的Ubuntu版本。由于本书使用的是Ubuntu Xenial 16.04 (LTS)版本,所以要单击图中的xenial链接并进入到pool/stable/目录下,然后根据情况选择amd64、armhf或者s390x版本的.deb文件,如图2所示。
图2 Docker离线安装文件下载目录 - 使用离线文件安装Docker
通过下载的.deb文件进行Docker离线安装非常简单,只需要在Ubuntu系统的终端中执行如下指令。
$ sudo dpkg -i /path/to/package.deb
需要注意的是,使用sudo dpkg –i指令安装Docker时,一定要指定读者下载的.deb文件所在地址,例如上面指令表示执行/path/to/路径下的package.deb文件。
脚本文件安装
在开发和测试环境下,我们还可以使用Docker官方提供的自动化脚本文件来安装Docker,其中开发环境和测试环境下的脚本文件下载地址分别为https://get.docker.com/和https://test.docker.com/。
需要注意的是,这种安装方式是针对某些特定环境提供的,虽然使用此种方式可以快速的在非交互式的开发环境中安装稳定开发版本和测试版本的Docker CE,但是在实际环境下不推荐使用脚本文件来安装Docker,所以这里对于脚本文件的Docker安装就不做具体介绍了,有兴趣的读者可以查看官网介绍,具体参考地址为https://docs.docker.com/engine/installation/linux/docker-ce/ubuntu/#install-using-the-convenience-script。
Docker的开机启动和添加当前用户可执行权限
在Docker安装完成后,开发者可以根据实际需求进行其他一些相关设置,例如Docker开机启动、当前用户可执行Docker等,具体设置方式如下。
(1)配置Docker开机启动
$ sudo systemctl enable docker
(2)配置当前用户执行Docker权限(username是自己的用户名)
$ sudo usermod -aG docker username
完成上述配置后,需要重启Ubuntu系统来查看效果。
安装时的问题及解决方法
通常情况下,严格按照前面几个小节的安装要求和方式进行Docker的安装,基本就可以正常完成Docker的安装,但在某些特殊情况下,安装过程可能会出现一些问题或者错误,本小节将对容易出现的几个问题给出解决方法。 - Docker安装连接中断
Docker的在线安装方式需要连接外网,所以对网速有一定的要求。在某些限网环境或者用网密集的情况下,很容易出现网速过慢、中断连接的情况,如图1所示。
图1 Docker安装连接中断
从图1可以看出,在安装时出现了网络连接速度过慢导致了下载安装失败的问题。
针对这种网速过慢的情况,建议开发者在网络畅通的情况下重新下载安装,或者使用他人提供的.deb文件进行离线安装,当然也可以通过国内其他平台提供的Docker源进行下载安装。 - Docker更新资源失败
Docker执行更新apt索引包并进行安装的过程中,可能会显示无法获取锁等异常情况,如图2所示。
图2 Docker更新资源失败
出现图2中问题的原因可能是由于另外一个程序(上次运行安装或更新没有正常完成)正在使用该程序,从而导致资源被锁不可用。
这种问题解决的办法其实很简单,只需要在系统终端执行以下两条指令即可。
$ sudo rm /var/cache/apt/archives/lock
$ sudo rm /var/lib/dpkg/lock