将 docker 数据(镜像和容器)移动到具有不同 FS 的单独驱动器

将 docker 数据(镜像和容器)移动到具有不同 FS 的单独驱动器

我计划将 docker 数据(图像和容器)移动到单独的驱动器,因为它们需要大量空间。

据我所知,我可以移动/var/lib/docker到单独的驱动器并创建到它的软链接。但我读到过 BTRFS 是 docker 的最佳文件系统选项。

但我怀疑将外部驱动器格式化为 BTRFS 并将现有文件夹移动到其中是不够的。据我所知,此文件夹的内容取决于使用的文件系统。

如何正确移动(重新创建)具有不同文件系统的外部驱动器上的 docker 文件夹(图像和容器)?

答案1

正如您所说,简单地将 docker 镜像/容器从默认的 AUFS 移动或复制到 BTRFS 格式的驱动器是行不通的。因此,作为第一步,您可以将所有容器提交为镜像,并使用docker save命令将镜像保存为 .tar 文件,然后在准备好 docker 以使用 btrfs 后,运行docker load以将镜像加载到新的存储驱动程序中。

步骤大致如下 - 这是我在 Ubuntu 14.10 中所做的 -

  • 保存图像
    docker save IMAGEID > /tmp/redis.tar
  • 准备 btrfs
mkfs.btrfs /dev/sdb
 mkdir /var/lib/docker-btrfs
 挂载 /dev/sdb /var/lib/docker-btrfs/
  • 停止docker并设置docker以利用btrfs并运行它。
服务docker停止
docker -d -s btrfs --graph="/var/lib/docker-btrfs" -H unix:///var/run/docker.sock

上述步骤也可以通过修改/etc/default/docker 来完成。

  • 加载图像。
docker load --input /tmp/redis.tar

您应该能够从这里查看图像并运行容器。对于容器,您还可以尝试export方法import,但我从未尝试过这种方法。

相关内容