没有图像的备份 /var/lib/docker?
Backup /var/lib/docker without images?
我想备份我的所有容器和卷,所以最简单的方法是将 /var/lib/docker
复制到另一个位置。
但是这个目录也包含所有图片,我不想包含它们,因为它们都可以很容易地从 public 来源重新下载。
那么如何在复制这个目录的同时排除图片呢?
你必须区分容器备份和卷备份:
备份容器,即它的配置,如标签、环境等
您可以通过将容器作为图像提交来做到这一点:
$ docker container commit <container-name/id> <name-of-new-image>
最好也给它一些元信息:
$ docker container ... -m "very important container config state" -a "John Doe"
正在备份卷
假设感兴趣的体积 <my-vol>
绑定到一个容器 <other-container>
- 它可能是这样创建的:docker container run -v /my-vol other-container ...
因此,首先您还必须使用 --volumes-from
标志将卷绑定到新创建的临时容器。使用 -v
选项,您可以将本地路径(host)挂载到容器中:
$ docker container run -rm --volumes-from <other-container> \
-v <dir/on/host>:<mountpath/in/container> \
<ubuntu/centos/whatever-base-image> tar cvf <mountpath/in/container>/backup.tar /<my-vol>
完成命令后,容器停止,并且由于 -rm 选项,它也将被删除。
所有的步骤是:
- 将卷绑定到临时容器
- 将 host 路径挂载到容器中
- 制作压缩包(或任何类型的备份)
容器中的体积
- 容器在备份命令完成后停止并被删除
- 备份 tarbal 留在容器 host 的挂载目录中。
另请参阅:https://docs.docker.com/storage/volumes/
Shell 命令
.. 另一种 - 不推荐 - 方法是仅使用 os 级命令:
shopt -s extglob
cp -r var/lib/docker/!(image) your/path/backup
为此,您必须停止所有涉及的容器以防止 read/write 问题。
我想备份我的所有容器和卷,所以最简单的方法是将 /var/lib/docker
复制到另一个位置。
但是这个目录也包含所有图片,我不想包含它们,因为它们都可以很容易地从 public 来源重新下载。
那么如何在复制这个目录的同时排除图片呢?
你必须区分容器备份和卷备份:
备份容器,即它的配置,如标签、环境等
您可以通过将容器作为图像提交来做到这一点:
$ docker container commit <container-name/id> <name-of-new-image>
最好也给它一些元信息:
$ docker container ... -m "very important container config state" -a "John Doe"
正在备份卷
假设感兴趣的体积 <my-vol>
绑定到一个容器 <other-container>
- 它可能是这样创建的:docker container run -v /my-vol other-container ...
因此,首先您还必须使用 --volumes-from
标志将卷绑定到新创建的临时容器。使用 -v
选项,您可以将本地路径(host)挂载到容器中:
$ docker container run -rm --volumes-from <other-container> \
-v <dir/on/host>:<mountpath/in/container> \
<ubuntu/centos/whatever-base-image> tar cvf <mountpath/in/container>/backup.tar /<my-vol>
完成命令后,容器停止,并且由于 -rm 选项,它也将被删除。
所有的步骤是:
- 将卷绑定到临时容器
- 将 host 路径挂载到容器中
- 制作压缩包(或任何类型的备份) 容器中的体积
- 容器在备份命令完成后停止并被删除
- 备份 tarbal 留在容器 host 的挂载目录中。
另请参阅:https://docs.docker.com/storage/volumes/
Shell 命令
.. 另一种 - 不推荐 - 方法是仅使用 os 级命令:
shopt -s extglob
cp -r var/lib/docker/!(image) your/path/backup
为此,您必须停止所有涉及的容器以防止 read/write 问题。