备份+版本Docker容器通过添加卷和提交

我们即将“docker化”我们不那么大的基础设施。 这里的一个关键问题是整个备份/恢复工作stream程,这对于大多数企业甚至是私人用户来说都是至关重要的。

我知道docker的导出和保存function,它会生成一个正在运行的容器的tarball,这是一个整洁,因为它可以在不closures容器的情况下完成。

假设我们正在运行一个容器X,并且已经装载了一些卷:

-v /home/user/dockerapp-X/data:/var/www/html -v /home/user/dockerapp-X/logs:/var/logs/app-x -v /home/user/dockerapp-X/config:/etc/app-x 

这样做的最大好处是,如果我们更新app-X,我们只需要拉新图片并重新启动容器。

但是:这样,如果我们执行docker-export或save,这些目录将不会被备份。 所以要么我们可以用rsync,backula或其他方法来备份这些目录。 我想这应该是“非标准”的回拨方式。 但是当前版本的图像和数据之间没有保证也没有联系。

在虚拟机上,我们只需制作快照即可连接数据和应用程序。

所以问题是:使用当前的app-x版本创build一个Dockerfile并复制映像中的卷并将整个映像构build/推送到我们的私有仓库是最佳做法吗?

所以它看起来像这样:

 FROM repo/app-x COPY /home/user/dockerapp-X/data:/var/www/html COPY /home/user/dockerapp-X/logs:/var/logs/app-x COPY /home/user/dockerapp-X/config:/etc/app-x 

然后

 docker build -t repo/infra/app-x:backup-v1-22.10.2016 . docker push repo/infra/app-x:backup-v1-22.10.2016 

这意味着在我们的仓库中有一个当前版本的应用程序的快照,图像包含卷的所有当前数据。

所以恢复将是:

 docker run --name=backup-restored repo/infra/app-x:backup-v1-22.10.2016 

而且我们甚至可以在主机上重新安装数据文件夹:

 docker run --name=backup-restored \ -v /home/user/dockerapp-X/data:/var/www/html -v /home/user/dockerapp-X/logs:/var/logs/app-x -v /home/user/dockerapp-X/config:/etc/app-x repo/infra/app-x:backup-v1-22.10.2016 

我的数据和我的应用程序是否有正确的数据和应用程序版本?