备份和恢复 docker 命名卷
Backup and restore docker named volume
我对数量和所有权有疑问。
作为示例,我使用了这张图片:privatebin,但这对任何情况都是一样的。
首先我正在创建卷:
$ docker volume create privatebin-data
从docker检查,我可以看到数据所在的位置:
$ 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 中心的说明,我开始制作图片:
$ 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。因此,只要您在相同的 way/order 中创建用户,并且您的基本图像没有任何变化,那么无论您在哪里 运行 图像,这些 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
我对数量和所有权有疑问。
作为示例,我使用了这张图片:privatebin,但这对任何情况都是一样的。
首先我正在创建卷:
$ docker volume create privatebin-data
从docker检查,我可以看到数据所在的位置:
$ 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 中心的说明,我开始制作图片:
$ 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。因此,只要您在相同的 way/order 中创建用户,并且您的基本图像没有任何变化,那么无论您在哪里 运行 图像,这些 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