CentOS上安装Docker

文章目录

  • 前期准备
    • 系统要求
    • 卸载旧版本的docker
  • 安装方法
    • 使用仓库安装
      • 设置仓库
      • 安装Docker引擎
      • 更新Docker引擎
    • 从软件包安装
      • 安装Docker引擎
      • 更新Docker引擎
    • 使用便捷脚本安装
  • Docker启动和停止
    • 启动和验证
      • 启动Docker
      • 验证Docker Engine是否正确安装
    • 停止
  • 卸载Docker引擎

前期准备

系统要求

  • CentOS版本:CentOS 7、CentOS Stream 8或CentOS Stream 9,在这里我们用的是CentOS Stream 9

  • centos-extras仓库必须是激活的。默认情况下,该仓库是激活的,可验证如下:

    使用命令vim /etc/yum.repos.d/centos-addons.repo查看yum仓库的配置文件,查看[extras-common]仓库下面对应的enabled的值,如果是1,则该仓库是激活状态,如果是0,则该仓库是非激活状态,需要将0改为1,设置为激活状态,如下图所示:

    CentOS上安装Docker_第1张图片

  • 推荐使用overlay2存储驱动,大部分的Linux系统都支持

卸载旧版本的docker

虽然我们目前用的虚拟机操作系统CentOS Stream 9没有安装过Docker,但是为了完整性,也有可能有些人是安装过旧版本的Docker,所以还是有必要加上这块内容。早期版本的Docker被称为dockerdocker-engine,如果之前安装过,执行下面的命令将它们以及相关的依赖项卸载掉:

sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

CentOS上安装Docker_第2张图片

安装方法

根据不同的需求,安装Docker引擎有几种不同的方式:

  • 比较推荐的方法是设置Docker的仓库并从中获取安装包并安装,这是比较简单的,也便于后续的升级。

  • 通过下载RPM包手动安装,并完全手动管理升级。这对于在无法联网的环境中安装Docker等情况非常有用。

  • 在测试和开发环境,可以通过官方提供的安装脚本安装Docker

使用仓库安装

当你在新的主机上第一次安装Docker引擎之前,需要先设置好Docker仓库,之后就可以从这个仓库安装和升级Docker。

设置仓库

  1. 安装yum-utils包,它提供了yum-config-manager的功能,可以管理yum的配置

    sudo yum install -y yum-utils
    

    CentOS上安装Docker_第3张图片

  2. 添加Docker仓库

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

    CentOS上安装Docker_第4张图片

    可以看到yum仓库目录下多了一个docker仓库的配置文件

安装Docker引擎

可以选择安装最新版本或指定版本的Dokcer:

  • 安装最新版本的Docker Engine、containerd(容器服务)、Docker Compose

    sudo yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin
    

    直接执行上述命令可能会出现错误,该错误指出我们要安装的包跟系统中已经安装的包buildah有冲突,如下所示:

    CentOS上安装Docker_第5张图片

    根据提示,在命令中添加--allowerasing参数,该参数指允许擦除已安装的软件包以解决依赖关系和包冲突问题:

    sudo yum install --allowerasing docker-ce docker-ce-cli containerd.io docker-compose-plugin
    

    CentOS上安装Docker_第6张图片

    接下来会提示是否接受GPG密钥,需要验证其指纹是否为060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35,如果是就可以。这里一般也不会有说明问题,直接输入y继续安装就可以

    CentOS上安装Docker_第7张图片

    安装成功

    CentOS上安装Docker_第8张图片

  • 安装指定版本的Docker

    1. 列出仓库中可用的Docker版本

      yum list docker-ce --showduplicates
      

      CentOS上安装Docker_第9张图片

    2. 安装指定版本

      通过完全限定包名(包名docker-ce加上版本号)可以安装指定版本的Docker,包名和版本号之间用-连接,版本号为上图红色框中的字符串,例如:docker-ce-20.10.17。安装命令如下:

      sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io docker-compose-plugin
      

更新Docker引擎

更新Docker Engine时,只需按照上面的安装说明,选择想要的版本进行安装就可以了。

从软件包安装

如果你无法使用Docker的存储库来安装Docker,你可以根据你的CentOS系统的发行版下载对应的.rpm文件并手动安装。以后每次需要升级Docker引擎时,都需要下载新文件进行安装升级。

