centos7强制升级docker

一.安装成功验证

​ 此次在centos7下升级docker版本主要是为解决以下问题:Docker 安装MySQL8镜像出现:The designated data directory /var/lib/mysql/ is unusable.排查很久发现是docker版本的原因。

旧版本:

新版本:

二.删除旧版本

bash 复制代码
#停止服务
sudo systemctl stop docker docker.socket containerd

#卸载 Docker 软件包:卷,镜像等可不卸载,卸载了就没有了,还要重新下载
sudo rm -rf /usr/local/bin/docker*
sudo rm -rf /usr/local/bin/containerd*
sudo rm -rf /usr/local/bin/runc

#验证
which docker
# 检查残留文件 卷,镜像,配置文件不卸载,会有输出
ls /var/lib | grep docker      # 应无输出
ls /etc | grep docker         # 应无输出
ls /usr/local/bin | grep docker  # 应无输出

三.强制安装最新版

2.1 下载最新静态二进制包
bash 复制代码
# 创建目录
mkdir -p ~/docker-latest && cd ~/docker-latest

# 下载 Docker 24.x 静态包(示例)
wget https://download.docker.com/linux/static/stable/x86_64/docker-24.0.7.tgz

# 解压到系统路径
sudo tar xzvf docker-*.tgz --strip-components=1 -C /usr/local/bin
2.2 安装依赖
bash 复制代码
# 下载最新 containerd 和 runc
wget https://github.com/containerd/containerd/releases/download/v1.7.12/containerd-1.7.12-linux-amd64.tar.gz
wget https://github.com/opencontainers/runc/releases/download/v1.1.12/runc.amd64

# 安装
 sudo tar xzvf containerd-*.tar.gz -C /usr/local/bin
 sudo install -m 755 runc.amd64 /usr/local/sbin/runc
2.3 配置 systemd 服务
bash 复制代码
# 注意:需根据新版 Docker 调整配置参数
sudo vim /etc/systemd/system/docker.service
bash 复制代码
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service containerd.service
Wants=network-online.target
Requires=docker.socket containerd.service

[Service]
Type=notify
ExecStart=/usr/local/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=always
StartLimitBurst=3
StartLimitInterval=60s
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TasksMax=infinity
Delegate=yes
KillMode=process

[Install]
WantedBy=multi-user.target
2.4 创建 containerd 服务文件
bash 复制代码
sudo vi /etc/systemd/system/containerd.service
bash 复制代码
[Unit]
Description=containerd container runtime
Documentation=https://containerd.io
After=network.target

[Service]
ExecStartPre=-/sbin/modprobe overlay
ExecStart=/usr/local/bin/containerd
Restart=always
RestartSec=5
Delegate=yes
KillMode=process
OOMScoreAdjust=-999
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity

[Install]
WantedBy=multi-user.target
2.5 检查 Docker 依赖的 socket 文件
bash 复制代码
# 创建 docker.socket 文件(若缺失)
sudo vi /etc/systemd/system/docker.socket

#重载并启动
sudo systemctl daemon-reload
sudo systemctl enable docker.socket
sudo systemctl start docker.socket
bash 复制代码
[Unit]
Description=Docker Socket for the API

[Socket]
ListenStream=/var/run/docker.sock
SocketMode=0660
SocketUser=root
SocketGroup=docker

[Install]
WantedBy=sockets.target
2.6 环境变量配置
bash 复制代码
# 永久生效(写入 ~/.bashrc 或 /etc/profile)
echo 'export PATH=$PATH:/usr/local/bin' >> ~/.bashrc
source ~/.bashrc
2.7 启动并测试
bash 复制代码
# 重载 systemd
sudo systemctl daemon-reload

# 启动 containerd
sudo systemctl start containerd
sudo systemctl enable containerd

# 启动 Docker
sudo systemctl start docker
sudo systemctl enable docker

希望这篇文章对你有所帮助!如果觉得不错,别忘了点赞收藏哦!

相关推荐
erzong231几秒前
Linux操作系统:基于环形队列&信号量实现多生产者多消费者的简易模型
linux·运维·服务器
小羊没烦恼!5 分钟前
TypedSql:在 C# 类型系统上实现一个 SQL 查询引擎
java·linux·运维·服务器·开发语言·数据库·mysql
启博网络9 分钟前
智慧档案库房工业组网:MR-1280 边缘大脑,实现温湿度、漏水、防火防盗设备智能联动教程
运维·网络·物联网·网络协议·网络安全·信息与通信·sdwan
海宇数据11 分钟前
零信任架构实战:基于海宇普通维保查询构建自动化二手车认证展厅车况质检档案网关
运维·人工智能·架构·自动化
众壹新能源科技12 分钟前
储能两充两放日收益增40%,但电池寿命缩短一半,怎么平衡
运维·人工智能·自动化
快乐的韭菜根根16 分钟前
SLURM配置服务器一
运维·服务器
Z21-X25 分钟前
云原生运维学习笔记:揭开虚拟化的硬核面纱,从底层架构到KVM实战
运维·笔记·学习·云原生
星恒随风28 分钟前
Linux线程同步与互斥(二):从日志系统与线程池设计,到线程安全单例、可重入函数和死锁原理
linux·运维·状态模式
mengge.cloud32 分钟前
1022小白入门教程(番外筑基)— nerdctl 容器基本功 + K8s 资源编写
linux·网络·云原生·容器·kubernetes·云计算·k8s
whyutianict_vv43 分钟前
HCIE-Datacom 考纲技术拆解:从 OSPF/BGP 到 VXLAN/Netconf 的知识地图
运维·网络