많은 공간이 필요하므로 도커 데이터(이미지 및 컨테이너)를 별도의 드라이브로 이동할 계획입니다.
내가 아는 대로 /var/lib/docker
별도의 드라이브로 이동하여 해당 드라이브에 대한 소프트 링크를 생성할 수 있습니다. 하지만 BTRFS가 도커에 가장 적합한 파일 시스템 옵션이라는 것을 읽었습니다.
하지만 외부 드라이브를 BTRFS로 포맷하고 기존 폴더를 BTRFS로 옮기는 것만으로는 충분하지 않다고 생각합니다. 내가 볼 때 이 폴더의 내용은 사용하는 파일 시스템에 따라 다릅니다.
다른 파일 시스템을 사용하는 외부 드라이브에서 docker 폴더(이미지 및 컨테이너)를 올바르게 이동(다시 생성)하려면 어떻게 해야 합니까?
답변1
말씀하신 대로 기본 AUFS에서 BTRFS 형식의 드라이브로 도커 이미지/컨테이너를 이동하거나 복사하는 것은 작동하지 않습니다. 따라서 첫 번째 단계로 모든 컨테이너를 이미지로 커밋하고 docker save
명령을 사용하여 이미지를 .tar 파일로 저장할 수 있습니다. 그런 다음 btrfs를 사용하도록 Docker를 준비한 후 실행하여 docker load
이미지를 새 스토리지 드라이버에 로드합니다.
단계는 대략 다음과 같습니다. 이것이 제가 Ubuntu 14.10 상자에서 수행한 작업입니다.
- 이미지 저장
docker save IMAGEID > /tmp/redis.tar
- btrfs 준비
mkfs.btrfs /dev/sdb mkdir /var/lib/docker-btrfs 마운트 /dev/sdb /var/lib/docker-btrfs/
- docker를 중지하고 docker를 설정하여 btrfs를 활용하고 실행합니다.
서비스 도커 중지 docker -d -s btrfs --graph="/var/lib/docker-btrfs" -H unix:///var/run/docker.sock
위 단계는 /etc/default/docker를 수정하여 수행할 수도 있습니다.
- 이미지를 로드합니다.
docker load --input /tmp/redis.tar
여기에서 이미지를 보고 컨테이너를 실행할 수 있어야 합니다. 컨테이너의 경우 시도해 볼 수도 있지만 방법 export
을 import
시도해 본 적이 없습니다.