Docker 卷备份创建 root:root 拥有的文件

问题描述 投票:0回答:1

我正在尝试通过压缩内容并使用绑定安装将其复制出容器来备份 Docker 卷(我认为)。命令是:

docker run --rm -v ./$BACKUPDIR:/backup -v docker_wordpress_log_wordpress:/var/www/html debian sh -c "/bin/tar -czf /backup/wordpress_$BKTIME.tar.gz /var/www/html"

我的 $BACKUPDIR 中生成的 tar 具有 root:root 所有权,即使 docker 通过我的非 root 用户运行,并且 crontab 也以同一用户身份运行。我无法通过简单地添加

&& chown <user>:<user> <file>
来更改上面的权限,因为用户/组在 debian 环境中不存在。我想我可以使用相同的脚本创建一个与我的系统具有相同名称的用户,但这开始变得相当混乱。

如何创建运行 crontab/docker 命令的用户所拥有的卷的 tar?

原则上,我可以以 root 身份运行 crontab 来更改用户对这些文件的权限,但现在这样做会导致多个步骤在异地传输备份之前可能会失败,更不用说及时链接它们了。

如果不在 docker 镜像中创建临时的用户/组,就不可能更改 docker 容器中的权限,并且无论如何都应该与主机系统无关。

docker cron backup root tar
1个回答
0
投票

这感觉像是一个黑客攻击,在我看来不应该是解决方案,因为 UID:GID 并不是跨系统的原则统一,但它现在可以工作。

docker run --rm -v ./$BACKUPDIR:/backup -v docker_wordpress_log_wordpress:/var/www/html debian sh -c "/bin/tar -czf /backup/wordpress_$BKTIME.tar.gz /var/www/html && chown 1000:1000 /backup/wordpress_$BKTIME.tar.gz"

© www.soinside.com 2019 - 2024. All rights reserved.