【问题标题】:How to backup, rename and restore volume with Docker如何使用 Docker 备份、重命名和恢复卷
【发布时间】:2023-01-10 16:35:48
【问题描述】:

在 docker compose 中,我使用 volumes_from 从另一个容器加载数据库容器数据。

  mssql-server-linux:
    image: mssql-server-linux:2017-latest
    depends_on:
      - mssql-server-linux-data
    volumes_from:
      - mssql-server-linux-data

  mssql-server-linux-data:
    image: mssql-server-linux-data-keva:latest
    entrypoint: /bin/sh
    volumes:
      - /var/opt/mssql

结果,数据库容器使用以下卷来存储它的数据

$ docker volume ls
DRIVER    VOLUME NAME
local     e0368e9ae230de6578bb18a3a70823d93ecc4acab7905f96380aff4689024c25

我想用新命名的图像和卷​​备份和恢复数据库更改。我该怎么做呢?

编辑

我试图备份 tar 中的卷,但也没有运气

$ docker run --rm --volumes-from emma_mssql-server-linux_1 -v /c/temp:/backup ubuntu tar cvf /backup/backup.tar /var/opt/mssql
tar: Cannot connect to C: resolve failed

【问题讨论】:

    标签: docker docker-compose docker-volume


    【解决方案1】:

    我不确定这是您失败的根本原因 - 但您是否尝试过在单独的步骤中执行重命名和备份?

    1. 删除旧卷

      docker volume rm <old-volume-name>

    2. 使用您想要的名称创建一个新卷

      docker volume create --name <new-volume-name>

    3. 备份新创建的卷

      docker run --rm --volumes-from <container-name> -v $(pwd):/backup busybox tar cvf /backup/<volume-name>.tar /<volume-path>
      

      如果这能为您解决,请分享。

      请注意:假设该卷在您的系统上是本地的 - 否则,它可能是权限问题,在这种情况下,您可能希望在备份之前创建该卷的本地副本:

      docker cp <container-name>:/<volume-path>/<volume-name>.tar <local-directory>
      

    【讨论】:

      猜你喜欢
      • 2019-05-06
      • 1970-01-01
      • 1970-01-01
      • 2019-06-27
      • 2015-10-21
      • 1970-01-01
      • 1970-01-01
      • 2020-04-08
      • 1970-01-01
      相关资源
      最近更新 更多