本节书摘来自异步社区《第一本Docker书(修订版)》一书中的第2章,第2.3节,作者:【澳】James Turnbull(詹姆斯•特恩布尔)著,更多章节内容可以访问云栖社区“异步社区”公众号查看
2.3 在Red Hat和Red Hat系发行版中安装Docker
在Red Hat企业版Linux(或者CentOS或Fedora)中,只有少数几个版本可以安装Docker,包括:
RHEL(和CentOS)6或以上的版本(64位);
Fedora 19或以上的版本(64位);
Oracle Linux 6和Oracle Linux 7,带有Unbreakable企业内核发行版 3(3.8.13)或者更高版本(64位)。
提示
在Red Hat企业版Linux 7及更高版本中,Docker已经成为系统自带的软件包了,并且,只有Red Hat企业版Linux 7是Red Hat官方支持Docker的发行版本。
2.3.1 检查前提条件
在Red Hat和Red Hat系列的Linux发行版中,安装Docker所需的前提条件也并不多。
1.内核
可以使用代码清单2-17所示的uname命令来确认是否安装了3.8或更高的内核版本。
代码清单2-17 检查Red Hat或Fedora的内核
$ uname -a
Linux darknight.example.com 3.10.9-200.fc19.x86_64 #1 SMP Wed Aug
21 19:27:58 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
目前所有官方支持的Red Hat和Red Hat系列平台,应该都安装了支持Docker的内核。
2.检查Device Mapper
我们这里使用Device Mapper作为Docker的存储驱动,为Docker提供存储能力。在Red Hat企业版Linux、CentOS 6或Fedora 19及更高版本宿主机中,应该也都安装了Device Mapper,不过还是需要确认一下,如代码清单2-18所示。
代码清单2-18 检查Device Mapper
$ ls -l /sys/class/misc/device-mapper
lrwxrwxrwx 1 root root 0 Oct 5 18:50 /sys/class/misc/device-mapper
-> ../../devices/virtual/misc/device-mapper
同样,也可以在/proc/devices文件中检查是否有device-mapper条目,如代码清单2-19所示。
代码清单2-19 在Red Hat的proc文件中检查Device Mapper
$ sudo grep device-mapper /proc/devices
如果没有检测到Device Mapper,也可以试着安装device-mapper软件包,如代码清单2-20所示。
代码清单2-20 安装Device Mapper软件包
$ sudo yum install -y device-mapper
提示
在新版本的Red Hat系列发行版本中, yum命令已经被dnf命令取代,它们的语法并没有什么变化。
安装完成后,还需要加载dm_mod内核模块,如代码清单2-21所示。
代码清单2-21 加载Device Mapper模块
$ sudo modprobe dm_mod
模块加载完毕,就应该可以找到/sys/class/misc/device-mapper条目了。
2.3.2 安装Docker
在不同版本的Red Hat中,安装过程略有不同。在RHEL 6或CentOS 6中,需要先添加EPEL软件包的仓库。而Fedora中则不需要启用EPEL仓库。在不同的平台和版本中,软件包命名也有细微的差别。
1.在RHEL 6和CentOS 6中安装Docker
对于Red Hat企业版Linux 6和CentOS 6,可以使用代码清单2-22所示的RPM软件包来安装EPEL。
代码清单2-22 在RHEL 6和CentOS 6中安装EPEL
$ sudo rpm –Uvh http://download.fedoraproject.org/pub/epel/6/i386
/epel-release-6-8.noarch.rpm
安装完EPEL后,就可以安装Docker了,如代码清单2-23所示。
代码清单2-23 在RHEL 6和CentOS 6中安装Docker软件包
$ sudo yum -y install docker-io
2.在RHEL 7中安装Docker
RHEL 7或更高的版本可以按照代码清单2-24所示的指令来安装Docker。
代码清单2-24 在RHEL 7中安装Docker
$ sudo subscription-manager repos --enable=rhel-7-server-extras-rpms
$ sudo yum install -y docker
要想访问Red Hat的Docker软件包和文档,必须是Red Hat的客户,并拥有RHEL服务器订阅授权(RHEL Server subscription entitlement)。
3.在Fedora中安装Docker
在不同版本的Fedora中,有几个软件包的名称有所不同。在Fedora 19中,要安装docker-io这个软件包,如代码清单2-25所示。
提示
在新版本的Red Hat系列发行版本中,yum命令已经被dnf命令取代,它们的语法并没有什么变化。
代码清单2-25 在Fedora 19中安装Docker
$ sudo yum -y install docker-io
在Fedora 20或更高的版本中,软件包的名称已经改为docker,如代码清单2-26所示。
代码清单2-26 在Fedora 20或更高版本中安装Docker
$ sudo yum -y install docker
而在Fedora 21中,软件包的名称又回退到了docker-io,如代码清单2-27所示。
代码清单2-27 在Fedora 21上安装Docker
$ sudo yum -y install docker-io
最后,到了Fedora 22,软件包的名称则又变回了docker。同时,也是在Fedora 22,yum命令也不被推荐使用,被dnf命令取代了,如代码清单2-28所示。
代码清单2-28 在Fedora 22上安装Docker
$ sudo dnf install docker
提示
可以在官方网站(https://docs.docker.com/engine/installation/oracle/)
找到如何在Oracle Linux上安装Docker的文档。
2.3.3 在Red Hat系发行版中启动Docker守护进程
软件包安装完成后就可以启动Docker守护进程了。在RHEL 6或CentOS 6中,可以用代码清单2-29所示的命令启动守护进程。
代码清单2-29 在Red Hat 企业版Linux 6中启动Docker守护进程
$ sudo service docker start
想要在系统开机时自动启动Docker服务,还应该执行代码清单2-30所示的命令。
代码清单2-30 确保在RHEL 6中开机启动Docker
$ sudo service docker enable
在RHEL 7或Fedora中启动Docker服务,则需要执行代码清单2-31所示的命令。
代码清单2-31 在RHEL 7中启动Docker守护进程
$ sudo systemctl start docker
想要在系统开机自动启动Docker服务,还要执行代码清单2-32所示的命令。
代码清单2-32 确保在Red Hat企业版7中开机启动Docker
$ sudo systemctl enable docker
完成上述工作后,就可以用docker info命令来确认Docker是否已经正确安装并运行了,如代码清单2-33所示。
代码清单2-33 在Red Hat系列发行版中检查Docker是否正确安装
$ sudo docker info
Containers: 0
Images: 0
. . .
提示
也可以直接从Docker官方网站下载RHEL[20]、CentOS[21]和Fedora[22]用的最新版RPM包。