
btrfs 스토리지 드라이버를 사용하여 도커를 실행하는 서버가 있습니다. 다른 스토리지 드라이버를 사용하도록 마이그레이션하려면 어떻게 해야 합니까? 오버레이2를 사용하고 싶습니다.
지침에 따라 마이그레이션을 시도했습니다.여기:
도커 중지
/var/lib/docker의 이름을 /var/lib/docker.bak로 바꿉니다.
/etc/docker/daemon.json에 {"storage-driver": "overlay2"}를 추가하세요.
/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