【问题标题】:Is it safe to export tarball of running docker container?导出正在运行的 docker 容器的 tarball 是否安全?
【发布时间】:2014-06-08 17:30:01
【问题描述】:

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

目前我坚持如何进行容器备份。 假设我在高负载(每秒 10k 请求)下运行了带有 supervisor+apache+memcached+mysql 的复杂 docker 容器。 制作安全吗

docker 导出 > 备份.tar

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

【问题讨论】:

标签: docker


【解决方案1】:

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

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

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

但是如果你从docker export生成的镜像运行容器,那么以这种方式备份Mysql可能会让你的数据库在恢复模式下重启。

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-14
    • 1970-01-01
    • 1970-01-01
    • 2017-09-29
    • 2020-09-23
    • 1970-01-01
    • 2018-04-13
    • 2022-10-27
    相关资源
    最近更新 更多