一、我找到并使用过的方法
1.对于使用docker命令部署的应用
查看容器名字
docker ps
查看是否有挂载卷,以及容器映射到本地的路径
docker inspect 容器名 --format '{{json .Mounts}}'
1.1 第一种情况:没有挂载
[链接登录后可见]
- 拉取最新镜像
docker pull 镜像名称:标签
一般 xxx:latest
- 停止并删除旧容器
docker stop 容器名
docker rm 容器名
- 删除旧的镜像(可选)
docker rmi xxx:旧标签
如果镜像一直都是名为xxx:latest的话就别这样删,我是搭配docker desktop for Windows使用的,旧的镜像会变成灰色显示未使用,直接点击删除即可
1.2第二种情况:有挂载
数据卷挂载
[链接登录后可见]
绑定挂载
[链接登录后可见]
- 备份(可选)——以veloera为例
tar -czvf veloera-backup-logs.tar.gz -C /mnt/d/Veleora/veloera/logs .
tar -czvf veloera-backup-data.tar.gz -C /mnt/d/Veleora/veloera/data .
——以openwebui为例
docker cp open-webui:/app/backend/data ./open-webui-backup
- 停止并删除旧容器
docker stop 容器名
docker rm 容器名
- 拉取新镜像
docker pull xxx:latest
- 启动新容器并直接挂载旧数据
绑定挂载
docker run -d \
--name <新容器名称> \
-p 3000:8080 \
-v /mnt/d/Veleora/veloera/logs:/app/logs \
-v /mnt/d/Veleora/veloera/data:/data \
<镜像名称>:<版本>
数据卷挂载
docker run -d -p 3000:8080 -v open-webui:/app/backend/data --name open-webui ghcr.io/open-webui/open-webui:main
[链接登录后可见]
绑定挂载和数据卷挂载(不使用-v)在删除旧容器时仍保留
总结
如果采用备份
1.创建新的数据卷
docker volume create open-webui-new
2.备份数据恢复到新数据卷(麻烦)
3.启动新容器
- 直接恢复到宿主机目录
绑定挂载:
解压
tar -xzvf veloera-data-backup.tar.gz -C /path/to/data
tar -xzvf veloera-logs-backup.tar.gz -C /path/to/logs
docker run -d --name 容器名 \
-p 3000:8080 \
-v /path/to/data:/app/data \
-v /path/to/logs:/app/logs \
xxx:latest
数据卷挂载:
创建新容器
恢复备份
docker cp ./open-webui-backup open-webui-new:/app/backend/data
2.使用docker compose部署的应用
2.1到docker-compose所在文件夹下
docker-compose pull
2.2重启容器
docker-compose up -d --remove-orphans
2.3删除旧镜像(可选⚠)
docker image prune
不建议直接用,还是指定某个没用的镜像吧,我用的desktop点一下删除就完了(删错了当我倒霉)
[链接登录后可见]
二、找到但没用过的方法
1.使用Portainer面板
2.使用watchtower
PS:两个我都装了试试,portainer好用点,不过也还没完全摸清楚
PS:没错,新手就是爱记录一下
建议还是最好用docker compose