将所有数据保存 docker Mongo 容器并导出

Save docker Mongo container with all the data and export it

我创建了一个 docker 图像,容器为 Mongo。

我的数据库充满了数据,最多 35 GB。

我希望能够导出它(例如 tar 文件),其中包含所有数据,并导入到另一台 docker-机器而不丢失任何数据。

使用docker保存时,我找不到任何关于保存数据状态的信息...

保存功能齐全的容器并将其导入另一台 docker 机器的最佳方法是什么?

要查看 docker 保存的状态,您需要使用 --output ex:。 docker 保存 --output imagename > imagename.tar。你不能保存容器只能保存图像。为了保存容器数据,您需要从提交的容器中提交 n 启动

导出容器:

docker export --output="container.tar" <container-name>

这会将您的容器导出到 container.tar,可以使用以下命令将其导回另一台机器:

docker import container.tar <container-name>.

不过,如docker export docs所述:

The docker export command does not export the contents of volumes associated with the container. If a volume is mounted on top of an existing directory in the container, docker export will export the contents of the underlying directory, not the contents of the volume.

现在 mongo 将 /data/db/data/configdb 公开为卷。因此它们不会与 tar 球一起导出。因此数据和配置不会在 tar :(

VOLUME /data/db /data/configdb

要获取此数据,您需要执行以下操作之一:

  1. How to port data-only volumes from one host to another?

  2. 手动复制容器内的这些文件夹,并在从 tar.

    导入时将它们复制回新容器

    docker cp :/data/db ./数据 docker cp :/data/configdb ./config

将这些文件夹复制到新主机,然后导入tar红色容器,最后将这些文件夹复制回容器

docker cp data/* <new-container>:/data/db
docker cp config/* <new-container>:/data/configdb