본문 바로가기
Cloud/docker

[docker] ROOT Directory (폴더) 경로 변경

by 근육곰돌이 2025. 3. 4.
728x90

Docker의 데이터 디렉토리(기본적으로 /var/lib/docker)는 다른 위치로 옮길 수 있으며, 새로운 컨테이너도 자동으로 새로운 위치를 사용하도록 설정할 수 있습니다. 단, 이를 위해 몇 가지 작업이 필요합니다.

 


1. 기존 Docker 데이터를 /data로 옮기는 방법

Docker가 실행 중인 컨테이너와 관련 데이터를 새로운 디렉토리로 옮기려면 아래 단계를 따라야 합니다.

 

단계 1: Docker 서비스 중지

먼저 Docker 데몬을 중지해야 합니다. 실행 중인 컨테이너가 있으면 데이터 이동 중 손상 위험이 있으므로 주의하세요.

sudo systemctl stop docker 
sudo systemctl stop docker.socket

 

단계 2: 기존 데이터 복사

/var/lib/docker의 데이터를 새로운 마운트 포인트(/data/docker)로 복사합니다. rsync를 사용하는 것이 안전합니다.

sudo mkdir -p /data/docker 
sudo rsync -av /var/lib/docker/ /data/docker/
  • -a: 아카이브 모드로 모든 파일 속성과 권한을 유지.
  • -v: 진행 상황을 표시

 

단계 3: Docker 데이터 디렉토리 설정 변경

Docker가 새로운 위치(/data/docker)를 사용하도록 설정 파일을 수정합니다.
/etc/docker/daemon.json 파일을 열어 아래 내용을 추가하거나 수정합니다. 파일이 없으면 새로 만드세요.

{ "data-root": "/data/docker" }

 

단계 4: Docker 서비스 재시작

설정을 적용하고 Docker를 다시 시작합니다.

sudo systemctl start docker

 

단계 5: 확인

Docker가 제대로 동작하는지 확인합니다.

docker info --format '{{.DockerRootDir}}'

출력이 /data/docker로 나오면 성공입니다.
또한 기존 컨테이너가 정상적으로 동작하는지 확인하세요:

docker ps -a

 

단계 6: 이전 디렉토리 정리 (선택)

새 위치로 잘 옮겨졌다면 /var/lib/docker를 삭제해 공간을 확보할 수 있습니다.
단, 모든 것이 정상 작동하는지 확인한 후에 진행하세요.

sudo rm -rf /var/lib/docker

 

 


2. 새로 생성되는 컨테이너도 /data/docker에 저장되도록 하기

위의 daemon.json 설정("data-root": "/data/docker")을 적용하면, 이후 새로 생성되는 모든 Docker 컨테이너와 이미지, 볼륨 등의 데이터는 자동으로 /data/docker에 저장됩니다. 별도의 추가 설정은 필요 없습니다.

 


주의사항

  1. 디스크 마운트 확인: /data가 새 하드디스크에 제대로 마운트되었는지 확인하세요 (df -h 명령어로 확인 가능).
  2. 권한 문제: /data/docker 디렉토리의 소유자와 권한이 Docker와 호환되도록 설정하세요.
    필요하면 아래 명령어를 실행:
    sudo chown -R root:root /data/docker 
    sudo chmod -R 700 /data/docker
  3. 다운타임: Docker를 중지하고 데이터를 옮기는 동안 서비스가 잠시 중단되니, 적절한 시점에 작업을 계획하세요.
  4. 백업: 데이터 손실을 방지하기 위해 /var/lib/docker를 백업해두는 것이 좋습니다.

 

결론

  • 기존 컨테이너와 데이터를 /data/docker로 옮기는 것은 가능하며, 위 단계를 따르면 됩니다.
  • 새로 생성되는 컨테이너도 daemon.json 설정으로 자동으로 /data/docker를 사용하게 할 수 있습니다.
반응형