通过添加卷和提交

时间:2016-11-25 11:09:31

标签: docker backup infrastructure

我们即将#14;码头化"我们不那么大的基础设施。这里的一个关键问题是整个备份/恢复工作流程,我认为这对大多数企业至关重要,甚至对私人用户也是如此。

我知道docker的导出和保存功能会生成一个正在运行的容器的tarball,这很简洁,因为它可以在不关闭容器的情况下完成。

所以,让我们说我们正在运行一个容器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版本制作Dockerfile并复制图像中的卷并将整个图像构建/推送到我们的私人仓库是最佳做法吗?

所以它看起来像这样:

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

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

0 个答案:

没有答案