我有一台运行 docker 的服务器,使用 btrfs 存储驱动程序。如何将其迁移到使用其他存储驱动程序?我想使用 overlay2。
我尝试按照说明进行迁移这里:
停止docker
重命名 /var/lib/docker 为 /var/lib/docker.bak
将 {"storage-driver": "overlay2"} 添加到 /etc/docker/daemon.json
将 /var/lib/docker.bak 复制到 /var/lib/docker (以“摆脱”任何 btrfs 快照)
启动docker
但这次迁移之后,就不再存在任何容器了。
我猜测是因为目录中仍有数据/var/lib/docker/btrfs
,而没有数据/var/lib/docker/overlay2
(它们有不同的“布局”,将 btrfs 重命名为 overlay2 不行)。
如何从一个存储驱动程序迁移到另一个存储驱动程序,以便任何自动启动的容器仍然存在并自动启动?
答案1
子卷通常不需要大量的工作(理论上基于 Fedora 的 Btrfs 文档)——应该可以,rm -r /var/lib/docker/subvolumes/*
但出于某种原因——docker黑暗的魔法——这不起作用。
TLDR:我使用了以下我找到的脚本关于这个要点删除所有子卷/var/lib/docker/btrfs/subvolumes
- 我稍微修改了一下,以
echo "Deleting: $subvolume"
确保我不会烧毁整个系统
!在运行此操作之前,请确保您已将容器中的所有重要数据绑定到主机,因为接下来的操作将删除所有容器层。
for subvolume in /var/lib/docker/btrfs/subvolumes/*; do
echo "Deleting: $subvolume"
# Uncomment the next line after you've verified the list is correct.
# btrfs subvolume delete $subvolume
done