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에 저장됩니다. 별도의 추가 설정은 필요 없습니다.
주의사항
- 디스크 마운트 확인: /data가 새 하드디스크에 제대로 마운트되었는지 확인하세요 (df -h 명령어로 확인 가능).
- 권한 문제: /data/docker 디렉토리의 소유자와 권한이 Docker와 호환되도록 설정하세요.
필요하면 아래 명령어를 실행:
sudo chown -R root:root /data/docker sudo chmod -R 700 /data/docker
- 다운타임: Docker를 중지하고 데이터를 옮기는 동안 서비스가 잠시 중단되니, 적절한 시점에 작업을 계획하세요.
- 백업: 데이터 손실을 방지하기 위해 /var/lib/docker를 백업해두는 것이 좋습니다.
결론
- 기존 컨테이너와 데이터를 /data/docker로 옮기는 것은 가능하며, 위 단계를 따르면 됩니다.
- 새로 생성되는 컨테이너도 daemon.json 설정으로 자동으로 /data/docker를 사용하게 할 수 있습니다.
'Cloud > docker' 카테고리의 다른 글
[Docker] Registry - Harbor 설치 방법 (0) | 2024.04.08 |
---|---|
[docker] 도커 사설 저장소 생성 및 UI 설정 (docker registry, web ui) on rocky9 (0) | 2024.01.22 |
[docker] 리눅스(우분투)환경에서 도커 설치 방법 (0) | 2023.02.16 |
[docker] CentOS7에서 Docker Container 생성 시 ping, ssh, Networking Resource 없는 증상 발생 시 (0) | 2022.05.04 |
[docker error] fuse: device not found, try 'modprobe fuse' first (0) | 2022.01.06 |