在Centos系统上安装Docker社区版

前言

本文详细介绍了如在Centos系统上安装Docker的社区版本,为后面搭建学习和测试环境提供了基础。

什么是Centos

CentOS(Community Enterprise Operating System,社区企业操作系统)是Linux发行版之一,它是来自于 Red Hat Enterprise Linux 依照开放源代码规定释出的源代码所编译而成。
由于出自同样的源代码,因此有些要求高度稳定性的服务器以CentOS替代商业版的Red Hat Enterprise Linux使用。两者的不同,在于CentOS完全开源。

什么是Docker

Docker类似虚拟机,是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上。
Docker分两个版本:

  • CE(Community Edition)
  • EE(Enterprise Edition)
    CE版本是免费的,如果我们学习或者一般应用,CE足够。EE版本在安全性上有很大提升,是收费版本,可以试用一定时间。
    Docker容器和虚拟机的主要区别在于,虚拟机管理程序对整个设备进行抽象处理,而容器只是对操作系统内核进行抽象处理。相对于虚拟机,容器可以“丢弃没有用的99.9%的虚拟机垃圾,剩下一个小巧简洁的胶囊式容器,里面含有你的应用程序”。

    安装流程

    下面将介绍使用yum安装Docker。

    yum介绍

    Yum(全称为 Yellow dog Updater, Modified)是一个在 Fedora和RedHat以及CentOS中的Shell前端软件包管理器。
    基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。

    卸载旧版本

    较旧的Docker版本称为dockerdocker-engine。如果已安装这些程序,请卸载它们以及相关的依赖项。
    1
    2
    sudo yum docker, docker-client, docker-common
    sudo yum remove docker, docker-client, docker-client-latest, docker-common, docker-latest , docker-latest-logrotate, docker-logrotate , docker-engine

    更新yum

    此条命令升级所有包还有内核
    1
    yum -y update
    若不升级内核,可输入
    1
    yum -y upgrade

    Centos7装Docker的坑

    如果你的版本选择的是Centos7,恭喜你只要一步就可以安装完毕.
    1
    yum -y install docker
    安装完毕后,直接跳到验证步骤吧。
    别急别急,先别跳,这个默认安装的docker版本号为1.13.1。
    查阅相关资料,Docker是在1.13.1后正式推出企业版(2017年),版本号也从此发生了变化,由原来的1.13.1升级到了17.03(即表示17年3月),从此Docker有了docker-eedocker-ce之分。
    前者为企业版,后者为社区版。社区版是免费提供给个人开发者和小型团体使用的,企业版会提供额外的收费服务,比如经过官方测试认证过的基础设施、容器、插件等。
    再回头来看,这个1.13.1这个版本已经比较老了,2017年出的,现在都2020年了。所以装了此版本的,执行上面的卸载命令,装免费的社区版本吧。要不然遇到一些版本bug,让你哭死!
    好了,Centos8的用户等着不耐烦了,开始安装社区版本了。

    安装必备依赖项

    1
    yum install -y yum-utils device-mapper-persistent-data lvm2
    yum-util提供yum-config-manager功能,另外两个是devicemapper驱动依赖的包。

    添加yum的源

    为了安装docker的社区版本,需要给yum添加源,这里提供两种方式:

1.添加国内源:

1
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

2.添加官方源:

1
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

这两个源下载的docker-ce.repo是一样的,执行上述其中一条命令后,就生成了 /ect/yum.repos.d/docker-ce.repo 这个文件,查看里面的内容,如图1所示。
图1. 文件内容
可以看到只有 [docker-ce-stable] 是启用的,即enabled=1,其他诸如 docker-ce-edge、docker-ce-test 都是禁用的。
在这里说明一下,stable是Docker的一个版本意思,社区版按照stable和edge两种方式发布,每个季度更新stable版本,每个月份更新edge版本。
另外,test版本是预发布版本,也就是下一个大版本的测试作品。

如果需要启动docker-ce-edge,需要执行以下命令:

1
sudo yum-config-manager --enable docker-ce-edge

执行完后,再打开文件,可以看到 docker-ce-edge的enabled=1 了。
如果要禁用,通过命令:

1
sudo yum-config-manager --disable docker-ce-edge

安装Docker CE

确保成功添加源以后,可以愉快地安装Docker了。
可以选择直接安装最新的Docker社区版本:

1
sudo yum -y install docker-ce --nobest

--nobest: use not only best candidate packages
如果在生产环境,往往不是安装最新版本,而是安装指定版本,那么可以先通过如下命令查看版本:

1
yum list docker-ce --showduplicates|sort -r

可以看到如下结果:
图2. 版本列表
由图2,可以看到,截止2020年7月15日,最新版本为19.03.12
安装生产环境指定需要的版本:

1
sudo yum install docker-ce-19.03.12

启动docker

安装好后,启动docker服务

1
sudo systemctl start  docker

检测流程

查看Docker版本

1
docker -v

Docker version 19.03.12, build 48a66213fe

启动测试应用

1
sudo docker run hello-world

该命令会下载一个test镜像,并在容器中运行。输出如下,表示已正确安装:

1
2
3
4
5
Unable to find image 'hello-world:latest' locally
...
Hello from Docker!
This message shows that your installation appears to be working correctly.
...

设置Docker的开机自启

设置为开机自动激活单元并现在立刻启动

1
systemctl enable --now docker

参考资料

[1] docker安装_菜鸟教程
[2] Docker入门学习
[3] CentOS7安装docker以及错误解决
[4] Centos7默认安装的docker版本说明