как перенести 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

Подтома обычно не требуют много работы (теоретически, основываясь на документации 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

Связанный контент