安装Docker引擎

  1. 访问https://download.docker.com/linux/centos/,选择CentOS的版本(我这里是9),然后进入到x86_64/stable/Packages/目录下,下载你想要安装的Docker版本对应的.rpm文件。

    CentOS上安装Docker_第10张图片

  2. 安装Docker Engine

    sudo yum install /path/to/package.rpm
    

更新Docker引擎

更新Docker Engine时,需要下载新版本的软件包文件,将yum install替换为yum upgrade并使用新的软件包文件,其他步骤跟上面的一样

sudo yum upgrade /path/to/new_package.rpm

使用便捷脚本安装

Docker在get.docker.com提供了一个方便的脚本,用于快速、非交互式地将Docker安装到开发环境,但是不建议在生产环境中使用这个脚本安装。

你可以使用DRY_RUN=1选项运行这个脚本,这样可以在真正运行之前看看这个脚本在安装过程中会执行哪些步骤:

curl -fsSL https://get.docker.com -o get-docker.sh
DRY_RUN=1 sh ./get-docker.sh

CentOS上安装Docker_第11张图片

因为我们已经安装了Docker,所以输出中会有相应的提示。根据这个提示信息,我们了解到,如果系统中已经安装了Docker,那么使用这个脚本安装或更新Docker会导致一些问题,除非系统中的Docker也是使用这个脚本安装的。也就是说如果当前系统已经安装了Docker并且是用这个脚本安装的,那么可以再次使用这个脚本更新,否则可能会出现无法预料的问题。

下面的命令从get.docker.com下载脚本并运行这个脚本,安装最新稳定版的Docker:

curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

Docker启动和停止

启动和验证

启动Docker

sudo systemctl start docker

CentOS上安装Docker_第12张图片

可以看到Docker服务已经启动运行了。

验证Docker Engine是否正确安装

通过运行hello-world镜像验证Docker Engine是否正确安装:

sudo docker run hello-world

CentOS上安装Docker_第13张图片

输出上面的信息,说明我们正确安装了Docker,并且可以正常地运行和工作了。

停止

我们先用下面的命令尝试停止Docker看看:

sudo systemctl stop docker

CentOS上安装Docker_第14张图片

可以看到输出一条警告信息:

Warning: Stopping docker.service, but it can still be activated by:
  docker.socket

意思是说docker.service已经停止了,但是它仍然可以通过docker.socket被激活。查看docker的状态,确实是属于非活跃的状态。另外注意到下面有绿色圆点的那一行TriggeredBy: ● docker.socket,表示通过docker.socket触发,跟上面的警告信息其实是同一个意思。而docker.socket是用于和docker client进行通信的文件,所以推测当docker client重新发起请求,也就是我们再执行docker命令时,docker服务又会被激活,我们看看是不是这么回事。

先执行一个docker命令:

# 查看本机拉取的镜像,可以看到我们之前拉取过的hello-world的镜像
sudo docker images

在这里插入图片描述

再查看docker的状态:

CentOS上安装Docker_第15张图片

可以看到docker服务又变成活跃状态了,说明当客户端有请求时会连接docker.socket,这个时候docker就会被docker.socket触发激活来响应客户端的请求。

那么如果要完全停止docker,不想它被重新激活应该怎么做,其实只要把docker.servicedocker.socket都停掉就可以了:

sudo systemctl stop docker.service docker.socket

CentOS上安装Docker_第16张图片

从上图可以看到docker状态为非活跃状态,docker.socket前面的圆点也不是绿色的了,说明它也被停止了,执行命令sudo docker images后输出的信息也表明,docker已经停止运行无法连接了。

卸载Docker引擎

  1. 卸载Docker Engine、CLI、Containerd和Docker Compose软件包:

    sudo yum remove docker-ce docker-ce-cli containerd.io docker-compose-plugin
    
  2. 在主机上的镜像、容器、卷和自定义的配置文件等不会自动删除,执行下面的命令删除所有的镜像、容器和卷,任何编辑过的配置文件也必须手动删除:

    sudo rm -rf /var/lib/docker
    sudo rm -rf /var/lib/containerd
    

备注:本文主要参考官方的docker安装文档

你可能感兴趣的:(云原生,#,Docker,云原生,docker,容器,devops,linux)