如何备份,重命名和恢复卷与Docker

iezvtpos  于 2023-01-12  发布在  Docker
关注(0)|答案(1)|浏览(149)

在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
carvr3hs

carvr3hs1#

我不确定这是您失败的根本原因-但您是否尝试过在单独的步骤中执行重命名和备份?
1.删除旧卷
docker volume rm <old-volume-name>
1.使用所需名称创建新卷
docker volume create --name <new-volume-name>
1.备份新创建的卷

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>

相关问题