如何升级Container-Optimized OS (COS)虚拟机至新版LTS并保留数据?
升级Container-Optimized OS(COS)到更高LTS版本并保留Docker卷数据的最佳方案
针对你的场景(基于cos-stable-81-12871-119-0的VM,Docker卷存储在启动盘,需升级至更高LTS版本且保留数据),推荐以下分步方案:
一、前置准备:备份Docker卷数据
尽管COS升级默认保留/var目录(含Docker卷数据),但跨版本升级前必须备份数据以规避风险:
- 停止所有运行中的容器:
docker stop $(docker ps -aq) - 逐个导出Docker卷数据(以卷名
my-volume为例):docker run --rm -v my-volume:/data -v $(pwd):/backup busybox tar czf /backup/my-volume-backup.tar.gz /data - 将生成的备份文件转移至安全的外部存储(本地机器、云存储桶等)。
二、确认目标LTS版本兼容性
选择COS的LTS分支(如cos-stable-101、cos-stable-115等),需注意:
- 目标版本需支持当前VM的硬件配置;
- 核对Docker版本兼容性:旧版本容器需能在目标版本的Docker环境中正常运行(COS的Docker版本随系统同步升级)。
三、原地升级(优先推荐)
COS支持通过更新引擎直接升级系统,且保留用户数据:
- 查看当前更新渠道:
cat /etc/lsb-release | grep CHROMEOS_RELEASE_TRACK - 修改更新渠道为目标LTS分支(以
cos-stable-115为例):sudo sed -i 's/cos-stable-81/cos-stable-115/' /etc/lsb-release - 触发系统升级:
sudo update_engine_client --update - 等待升级完成后重启VM:
sudo reboot
四、验证升级结果
重启后执行以下操作确认:
- 检查系统版本:
cat /etc/lsb-release - 启动容器并验证卷数据:
docker start <你的容器名> docker exec -it <你的容器名> ls /path/to/volume/data
五、备选方案:创建新VM迁移数据
若原地升级失败(如跨版本跨度太大不支持直接升级),可采用此方案:
- 创建基于目标COS LTS版本的新VM;
- 将之前备份的Docker卷数据上传至新VM;
- 恢复卷数据(以
my-volume为例):docker run --rm -v my-volume:/data -v $(pwd):/backup busybox tar xzf /backup/my-volume-backup.tar.gz -C /data - 重新部署容器,确认数据正常。
注意事项
- 若从
cos-stable-81直接跨大版本升级(如到cos-stable-115)失败,可尝试先升级至中间过渡版本(如cos-stable-96),再升级至目标LTS版本; - 升级过程中请勿中断VM运行,避免系统损坏。
内容的提问来源于stack exchange,提问作者Himel
相关产品推荐
相关产品推荐

