提示:在Ubuntu 20.04系统上升级Docker版本,Docker的升级通常不会直接影响容器,因为容器数据通常存储在宿主机的/var/lib/docker目录下,升级过程一般不会删除或修改这个目录,不过,为了确保万无一失,请提前备份数据。
1. 备份Docker数据:(虽然升级通常不会删除数据,但备份可以防止意外情况。)
备份/var/lib/docker目录。
sudo tar -zcvf docker-backup.tar.gz /var/lib/docker
作用:防止升级过程中意外数据丢失。
恢复方法(如升级失败):
sudo tar -zxvf docker-backup.tar.gz -C /
2. 更新包索引:确保能获取到最新版本的Docker。
添加Docker官方仓库(如未配置)
sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
3. 升级Docker:使用apt upgrade或者安装指定版本。
sudo apt-get update
#升级前查看当前版本
docker --version
#执行升级(自动处理依赖)
sudo apt-get upgrade docker-ce docker-ce-cli containerd.io
#或指定版本(如5:24.0.5~3.1)
#sudo apt-get install docker-ce=5:24.0.5~3.1 docker-ce-cli=5:24.0.5~3.1 containerd.io
4. 重启Docker服务:升级后可能需要重启Docker服务,这会导致容器短暂停止,但重启后会自动启动。
升级后需重启Docker服务:
sudo systemctl restart docker
影响:容器会短暂停止,但重启后会自动恢复。
验证:
sudo docker ps -a # 检查容器状态是否为"Up"
5. 验证容器状态:确保所有容器在升级后正常运行。
手动测试关键容器:
#进入容器执行命令(例如检查服务状态)
sudo docker exec -it <容器名> /bin/bash
#或直接调用容器API(如Web服务)
curl http://localhost:<端口>
7. 升级后检查项
日志排查:
journalctl -u docker.service -n 50 --no-pager
配置兼容性:
检查/etc/docker/daemon.json是否与新版Docker兼容。
存储驱动(如使用非默认驱动):
确认新版本是否支持(如overlay2仍为默认驱动)。
常见问题处理
升级后容器无法启动:
- 检查日志:docker logs <容器名>。
- 回滚Docker版本(需提前记录旧版本):
sudo apt-get install docker-ce=<旧版本号>
依赖冲突:
使用apt-get install -f修复依赖。