
loomchild/volume-backup用于备份和恢复Docker卷的工具。更多信息请阅读我的Medium文章。
注意:备份或恢复前请确保没有容器使用该卷,否则可能导致数据损坏。详见其他说明。
注意:使用docker-compose时,请确保备份和恢复卷标签。详见其他说明。
此方法无需挂载第二个备份卷,可将输出重定向到文件、网络等。
语法:
docker run -v [volume-name]:/volume --rm --log-driver none loomchild/volume-backup backup - > [archive-name]
例如:
docker run -v some_volume:/volume --rm --log-driver none loomchild/volume-backup backup - > some_archive.tar.bz2
将名为some_volume的卷归档到some_archive.tar.bz2归档文件。
注意:--log-driver none选项是必要的,以避免将整个备份存储在临时stdout JSON文件中。更多信息参见Docker日志文档和此问题。
警告:Windows下的PowerShell不应使用此方法,否则将生成不可用的备份。
语法:
docker run -v [volume-name]:/volume -v [output-dir]:/backup --rm loomchild/volume-backup backup [archive-name]
例如:
docker run -v some_volume:/volume -v /tmp:/backup --rm loomchild/volume-backup backup some_archive
将名为some_volume的卷归档到/tmp/some_archive.tar.bz2归档文件。
如果目标卷非空,恢复将失败(使用-f标志覆盖)。
此方法无需挂载第二个备份卷。
注意:不要忘记用于交互操作的-i开关。
语法:
cat [archive-name] | docker run -i -v [volume-name]:/volume --rm loomchild/volume-backup restore -
例如:
cat some_archive.tar.bz2 | docker run -i -v some_volume:/volume --rm loomchild/volume-backup restore -
将清理并从some_archive.tar.bz2归档文件恢复名为some_volume的卷。
语法:
docker run -v [volume-name]:/volume -v [output-dir]:/backup --rm loomchild/volume-backup restore [archive-name]
例如:
docker run -v some_volume:/volume -v /tmp:/backup --rm loomchild/volume-backup restore some_archive
将清理并从/tmp/some_archive.tar.bz2归档文件恢复名为some_volume的卷。
使用标准输出的一个很好的例子是直接将卷迁移到新主机。
语法:
docker run -v [volume-name]:/volume --rm --log-driver none loomchild/volume-backup backup - |\ ssh [接收方] docker run -i -v [volume-name]:/volume --rm loomchild/volume-backup restore -
注意:如果主机之间没有流量限制,可以通过关闭压缩来节省CPU时间,如下例所示:
例如:
docker run -v some_volume:/volume --rm --log-driver none loomchild/volume-backup backup -c none - |\ ssh *** docker run -i -v some_volume:/volume --rm loomchild/volume-backup restore -c none -
升级/更新volume-backup
docker pull loomchild/volume-backup
查找所有使用卷的容器(备份前需停止它们)
docker ps -a --filter volume=[volume-name]
排除某些文件并将归档发送到标准输出
docker run -v [volume-name]:/volume --rm --log-driver none loomchild/volume-backup backup -e [排除的通配符] - > [archive-name]
使用不同的压缩算法以获得更好的性能
docker run -v [volume-name]:/volume --rm --log-driver none loomchild/volume-backup backup -c gz - > [archive-name]
使用详细-v标志显示简单进度指示(备份和恢复均适用)
docker run -v [volume-name]:/volume --rm --log-driver none loomchild/volume-backup backup -v - > [archive-name]
使用-x选项传递额外参数给Tar工具
docker run -v [volume-name]:/volume --rm --log-driver none loomchild/volume-backup backup -x --verbose - > [archive-name]
卷标签不会自动备份或恢复,但可能是应用正常工作所必需的(例如使用docker-compose时)。如果需要保留标签,可按如下方式创建标签备份文件:docker inspect [volume-name] -f "{{json .Labels}}" > labels.json。恢复数据时,需要在运行恢复脚本前手动创建带有标签的目标卷:docker volume create --label "label1" --label "label2" [volume-name]。
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务