备份和恢复docker命名的卷



我对数量和所有权有疑问。

作为一个例子,我使用了这个图片:privatebin,但在任何情况下都是一样的。

首先我正在创建卷:

$ docker volume create privatebin-data

从码头检查,我可以看到数据的位置:

$ docker inspect privatebin-data 
[
{
"CreatedAt": "2018-12-04T21:42:46+01:00",
"Driver": "local",
"Labels": {},
"Mountpoint": "/var/lib/docker/volumes/privatebin-data/_data",
"Name": "privatebin-data",
"Options": {},
"Scope": "local"
}
]

按照docker hub的指示,我正在启动图像:

$ docker run -d --restart="always" --read-only -p 8080:80 -v privatebin-data:/srv/data privatebin/nginx-fpm-alpine:1.1.1

然后我访问http://localhost:8080一切都在按预期进行。

现在卷的内容:

$ ls -l /var/lib/docker/volumes/privatebin-data/_data
total 16
drwx------ 3 82 82 4096 Dec  4 21:49 73
-rw-r----- 1 82 82   46 Dec  4 21:49 purge_limiter.php
-rw-r----- 1 82 82  529 Dec  4 21:49 salt.php
-rw-r----- 1 82 82  131 Dec  4 21:49 traffic_limiter.php

我想通过存档来备份目录:

tar -C /var/lib/docker/volumes/privatebin-data -czf privatebin-data-backup.tar.gz _data

我的问题是:我可以放心地假设,如果我重新启动映像,例如在其他服务器上,用户和组所有者仍然是82吗?这是备份和恢复docker卷的正确方式吗?

UID/GID来自您的图像privatebin/nginx-fpm-alpine。因此,只要您在其中以相同的方式/顺序创建用户,并且基本映像中没有任何更改,那么无论您在哪里运行映像,这些ID都将是相同的。

我首选的备份和恢复卷的方法是使用实用工具容器,以防docker的后端发生更改,或者您决定将命名卷移动到另一个位置或外部数据存储。这样做的命令看起来像:

docker run --rm 
-v privatebin-data:/source:ro 
busybox tar -czC /source . >privatebin-data-backup.tar.gz

docker run --rm -i 
-v privatebin-data:/target 
busybox tar -xzC /target <privatebin-data-backup.tar.gz

您可以使用docker卷快照来备份.中的docker命名卷

安装实用程序后,只需输入以下命令

docker-volume-snapshot create privatebin-data privatebin-data-backup.tar

最新更新