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

dem*_*mas 6 docker

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

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

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

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

Dan*_* t. 6

正如您所说,简单地将 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 -d -s btrfs --graph="/var/lib/docker-btrfs" -H unix:///var/run/docker.sock

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

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

您应该能够从这里查看图像并运行容器。对于容器,您也可以尝试exportimport方法,不过我从未尝试过。