docker - 升级镜像时 Docker-compose 卷重置
问题描述
我有一个 Grafana 8.0.5 的 docker 镜像。我使用创建了一个卷docker volume create grafana-storage
我可以停止音量,并在不丢失数据的情况下将其恢复。
但是,如果我将 docker-compose.yml 更新为指向最新版本 8.0.6,然后重新运行docker-compose up -d
该卷,则会恢复到默认安装,从而丢失我之前创建的任何仪表板、帐户、数据源等。
据我了解,我不应该丢失任何数据,因为它应该都在卷中。如何在不重置音量的情况下更新图像
码头工人-compose.yml:
version: "3.3"
volumes:
grafana-storage:
external: true
services:
grafana:
image: "grafana/grafana:8.0.6"
container_name: "grafana"
volumes:
- "grafana-storage:/usr/src/grafana"
码头工人版本:
Docker version 20.10.7, build f0df350
Docker-Compose 版本:
docker-compose version 1.29.2, build 5becea4c
码头工人ps:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3fb6da4a8de9 grafana/grafana:8.0.6 "/run.sh" 17 minutes ago Up 17 minutes 3000/tcp grafana
046892ab0a7b traefik:v2.0 "/entrypoint.sh --pr…" 46 minutes ago Up 23 minutes 80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp traefik
码头工人卷 ls:
DRIVER VOLUME NAME
local grafana-storage
解决方案
数据不是存储在,/usr/src/grafana
而是存储在/var/lib/grafana
. 结果,您的卷定义docker-compose.yml
是错误的,每次重新创建容器时,数据都会丢失。
更改路径/var/lib/grafana
,它应该可以工作:
services:
grafana:
[...]
volumes:
- "grafana-storage:/var/lib/grafana"
推荐阅读
- laravel - 如何解决 Laravel 中的以下错误以及如何知道 SessionHandlerInterface 的文件路径?
- javascript - 在 jQuery 中,使用 e.preventDefault() 不会将复选框状态显示为已选中
- ionic-framework - 无法在 Ionic 3 中关闭浏览器
- swift - 如何快速将视频数据保存到文档目录?
- ios - 过滤嵌套数组和字典
- c - 正在跳过一个特定的变量引用
- android - 在谷歌地图上查看位置发送纬度和经度
- python - Keras - UpSampling2D 层似乎返回 2D 张量而不是 4D
- android - 导航视图在 Android 中始终可见
- mongodb - Netlify 在连接到 Atlas MongoDB 时返回 404