Docker-升级镜像时compose卷重置
Docker-compose volume resetting when upgrading image
我有一个 Grafana 8.0.5 的 docker 图像。我使用 docker volume create grafana-storage
创建了一个卷
我可以停止卷,然后在不丢失数据的情况下将其恢复。
但是,如果我更新我的 docker-compose.yml 以指向最新版本 8.0.6,然后重新 运行 docker-compose up -d
音量会恢复到默认安装,丢失我之前创建的任何仪表板、帐户、数据源等。
据我了解,我不应该丢失任何数据,因为它应该都在卷中。如何在不重置音量的情况下更新图像
docker-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版本:
Docker version 20.10.7, build f0df350
Docker-撰写版本:
docker-compose version 1.29.2, build 5becea4c
docker 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
docker 卷 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"
我有一个 Grafana 8.0.5 的 docker 图像。我使用 docker volume create grafana-storage
我可以停止卷,然后在不丢失数据的情况下将其恢复。
但是,如果我更新我的 docker-compose.yml 以指向最新版本 8.0.6,然后重新 运行 docker-compose up -d
音量会恢复到默认安装,丢失我之前创建的任何仪表板、帐户、数据源等。
据我了解,我不应该丢失任何数据,因为它应该都在卷中。如何在不重置音量的情况下更新图像
docker-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版本:
Docker version 20.10.7, build f0df350
Docker-撰写版本:
docker-compose version 1.29.2, build 5becea4c
docker 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
docker 卷 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"