Docker 파티션 공간 부족 시 더 큰 파티션으로 Docker 볼륨을 안전하게 이동하는 방법

Docker 파티션 공간 부족 시 더 큰 파티션으로 Docker 볼륨을 안전하게 이동하는 방법

Docker는 기본적으로 루트 파티션의 “/var/lib/docker” 디렉터리에 데이터를 저장합니다.애플리케이션과 컨테이너가 커짐에 따라 이 디렉터리는 빠르게 상당한 공간을 차지할 수 있습니다.서버 성능 저하, 데이터 저장 불가, 또는 예기치 않은 충돌과 같은 증상은 루트 파티션의 용량이 거의 꽉 찼음을 나타내는 경우가 많습니다.이 가이드에서는 Docker 볼륨 또는 데이터를 다른 파티션으로 이동하여 루트 파티션의 부담을 줄이는 효과적인 전략을 살펴봅니다.

Docker 볼륨을 이동하는 것의 중요성

Docker 컨테이너는 상당한 양의 영구 데이터를 생성하는 경우가 많으며, 이로 인해 루트 파티션의 저장 용량이 빠르게 소진될 수 있습니다. Docker 볼륨을 다른 파티션으로 이동하면 다음과 같은 여러 가지 이점을 얻을 수 있습니다.

  • 루트 파일 시스템의 공간을 확보하세요
  • 디스크 공간 부족으로 인한 시스템 오류를 방지하세요
  • 대용량 애플리케이션 데이터는 전용 스토리지 솔루션에 할당하십시오.
  • 스토리지 리소스의 전반적인 관리를 향상시킵니다.

예를 들어 MySQL이나 PostgreSQL과 같은 데이터베이스 컨테이너는 수 기가바이트의 데이터를 저장할 수 있습니다.이러한 대용량 데이터를 더 넓은 파티션으로 옮기면 시스템 안정성을 크게 향상시킬 수 있습니다.

Docker 볼륨 디렉터리를 찾는 방법

Docker 볼륨 디렉터리를 찾는 것은 이동을 시작하기 전에 매우 중요한 첫 번째 단계입니다.아래 명령어를 사용하여 사용 가능한 모든 Docker 볼륨 목록을 확인하세요.

docker volume ls

Docker 볼륨 검사

특정 볼륨에 대한 자세한 정보를 얻으려면 다음 명령을 실행하십시오.

docker volume inspect volume_name

출력 내용에서 MountpointDocker가 볼륨 데이터를 저장하는 정확한 디렉터리를 나타내는 필드를 찾으십시오.

특정 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/

이 명령은 권한을 유지하고 전송 진행 상황을 표시하면서 Docker 디렉터리를 복제합니다.

Docker 데이터 복사 Rsync

Docker의 추가 속성을 보존해야 하는 경우 다음 향상된 명령어를 사용할 수 있습니다.

sudo rsync -aHAX --info=progress2 /var/lib/docker/ /mnt/docker-data/

이 명령어는 파일 시스템 메타데이터를 더 많이 보존하고 자세한 진행 상황을 표시하므로 더 선호됩니다.

데이터 전송 후, 이전 데이터 디렉터리의 이름을 ‘백업’으로 변경하십시오.

sudo mv /var/lib/docker /var/lib/docker.old

다음 명령어를 사용하여 데몬 파일을 편집함으로써 Docker 구성을 업데이트하세요.

sudo nano /etc/docker/daemon.json

다음 구성을 추가하십시오.

{"data-root": "/path/to/new/partition/docker-data"}

Docker 구성 업데이트

그 후 다음 명령을 실행하여 Docker를 다시 시작하십시오.

sudo systemctl start docker

Docker 데이터 디렉터리가 성공적으로 업데이트되었는지 다음 명령으로 확인하십시오.

docker info | grep "Docker Root Dir"

Docker 새 데이터 디렉터리를 확인하세요

모든 것이 올바르게 보이면 이전 백업을 삭제하셔도 됩니다.

sudo rm -rf /var/lib/docker.old

Docker Desktop을 이용한 모든 Docker 데이터 이동 (GUI 방식)

그래픽 인터페이스를 선호하는 경우 Docker Desktop을 사용하면 디스크 이미지 위치를 변경하여 모든 Docker 데이터를 전송할 수 있습니다.이 방법을 사용하면 이미지, 컨테이너 및 볼륨을 포함하여 Docker에 저장된 모든 데이터가 새 위치로 이동합니다.

Docker Desktop을 열고 설정 으로 이동한 다음 리소스고급 으로 이동 하여 디스크 이미지 위치 옵션을 찾습니다.

디스크 이미지 위치

찾아보기를 선택하여 Docker 스토리지에 사용할 디렉터리(예: “/mnt/newdisk/docker-data”)를 지정합니다.적용 및 재시작을 클릭하여 데이터 이동을 시작합니다.

파티션 변경

이동 특정 볼륨 데이터

유연성을 높이려면 호스트 바인드 마운트를 통해 컨테이너에서 사용하는 특정 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 system prune사용하지 않는 컨테이너, 이미지, 네트워크 및 캐시를 제거하는 명령어를 사용하거나 Linux 바인드 마운트를 활용하여 Docker 작동에 지장을 주지 않고 대용량 디렉터리를 이동하는 등 공간을 확보할 수 있는 다른 방법이 있습니다.

출처 및 이미지

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다