由于原系统yum源带的docker版本太低,使用阿里的docker-ce.repo时,会默认定向为centos 10版本,导致安装时可能有如下错误:

Error: 
 Problem 1: cannot install the best candidate for the job
  - nothing provides libc.so.6(GLIBC_2.34)(64bit) needed by docker-ce-3:28.1.1-1.el10.x86_64

解决方法:

方法一:升级GLIBC

直接升级GLIBC的版本(不推荐,升级GLIBC或整个系统可能会影响到其他依赖该库的应用程序)

检查系统的GLIBC的版本

[root@kylin01 ~]# ldd --version
ldd (GNU libc) 2.28
# 或者
[root@kylin01 ~]# strings /lib64/libc.so.6 |grep GLIBC
GLIBC_2.2.5
GLIBC_2.2.6
GLIBC_2.3
GLIBC_2.3.2
GLIBC_2.3.3
GLIBC_2.3.4
GLIBC_2.4
GLIBC_2.5
GLIBC_2.6
GLIBC_2.7
GLIBC_2.8
GLIBC_2.9
GLIBC_2.10
GLIBC_2.11
GLIBC_2.12
GLIBC_2.13
GLIBC_2.14
GLIBC_2.15
GLIBC_2.16
GLIBC_2.17
GLIBC_2.18
GLIBC_2.22
GLIBC_2.23
GLIBC_2.24
GLIBC_2.25
GLIBC_2.26
GLIBC_2.27
GLIBC_2.28
GLIBC_PRIVATE

升级GLIBC版本

使用包管理器升级

# yum 或者dnf升级
sudo yum update
sudo yum install glibc

sudo dnf update
sudo dnf install glibc

# 使用apt升级
sudo apt-get update
sudo apt-get install libc6

编译安装GLIBC

由于包管理器中没有新版本的glibc,我们直接选择源码编译安装

[root@kylin01 ~]# sudo dnf install glibc
Last metadata expiration check: 0:42:57 ago on 2025年05月20日 星期二 16时28分42秒.
Package glibc-2.28-98.p07.ky10.x86_64 is already installed.
Dependencies resolved.
Nothing to do.
Complete!

可以在glibc-ftp中选择对应版本下载,也可以去Glibc官网寻求其他下载途径

# 解压
tar -zxf glibc-2.34.tar.xz
# 编译
cd glibc-2.34
mkdir build
cd build
# 创建编译文件
# configure配置了优化级别 警告级别 安装位置
../configure CFLAGS="-w -O3" CXXFLAGS="-w -O3" --prefix=/usr/local/glibc-2.34
# 编译安装
make && make install
# 此glibc可以通过LD_LIBRARY_PATH来指定使用

方法二:换源

麒麟服务器操作系统V10中,$releasever默认10换成7

# 添加阿里云centos 7源
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
# 添加阿里云docker源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 定义yum变量,原因是在麒麟服务器操作系统V10中,$releasever默认是10,而我们需要使用centos7的镜像源,如果不修正,yum会报40X错误。
echo "7" > /etc/yum/vars/centos_version
# 修改repo版本
sed -i 's/$releasever/$centos_version/g' /etc/yum.repos.d/docker-ce.repo
sed -i 's/$releasever/$centos_version/g' /etc/yum.repos.d/CentOS-Base.repo
# 刷新缓存
yum makecache

然后执行安装即可:

# 直接安装最新版本
yum -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# 或指定版本,先查看可用版本
yum list docker-ce --showduplicates | sort -r
# 再安装指定版本(注意不要带前面的3:)
yum -y install docker-ce-26.1.4-1.el7 docker-ce-cli-26.1.4-1.el7 containerd.io docker-buildx-plugin docker-compose-plugin

安装时可能会出现安装包冲突,containerd与系统自带的docker-runc存在版本冲突

[root@kylin01 ~]# sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Last metadata expiration check: 0:00:24 ago on 2025年05月20日 星期二 17时37分11秒.
Error: 
 Problem: problem with installed package docker-runc-1.0.0.rc3-223.ky10.x86_64
  - package containerd.io-1.6.33-3.1.el7.x86_64 conflicts with runc provided by docker-runc-1.0.0.rc3-223.ky10.x86_64

解决方法:

# 卸载系统自带的docker-runc
[root@kylin01 ~]# rpm -qa |grep runc
docker-runc-1.0.0.rc3-223.ky10.x86_64

[root@kylin01 ~]# yum remove docker-runc
Dependencies resolved.
==============================================================================================================================================================================
 Package                                    Architecture                    Version                                          Repository                                  Size
==============================================================================================================================================================================
Removing:
 docker-runc                                x86_64                          1.0.0.rc3-223.ky10                               @ks10-adv-updates                          8.2 M
Removing dependent packages:
 podman                                     x86_64                          1:0.10.1-10.ky10                                 @ks10-adv-updates                           25 M
Removing unused dependencies:
 conmon                                     x86_64                          2:2.0.2-2.ky10                                   @anaconda                                  155 k
 container-selinux                          noarch                          2:2.138.0-1.p01.ky10                             @anaconda                                   45 k
 containers-common                          x86_64                          1:1.1.0-9.p01.ky10                               @anaconda                                   15 k

Transaction Summary
==============================================================================================================================================================================
Remove  5 Packages


yum clean all
yum makecache