运行docker集装箱的tarball是否安全?

我和docker.io玩了两天。 太棒了! 一些简单的容器已经在生产服务器上运行

目前我坚持如何做容器备份。 假设我已经在高负载(每秒10k个请求)下运行带有supervisor + apache + memcached + mysql的复杂docker容器。 是否安全?

docker export> backup.tar

或者我必须停止容器内的所有进程,只有在出口容器到tar文件后?

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

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

Apache和Memcached不会是一个问题,因为他们不需要存储来维护任何一种状态。

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

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

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

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