我计划将 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
,但我从未尝试过这种方法。