什么是Docker?Docker是一个开源项目,它允许在容器内部创建和分发应用程序,容器是可以独立于主机系统轻松复制的标准化环境。

DNF是什么?DNF是软件包管理器。它会在Linux发行版上安装,执行更新并删除软件包。centos 8使用DNF软件包管理器版本v4.x。

CentOS8.4上使用DNF安装Docker服务 CentOS8.4上使用DNF安装Docker服务(1)

本文将详细介绍在CentOS 8.4中使用DNF安装Docker服务。

一、查看当前CentOS 系统版本信息

命令:lsb_release -a

CentOS8.4上使用DNF安装Docker服务 CentOS8.4上使用DNF安装Docker服务(2)

或者命令:cat /etc/RedHat-release (适用于RedHat,CentOS)

CentOS8.4上使用DNF安装Docker服务 CentOS8.4上使用DNF安装Docker服务(3)

二、检查CentOS 8中是否已安装了Podman

CentOS 8中安装Docker出现和Podman冲突,因此先检查CentOS 中是否已经安装了Podman,如图所示。

[root@centos-103 ~]# rpm -q podman

podman-3.0.1-6.module_el8.4.0 781 acf4c33b.x86_64

CentOS8.4上使用DNF安装Docker服务 CentOS8.4上使用DNF安装Docker服务(4)

显示在CentOS 8 操作系统中已经安装Podman。可以删除Podman,执行如下命令:

dnf remove podman

CentOS 7开始,dnf成为了默认的软件包管理器,同时 yum 仍然是可用的。dnf 包管理器克服了yum包管理器的一些瓶颈,提升了用户体验,内存占用,依赖分析,运行速度等方面。dnf 使维护软件包组变得容易,并且能够自动解决依赖性问题。

CentOS8.4上使用DNF安装Docker服务 CentOS8.4上使用DNF安装Docker服务(5)

可以查看dnf 版本:dnf --version

输出结果如下所示,CentOS 8使用dnf软件包管理器版本v4.4.2。

[root@centos-103 ~]# dnf --version

Failed to set locale, defaulting to C.UTF-8

4.4.2

Installed: dnf-0:4.4.2-11.el8.noarch at Thu Sep 30 03:47:37 2021

Built : CentOS Buildsys <bugs@centos.org> at Thu Mar 11 19:39:23 2021

Installed: rpm-0:4.14.3-13.el8.x86_64 at Thu Sep 30 03:46:03 2021

Built : CentOS Buildsys <bugs@centos.org> at Tue Feb 16 07:03:14 2021

列出已安装的软件包:

# dnf list installed

列出所有可安装的软件包:

dnf list available

三、使用DNF安装Docker

使用DNF添加并启用官方Docker CE存储库。在终端窗口中输入以下命令:

dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo

CentOS8.4上使用DNF安装Docker服务 CentOS8.4上使用DNF安装Docker服务(6)

上图显示系统通知已经成功地检索了存储库。

使用如下命令查看DNF相关的存储库:

dnf repolist -v

CentOS8.4上使用DNF安装Docker服务 CentOS8.4上使用DNF安装Docker服务(7)

该存储库包含docker-ce软件包的多个版本,要显示所有版本,我们可以运行:

dnf list docker-ce --showduplicates | sort -r

CentOS8.4上使用DNF安装Docker服务 CentOS8.4上使用DNF安装Docker服务(8)

不幸的是,CentOS 8 不支持特定版本的container.id包。这意味着只有一些版本的docker-ce可用于安装。

跳过具有损坏依赖性的程序包,一个有效的解决方案是使您的CentOS 8系统使用以下--nobest命令安装最符合条件的版本。

使用如下命令行进行安装docker-ce:

dnf install docker-ce --nobest

安装的时候,出现了如下错误:problem with installed package buildah。

[root@centos-103 ~]# dnf install docker-ce --nobest

Failed to set locale, defaulting to C.UTF-8

Last metadata expiration check: 0:14:33 ago on Sun Oct 3 01:23:07 2021.

Error:

Problem: problem with installed package buildah-1.19.7-1.module_el8.4.0 781 acf4c33b.x86_64

- package buildah-1.19.7-1.module_el8.4.0 781 acf4c33b.x86_64 requires runc >= 1.0.0-26, but none of the providers can be installed

- package buildah-1.21.4-2.module_el8.4.0 942 d25aada8.x86_64 requires runc >= 1.0.0-26, but none of the providers can be installed

- package buildah-1.21.4-1.module_el8.4.0 886 c9a8d9ad.x86_64 requires runc >= 1.0.0-26, but none of the providers can be installed

- package buildah-1.19.7-2.module_el8.4.0 830 8027e1c4.x86_64 requires runc >= 1.0.0-26, but none of the providers can be installed

根据输出提示,添加--alowerasing 参数,如下所示:

dnf install docker-ce --nobest --allowerasing

如图所示,安装完成(最后显示Complete!)。

CentOS8.4上使用DNF安装Docker服务 CentOS8.4上使用DNF安装Docker服务(9)

四、启动Dock服务

安装Docker之后, 使用以下systemctl命令启动并启用其服务。

systemctl start docker

systemctl enable docker

CentOS8.4上使用DNF安装Docker服务 CentOS8.4上使用DNF安装Docker服务(10)

输入以下命令查看docker版本号:

[root@centos-103 ~]# docker --version

Docker version 20.10.8, build 3967b7d

五、验证并测试Docker CE服务

执行如下命令,拉取并启动hello-world容器:

docker run hello-world

CentOS8.4上使用DNF安装Docker服务 CentOS8.4上使用DNF安装Docker服务(11)

在上面的输出中看到的信息,可确认Docker引擎已在CentOS 8 服务器上正确安装。

查看docker服务运行状态:

systemctl status docker

CentOS8.4上使用DNF安装Docker服务 CentOS8.4上使用DNF安装Docker服务(12)

另外,可以运行如下docker命令:

docker images 查看docker镜像;

docker ps 查看正在运行的容器;

CentOS8.4上使用DNF安装Docker服务 CentOS8.4上使用DNF安装Docker服务(13)

另外,我们需要在CentOS 8 上禁用防火墙(firewalld),让docker容器中的DNS解析服务正常工作。执行如下命令即可:

systemctl disable firewalld

systemctl stop firewalld

systemctl status firewalld

如下输出表示firewalld 服务已经被禁用了。

CentOS8.4上使用DNF安装Docker服务 CentOS8.4上使用DNF安装Docker服务(14)

,