导出运行docker容器的tarball是否安全?

时间:2014-06-05 22:20:07

标签: docker

我用docker.io玩了几天。太棒了! 一些简单的容器已在生产服务器中运行。

目前我陷入了如何进行容器备份的困境。 假设我在高负载(每秒10k请求)下运行了复杂的docker容器和supervisor + apache + memcached + mysql。 制作是否安全

  

docker export> backup.tar

或者我必须停止容器内的所有进程,并且仅在该导出容器之后停止到tar文件?

1 个答案:

答案 0 :(得分:2)

如果“安全”是指“一致”,则导出的存档将文件系统一致

docker export命令与任何其他经典备份方法一样,无法解决应用程序一致性的问题。

Apache和Memcached不会成为问题,因为它们不需要存储来维护任何类型的状态。

但是,如果您从docker export生成的图像中运行容器,则以这种方式备份Mysql可能会使您的数据库在恢复模式下重新启动。

特别是,如果在必须执行写入活动(插入,更新......)时进行备份, 与任何其他文件系统级备份一样,您将丢失一些事务。

如果您需要Mysql备份数据文件100%一致并反映数据的确切状态,您必须:

  • 在运行docker export
  • 之前停止Mysql
  • 停止整个容器
  • 在运行导出命令之前,先将某些内容连接到Mysql,然后运行flush tables with read lock;。导出完成后,您必须运行unlock tables;备份数据文件(通常位于/ var / lib / mysql下)将保持一致。
  • 使用经典的Mysql备份工具(mysqldump ...)