
我有一台運行 docker 和 btrfs 儲存驅動程式的伺服器。如何將其遷移到使用不同的儲存驅動程式?我想使用overlay2。
我嘗試按照說明進行遷移這裡:
停止泊塢窗
將 /var/lib/docker 重新命名為 /var/lib/docker.bak
將 {"storage-driver": "overlay2"} 加入 /etc/docker/daemon.json
將 /var/lib/docker.bak 複製到 /var/lib/docker (以「刪除」任何 btrfs 快照)
啟動碼頭工人
但在這次遷移之後,不再存在任何容器。
我想是因為目錄中仍然有數據/var/lib/docker/btrfs
,而不是/var/lib/docker/overlay2
(它們有不同的“佈局”,將 btrfs 重命名為 overlay2 是行不通的)。
如何從一個儲存驅動程式遷移到另一個儲存驅動程序,以便任何自動啟動的容器仍然存在並自動啟動?
答案1
子卷通常不需要大量工作(理論上基於 btrfs 的 fedora 文件) - 應該能夠,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