【问题标题】:Docker - transfer image of database with its contentDocker - 传输数据库图像及其内容
【发布时间】:2018-12-25 19:42:57
【问题描述】:

我想拉一张yandex/clickhouse-server的图片

然后对数据库做一些事情,比如创建表,用数据填充它等等

然后我想将图像及其所有内容传输到服务器。

我应该怎么做?

【问题讨论】:

  • 将数据存储在图像本身中?你不想那样做。 1)镜像大小会增加,2)每次容器重启都会从镜像中加载相同的快照,完全忘记自上次启动以来发生的更新。但也许这你想要的。 :耸肩:
  • 您绝对不应该将数据库的数据存储在他们的 docker 镜像中。从寄存器中拉取 docker 镜像,启动它,然后用迁移(填充表结构)填充它。

标签: docker clickhouse


【解决方案1】:

移动数据库的正确方法是创建备份或转储,然后将其重新加载到新数据库中。否则,如果您愿意,可以尝试从旧容器构建映像

【讨论】:

    【解决方案2】:

    我的第一个想法是使用 docker commit CONTAINER 创建图像快照,但这不是干净的解决方案。

    正确的方法是创建一些初始化文件并扩展基本图像。 在 docker doc 页面上。

    如何扩展此图像 如果您想在从该镜像派生的镜像中进行额外的初始化,请在 /docker-entrypoint-initdb.d 下添加一个或多个 *.sql、*.sql.gz 或 *.sh 脚本。在入口点调用 initdb 之后,它将运行任何 *.sql 文件,运行任何可执行的 *.sh 脚本,并在该目录中找到任何不可执行的 *.sh 脚本以在启动服务之前进行进一步的初始化。

    例如,要添加其他用户和数据库,请添加以下内容 到 /docker-entrypoint-initdb.d/init-db.sh:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-02-25
      • 1970-01-01
      • 2012-07-10
      • 1970-01-01
      • 1970-01-01
      • 2014-05-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多