运行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
…)