拓冰建站拓冰建站
首页 / 资讯中心 / 正文

青龙面板Docker升级:停、拉、跑3步替换镜像,附回滚方法

青龙面板Docker升级停、拉、跑3步替换镜像附回滚方法【免费下载链接】qinglong支持 Python3、JavaScript、Shell、Typescript 的定时任务管理平台Timed task management platform supporting Python3, JavaScript, Shell, Typescript项目地址: https://gitcode.com/GitHub_Trending/qi/qinglong你是不是也碰到过这种事在面板里点了更新界面提示成功可容器一重启版本又回到了升级前别慌这不是你的错问题出在Docker容器本身。下面按步骤走完你的青龙面板就能升到新版定时任务和环境变量一条不丢。 为什么面板里更新总是白升青龙面板在Docker里运行时只有/ql/data目录通过卷挂载到宿主机配置、脚本、日志都在里面而面板程序本身装在容器内部文件系统里。你在面板里点更新相当于把新代码写进了容器内部容器一重建这些改动就没了。就像往沙子上浇水水渗下去就留不住只有换一整块土——也就是换镜像——才能把新版本留下来。️ 两种升级路径对比方案一句话定位适用场景拉新镜像重建容器 ✅ 推荐官方发布的新版本代码和依赖都打包好了生产环境、日常升级容器内执行ql update后提交新镜像备选把改过的容器存成新镜像临时尝鲜新版本下面只讲推荐方案备选方案在最后简单说。 推荐方案分步替换镜像1. 记录当前镜像并备份数据升级前先确认你现在用的镜像并备份/ql/data这是回滚和救命的底牌。docker inspect -f {{.Config.Image}} qinglong docker run --rm -v $(docker inspect -f {{range .Mounts}}{{if eq .Destination /ql/data}}{{.Source}}{{end}}{{end}} qinglong):/backup -alpine:3.18 tar czf /backup/ql-data-backup.tar.gz -C /ql/data .⚠️ 注意第二条命令会自动找到你挂载/ql/data的宿主机目录并打备份包如果你的数据卷路径和容器名不一样手动改成实际路径例如-v /opt/ql/data:/backup。执行后你会看到镜像名称如whyour/qinglong:latest和一个压缩包路径备份完成。2. 停止并删除旧容器旧容器占用着容器名和端口必须先停掉删掉数据不受影响。docker stop qinglong docker rm qinglong执行后你会看到qinglong两行输出表示容器已停止并移除此时/ql/data里的数据还在宿主机上没有动过。3. 拉取最新镜像从镜像仓库下载新版本网络不通时换debian标签的镜像也一样。docker pull whyour/qinglong:latest docker images | grep qinglong执行后你会看到whyour/qinglong镜像列表里出现新的镜像ID说明新版本已经下到本地。4. 用新镜像重建容器关键一步参数和你原来的一致尤其要挂同一个数据目录青龙的数据都在/ql/data下挂对了任务、脚本、环境变量就都在。docker run -d \ -v /opt/ql/data:/ql/data \ -p 5700:5700 \ --name qinglong \ --hostname qinglong \ --restart unless-stopped \ whyour/qinglong:latest其中/opt/ql/data是你宿主机的实际数据目录示例值换成第一步查到的路径。执行后你会看到一串容器IDdocker ps里能看到 qinglong 状态为 Up。⚠️ 注意如果你用的是whyour/qinglong:debian镜像且以非 root 用户运行要加上--user qinglong参数Alpine 版的 crond 需要 root 权限。5. 确认启动完成新版镜像带健康检查等状态变绿再访问面板。docker logs -f qinglong执行后你会看到滚动日志最后一行出现容器启动成功字样同时docker ps的健康列显示 healthy升级就到位了。 备选容器内更新后提交镜像如果你只是想临时试试新版本也可以docker exec -it qinglong bash进去执行ql update然后把改动提交成新镜像docker commit qinglong qinglong:trial docker run -d -v /opt/ql/data:/ql/data -p 5700:5700 --name qinglong --restart unless-stopped qinglong:trial这条路不如推荐方案的地方在于镜像里的依赖不会跟着新版要求自动安装出了问题只能自己排查官方镜像则连依赖都打包好了。✅ 确认成功与快速回退验证版本两种方式任选curl -s http://localhost:5700/api/health或在面板设置页查看版本信息页面会显示当前版本号。回滚只需两步旧镜像还在本地第一步查到的那个镜像名重新执行第4步的docker run命令把镜像名换回旧版本即可数据目录不用动。升级前建议先用docker tag给旧镜像打个版本号如docker tag whyour/qinglong:latest whyour/qinglong:2.21.0回滚时指向标签更稳妥。⚡ 让下次升级只改一行用 Docker Compose 管理可选。仓库里带了现成的 docker/docker-compose.yml升级时只改image一行services: web: image: whyour/qinglong:latest volumes: - ./data:/ql/data ports: - 5700:5700 restart: unless-stopped改完执行docker compose pull docker compose up -d容器自动重建。写个一键升级脚本可选#!/bin/bash docker stop qinglong docker rm qinglong docker pull whyour/qinglong:latest docker run -d -v /opt/ql/data:/ql/data -p 5700:5700 --name qinglong --restart unless-stopped whyour/qinglong:latest❓高频问题Q升级后定时任务和环境变量会丢吗 A不会只要-v挂的还是原来那个数据目录/ql/data下的任务、脚本、配置原样保留。Q怎么确认已经升到新版 A访问面板看设置页的版本号或请求/api/health接口查看返回信息以实际版本为准。Q升级出问题想退回旧版怎么办 A执行第4步同样的docker run命令镜像名换成升级前docker tag打过的旧版本标签即可。Q启动后报权限错误无法写入 /ql/data A容器内进程对数据卷没有写权限在宿主机执行chown -R $(id -u):$(id -g) /opt/ql/data修正目录归属后重启容器。Q5700 端口被别人占了起不来 Adocker ps -a查看占用进程改用-p 5701:5700换端口浏览器访问新端口即可。核心就三步停、拉、跑数据目录挂对一切就稳。升级完记得手动跑一两个定时任务确认脚本在新环境下正常执行。【免费下载链接】qinglong支持 Python3、JavaScript、Shell、Typescript 的定时任务管理平台Timed task management platform supporting Python3, JavaScript, Shell, Typescript项目地址: https://gitcode.com/GitHub_Trending/qi/qinglong创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门