如何遷移docker以使用不同的儲存驅動程式?

如何遷移docker以使用不同的儲存驅動程式?

我有一台運行 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

相關內容