gpt4 book ai didi

mysql - 如何导出/保存整个 Docker 容器/镜像

转载 作者:行者123 更新时间:2023-11-29 11:11:31 25 4
gpt4 key购买 nike

我在我的系统上安装了一个 MySQL Docker 镜像,配置并启动了一个容器,并将一个 2+ GB(bz2 压缩大小)的数据库导入其中。我想打包整个容器并将其转移到另一个系统上。

如果我停止正在运行的容器并执行导出,它只会生成一个 118MB 的 tar.bz 文件。

如果我将容器提交到镜像中并保存它,也只会生成一个 118MB 的 tar.bz 文件。

如何导出/保存整个容器(包括 MySQL 数据)? MySQL镜像大小为383.4MB,我修改后的镜像也是一样。

<小时/>

我发现了一些踪迹:How can I backup a Docker-container with its data-volumes?

<小时/>

补充:目前我正在使用 Ubuntu Linux 版本。

最佳答案

  1. 查找与您的容器匹配的数据存储位置(作为 sudo 用户,您可以访问/var/lib/docker/volumes/{container_id}、/var/lib/docker/vfs/dir/{容器_id})

  2. 将数据与容器一起移动到您要运行的位置。

  3. 启动容器时使用卷映射,以便您可以更好地控制它。

以下知识可能对您有所帮助:

Docker 卷允许将数据存储在启动卷外部(但在根文件系统内)的容器中

通过提供传递给“-v”开关参数的共享名(例如,/dockerdata),可以使用一个或多个卷创建容器。这会在 Docker 配置文件夹 (/var/lib/docker) 中创建一个表示卷内容的实体。

卷上的配置数据存储在 /var/lib/docker/volumes 文件夹中,每个子目录代表基于 UUID 的卷名称。数据本身存储在 /var/lib/docker/vfs/dir 文件夹中(同样基于 UUID 名称)。

任何卷中的数据都可以由主机操作系统自由浏览和编辑,并适用标准 Unix 权限

使用卷有优点也有缺点。由于数据存储在标准文件系统中,因此可以通过操作系统进行备份、复制或移入移出。

这里的缺点是卷名称采用 UUID 格式,这使得与容器名称关联起来很困难。 Docker 通过提供“docker cp”命令使事情变得更容易,该命令允许通过指定容器名称将文件和文件夹从主机目录复制到容器目录路径。

Docker 卷还可以与主机目录关联。这再次在“-v”开关上指定,使用用冒号分隔主机和容器路径的格式,如下所示:“-v/host:/container”。此方法允许容器访问主机上的持久数据。

因此,可以通过使用卷选项访问在外部存储上创建的主机共享来提供对 NFS 共享或 LUN 上的外部共享存储的访问。该方法还可用于备份容器访问的数据。

关于mysql - 如何导出/保存整个 Docker 容器/镜像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40477389/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com