【问题标题】:Clone Docker containers with data to another Host将带有数据的 Docker 容器克隆到另一个主机
【发布时间】:2018-06-24 19:09:32
【问题描述】:

我有两个正在运行的 docker 容器。 一个容器有 MySQL 和数据,另一个容器有 Tomcat 中的 Java Web 应用程序。

如何将 MySQL 容器克隆到另一个带有数据的 Docker 主机?

尝试了保存/加载方法。但没有成功,因为没有数据

但 Java Web 应用程序容器正在工作

【问题讨论】:

标签: docker containers clone


【解决方案1】:

docker 保存容器的方式是使用docker commit。然而:

提交操作将不包括容器内安装的卷中包含的任何数据。

因此,保存在卷中的数据不会成为提交容器的一部分。 MySQL docker 镜像就是这种情况,它将数据保存在/var/lib/mysql 下并将其声明为 docker 卷。

有一个两步解决方案:

  1. 使用docker commit 将容器提交到新映像中,并将此映像传输到另一台机器。

  2. 使用docker cp <mysql-container>:/var/lib/mysql ./mysql-data从旧容器中复制数据文件夹并将mysql-data文件夹转移到新机器上。启动新容器时 在新主机上,使用docker run -v ./mysql-data:/var/lib/mysql ... 运行它。这将从旧容器中挂载数据文件夹,您应该会得到一个包含数据的相同容器。

【讨论】:

  • 你能分享完整的命令来在新主机上启动新容器吗
  • @Mahadevan 启动mysql的命令在hub.docker.com/_/mysql。对于您的问题,将-v ./mysql-data:/var/lib/mysql 添加到运行命令是相关部分。我不知道您传递给容器的具体配置是什么。但是docker run --name mysql -v ./mysql-data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql会给出一个带有数据的mysql容器。
【解决方案2】:

您是否尝试过创建数据卷容器?将卷目录挂载到mysql容器

  docker create -v /var/lib/mysql --name mysqldata mysql

更多详情请参考此链接 https://www.melvinvivas.com/using-docker-data-volume-with-a-mysql-container/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-29
    • 2018-12-17
    • 1970-01-01
    相关资源
    最近更新 更多