기본적으로 Docker는 루트(/) 파티션에 있는 "/var/lib/docker" 내에 모든 것을 저장합니다. 컨테이너가 커지면 이 폴더가 빠르게 채워질 수 있습니다. 서버가 느리게 실행되거나, 데이터를 저장하지 못하거나, 무작위로 충돌이 발생하는 경우 루트 파티션의 공간이 부족하기 때문일 수 있습니다. 이 가이드에서는 Docker 볼륨(또는 데이터)을 다른 파티션으로 이동하고 루트 파티션의 공간을 확보하는 방법을 안내합니다.
목차
Docker 볼륨을 다른 파티션으로 이동해야 하는 이유
Docker 컨테이너는 종종 대량의 영구 데이터를 생성합니다. 시간이 지남에 따라 이 데이터는 루트 파티션의 저장 공간을 차지할 수 있습니다. Docker 볼륨을 다른 파티션으로 이동하면 다음과 같은 이점이 있습니다.
- 루트 파일 시스템의 여유 공간
- 디스크 고갈로 인한 시스템 충돌 방지
- 대용량 애플리케이션 데이터를 전용 저장소에 저장
- 전체적인 저장용량 관리 개선
예를 들어 MySQL 또는 PostgreSQL과 같은 데이터베이스 컨테이너는 볼륨 내에 기가바이트의 데이터를 저장할 수 있습니다. 해당 볼륨을 더 큰 전용 파티션으로 옮기면 시스템 안정성을 유지하는 데 도움이 될 수 있습니다.
Docker 볼륨 디렉터리 찾기
Docker 볼륨을 이동하기 전에 먼저 Docker가 시스템에서 해당 볼륨을 저장하는 위치를 찾아야 합니다. 사용 가능한 모든 Docker 볼륨을 나열하려면 다음 명령을 실행하십시오.
docker volume ls
볼륨 이름을 확인한 후 아래 명령을 실행하여 특정 볼륨을 검사하세요.
docker volume inspect volume_name
이 명령은 볼륨에 대한 자세한 정보를 표시합니다. 출력에서 Mountpoint를 찾으세요. 필드. Docker가 볼륨 데이터를 저장하는 정확한 디렉터리를 보여줍니다.
전체 Docker 데이터 루트 이동
Docker 데이터를 다른 파티션으로 이동하는 한 가지 방법은 볼륨, 이미지, 컨테이너 및 로그가 포함된 전체 Docker 스토리지 디렉터리를 재배치하는 것입니다. "/var/lib/docker"가 꽉 차 있는 경우 가장 깨끗하고 안전한 방법입니다.
이를 위해서는 먼저 Docker 서비스를 중지하여 마이그레이션 중에 파일이 변경되지 않도록 해야 합니다.
sudo systemctl stop docker 다음으로 rsync 명령을 사용하여 Docker 데이터를 복사할 수 있습니다:
sudo rsync -avxP /var/lib/docker/ /path/to/new/partition/docker-data/ 참고 :"/path/to/new/partition/"을 폴더를 마이그레이션하려는 새 파티션의 경로로 변경하세요.
이 명령은 권한을 유지하고 전송 중 진행 상황을 표시하면서 Docker 디렉터리를 복사합니다.
또는 하드 링크, ACL 및 확장 속성과 같은 추가 Docker 속성을 유지하는 다음 명령을 사용할 수 있습니다.
sudo rsync -aHAX --info=progress2 /var/lib/docker/ /mnt/docker-data/ 이 버전은 더 많은 파일 시스템 메타데이터를 보존하고 더 명확한 전체 진행률 표시기를 제공하므로 Docker 데이터를 마이그레이션할 때 권장됩니다.
그런 다음 삭제하기 전에 이전 데이터 디렉터리의 이름을 변경하여 백업하세요.
sudo mv /var/lib/docker /var/lib/docker.old 이제 다음 명령으로 데몬 파일을 열어 Docker 구성을 업데이트하세요.
sudo nano /etc/docker/daemon.json 이 파일에 다음 내용을 추가하세요:
{
"data-root": "/path/to/new/partition/docker-data"
}
마지막으로 sudo systemctl start docker로 Docker를 다시 시작하세요. . 그런 다음 다음 명령을 사용하여 새 Docker 데이터 디렉터리를 확인할 수 있습니다.
docker info | grep "Docker Root Dir"
모든 것이 정상이면 이전 백업을 제거하십시오:
sudo rm -rf /var/lib/docker.old Docker Desktop을 사용하여 모든 Docker 데이터 이동(GUI 방법)
Docker Desktop을 사용하면 디스크 이미지 위치를 변경하여 모든 Docker 데이터를 다른 파티션으로 이동할 수 있습니다. 이 옵션은 이미지, 컨테이너, 볼륨, 빌드 캐시 등 Docker에 저장된 모든 것을 시스템의 새 위치로 전송합니다.
이렇게 하려면 Docker Desktop을 열고 설정으로 이동하세요. , 리소스로 이동 → 고급 을 클릭한 다음 디스크 이미지 위치를 찾습니다. 옵션.
찾아보기를 클릭하세요. Docker가 데이터를 저장할 새 파티션이나 드라이브에서 "/mnt/newdisk/docker-data"와 같은 폴더를 선택하세요. 새 위치를 선택한 후 적용 및 다시 시작을 클릭하세요. . 그러면 Docker Desktop이 다시 시작되고 모든 기존 Docker 데이터가 선택한 파티션으로 이동됩니다.
참고: 그러면 모든 Docker 데이터가 이동됩니다. 현재 개별 볼륨을 이동할 수 있는 GUI 옵션은 없습니다.
특정 볼륨 데이터만 재배치
특정 Docker 볼륨을 다른 파티션으로 이동하고 호스트 바인딩 마운트를 통해 컨테이너와 함께 사용할 수 있습니다. 이 접근 방식은 간단하고 안전하며 백업이 쉽습니다. 볼륨을 이동하기 전에 해당 볼륨을 사용하는 컨테이너를 중지하세요.
docker stop container_name
그 후에는 rsync를 사용하세요. 모든 데이터를 새 디렉토리로 안전하게 이동하려면:
sudo rsync -a /var/lib/docker/volumes/my_volume/_data/ /data/docker/my_volume/ 그러면 이전 볼륨의 모든 내용이 "/data/docker/my_volume"으로 복사됩니다.
Docker 관리 볼륨 대신 바인드 마운트를 사용하려면 "docker-compose.yml" 파일을 편집하세요.
services:
my_service:
volumes:
- /data/docker/my_volume:/container/path
/container/path 바꾸기 볼륨이 원래 마운트된 컨테이너 내부 경로를 사용합니다. 그런 다음 다음 명령을 사용하여 컨테이너를 다시 배포하세요:
docker-compose up -d 마무리
Docker 볼륨 또는 전체 Docker 데이터 디렉터리를 더 큰 파티션으로 이동하면 루트 파일 시스템의 공간이 확보되고 서버가 안정적으로 유지됩니다. 컨테이너는 데이터 손실 위험 없이 원활하게 계속 실행되며 향후 스토리지 관리가 훨씬 쉬워집니다.
전체 Docker 디렉터리를 재배치할 수 없는 경우에도 다른 방법을 사용하여 공간을 회수할 수 있습니다. 여기에는 docker 시스템 정리 또는 개별 정리 명령을 사용하여 사용하지 않는 컨테이너, 이미지, 네트워크 및 캐시를 정리하고 Linux 바인드 마운트를 사용하여 Docker의 런타임에 영향을 주지 않고 대규모 디렉터리를 이동하는 것이 포함됩니다.