使用预先存在的数据创建 Docker 个卷
Create Docker volume with preexisting data in it
我有一个 MySQL 图像,我从中启动了一个容器。
我设置了 dbs ,导入 sql-dump 文件并在每次创建容器时创建用户。
当我在容器上工作时,我创建了存储在 MySQL.
中的各种数据
我想将这些额外数据保存在数据卷容器 [DVC] 中,这样我就可以将 DVC 交给同事,然后从我停止的地方继续。
问题是他还将启动一个 MySQL 容器,并且将从头开始重复初始过程。
正如我所读,如果我从 DVC 安装 [--volumes-from
] 卷 [/etc/mysql
和 /var/lib/mysql
],已经存在的数据将被覆盖并且不会被覆盖可读。
是否可以使用目录中已有数据的卷?
简短的回答是否定的,但那是因为你的容器走错了路。
这就是为什么您的图像不应该包含静态数据的原因。将静态事物保存在图像中,将动态事物保存在数据容器中。 (还有一个启动脚本来动态评估任何需要它的东西)
您可以一次性使用 docker cp
将文件提取到数据容器中 - 或者直接将本地文件系统挂载到新的挂载点,然后使用 tar
/ rsync
与 docker exec
在重新安装之前 - 但实际上我建议重建您的图像以始终使用数据容器来存储数据。
我有一个 MySQL 图像,我从中启动了一个容器。 我设置了 dbs ,导入 sql-dump 文件并在每次创建容器时创建用户。
当我在容器上工作时,我创建了存储在 MySQL.
中的各种数据我想将这些额外数据保存在数据卷容器 [DVC] 中,这样我就可以将 DVC 交给同事,然后从我停止的地方继续。
问题是他还将启动一个 MySQL 容器,并且将从头开始重复初始过程。
正如我所读,如果我从 DVC 安装 [--volumes-from
] 卷 [/etc/mysql
和 /var/lib/mysql
],已经存在的数据将被覆盖并且不会被覆盖可读。
是否可以使用目录中已有数据的卷?
简短的回答是否定的,但那是因为你的容器走错了路。
这就是为什么您的图像不应该包含静态数据的原因。将静态事物保存在图像中,将动态事物保存在数据容器中。 (还有一个启动脚本来动态评估任何需要它的东西)
您可以一次性使用 docker cp
将文件提取到数据容器中 - 或者直接将本地文件系统挂载到新的挂载点,然后使用 tar
/ rsync
与 docker exec
在重新安装之前 - 但实际上我建议重建您的图像以始终使用数据容器来存储数据。