본문 바로가기
잡지식 저장고

Ubuntu에서 Docker 기본 저장위치 바꾸기

by Slate_Knowledge 2023. 7. 18.
728x90

Docker는 기본적으로 /var/lib/docker 밑에 이미지 및 컨테이너 정보들을 저장해두는데, 부팅 디스크의 용량을 잡아먹는 괴물 중 하나다. 

이걸 다른 드라이브로 옮기려면 아래와 같이 수행한다.

제일 먼저 docker 데몬이 돌아가고 있다면 그걸 멈춰준다.

sudo systemctl stop docker

그 다음, 제일 먼저 기존 파일들을 옮겨주는데 이때 만약을 위해서 rsync나 cp를 통해서 복사를 먼저 해주는걸 권장한다. mv 로 옮기다가 중간에 에러나거나 멈추면 골치아프다. 예를 들어서 /NEWHDD/docker 밑에 옮겨준다고 하면

sudo rsync -avxP /var/lib/docker /NEWHDD/docker

위 명령어를 통해서(**이렇게 하면 /NEWHDD/docker/docker 로 옮겨진다! 필자는 안전을 위해 항상 이렇게 한 다음 mv로 정리하는편) 파일들을 복사한 다음, 테스트를 위해서 아래와 같이 기존 폴더명을 바꿔준다

sudo mv /var/lib/docker /var/lib/docker_old

그 다음은 docker의 설정파일을 바꿔주면 되는데,

sudo vim /lib/systemd/system/docker.service

명령을 통해서 서비스 시스템 데몬 설정파일을 열면 아래와 같이 설정들이 있을텐데

여기서 ExecStart= ... 라고 되어있는 줄을 아래와 같이 -g 옵션을 추가해서 바꿔준다

ExecStart=/usr/bin/dockerd -g /NEWHDD/docker -H fd:// --containerd=/run/containerd/containerd.sock

그 다음 도커 데몬을 다시 실행시켜서 기존 이미지나 컨테이너가 잘 살아있는지 확인하고 용량을 차지하는 올드 폴더를 지우면 끝

sudo systemctl daemon-reload
sudo systemctl start docker
sudo docker ps -a
sudo docker image ls

sudo rm -rf /var/lib/docker_old

 

**service 설정파일 말고도, /etc/docker/daemon.json 을 고쳐주는 방법도 있다. 파일 복사, 도커 이미지 확인, 기존 폴더 삭제등은 동일하게 하는데 docker.service 파일을 수정하는 대신 아래와 같이 /etc/docker/daemon.json을 수정해준다.

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

 

위 구문을 추가해준다(만약 이미 중괄호가 있다면 그 안에 추가해준다. 아래처럼.).

{
    "runtimes": {
        "nvidia": {
            "path": "nvidia-container-runtime",
            "runtimeArgs": []
        }
    },
    "data-root" : "/NEWHDD/docker"
}

 

728x90
반응형

댓글