
У меня есть сервер, на котором запущен 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