como migrar o docker para usar um driver de armazenamento diferente?

como migrar o docker para usar um driver de armazenamento diferente?

Eu tenho um servidor executando o docker com driver de armazenamento btrfs. Como posso migrá-lo para usar um driver de armazenamento diferente? Eu gostaria de usar overlay2.

Tentei migrar seguindo as instruçõesaqui:

  • pare a janela de encaixe

  • renomeie /var/lib/docker para /var/lib/docker.bak

  • adicione {"storage-driver": "overlay2"} a /etc/docker/daemon.json

  • copie /var/lib/docker.bak para /var/lib/docker (para "se livrar" de quaisquer instantâneos btrfs)

  • iniciar janela de encaixe

Mas após esta migração, nenhum contêiner estará mais presente.

Suponho que porque o diretório ainda contém dados em /var/lib/docker/btrfs, e não em /var/lib/docker/overlay2(eles têm um "layout" diferente, renomear btrfs para overlay2 não funcionará).

Como faço para migrar de um driver de armazenamento para outro, para que todos os contêineres que estavam iniciando automaticamente ainda estejam presentes e iniciem automaticamente?

Responder1

Os subvolumes normalmente não exigem muito trabalho (em teoria, com base nos documentos do fedora para btrfs) - deveriam ser capazes, rm -r /var/lib/docker/subvolumes/*mas por algum motivo - dockerescuromagia - isso não funciona.

TLDR: usei o seguinte script que encontreinesta essênciapara remover todos os subvolumes em/var/lib/docker/btrfs/subvolumes

  • Eu modifiquei um pouco para incluir echo "Deleting: $subvolume"apenas para ter certeza de que não iria queimar todo o meu sistema

! Antes de executar isso, certifique-se de ter montado todos os seus dados importantes em seus contêineres ao seu host, pois o seguinte removerá todas as camadas do contêiner.

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

informação relacionada