리눅스 Docker 저장 경로 변경 하기 (image, volume…)

docker 저장 경로 변경

Docker 저장경로?

나는 조그만한 홈서버를 집에서 운영하며 비싼 EC2를 최대한 안쓰려고 하고 있는데

얼마 전부터 계속 root 폴더가 100%로 용량이 부족해서 autojump 에러가 뜨는것이다.

docker 저장 경로 변경

분명 root에는 로그파일말고 저장되는 것이 없을텐데 (심지어 로그파일은 다 크기제한을 걸어놔서 10G이상 할리가 없었다)

이상해서 이것저것 검색해보았는데 며칠동안 찾지 못해 머리를 끙끙 싸매고 있었다…

그랬더니 알고보니 Docker data가 root에 저장되어 있는 것이 아닌가?!!

무려 /var/lib/docker에 저장되어 있었다… (나만 몰랐지)

mysql도 docker로 사용하고 여러 이미지도 다운받아 놓은터라 docker data의 용량이 굉장히 클 것 같았다

docker 저장 경로 변경

용량을 검색할 때도 permission denied로 잘 빠져나가 엄청난 용량을 지키고 있었다..

그럼 이제 내가 할 것은 이 docker 저장 경로 변경을 해서 root가 아닌 다른 곳으로 옮기자!

Docker 저장 경로 변경

Docker 중지

docker 저장 경로 변경을 위해 제일 먼저 해야할 것은 현재 실행되고 있는 Docker를 중지하는 것이다.

sudo systemctl stop docker
sudo systemctl stop docker.socket

첫줄만 실행하면 docker.socket은 실행중이라고 나오므로 둘다 종료시켜 준다.

Root Dir 파악

docker info | grep "Docker Root Dir"

위의 명령어를 통해 현재 Root Dir 파악하는 것이 필요하다.

docker 저장 경로 변경

별다른 설정을 하지 않았다면 당연하게도 /var/lib/docker 가 나올 것이다.

저장할 공간 만들어 옮기기

그럼 이제 docker 저장 경로 변경을 위해 새로운 공간을 만들어서 옮겨야 한다.

mkdir /mnt/sdb

위는 그냥 예시고 저장할 공간의 상위 폴더만 생성해 주면된다.

sudo mv /var/lib/docker /mnt/sdb/docker-root

나는 기존에 docker라는 폴더에 설정 파일들이 있어서 docker-root라는 폴더로 옮겨 주었다.

처음에는 옮기지 않고 설정만 바꿔줬더니 mysql 데이터가 다 날아가서 급하게 다시 폴더를 옮겼으니 주의..

docker 저장 경로 변경 설정

데이터는 다 옮겨주었으니 설정 파일을 수정해 주어야 한다.

sudo vi /etc/docker/daemon.json

처음에는 이부분에서 key.json 만 있고 daemon.json이 없어서 조금 당황했다.

하지만 그냥 daemon.json 만들어서 안에 내용 추가하면 되니까 걱정안해도 된다.

docker 저장 경로 변경
{
"graph": "본인의 저장경로"
}

이렇게 본인의 저장경로를 추가해 주면된다. 나는 아래와 같이 해주었다.

docker 저장 경로 변경

이러면 docker 저장 경로 변경 설정 끝!!

도커 재시작

sudo systemctl start docker
docker info | grep "Docker Root Dir"

이제 도커를 재시작하고 아까 처럼 Root Dir을 확인해 주게 되면

docker 저장 경로 변경

docker 저장 경로 변경이 정상적으로 된 것을 볼 수 있다. 이러면 앞으로 docker image, volume들이 여기로 저장된다~

docker 저장 경로 변경

그리고 제일 중요한 저장용량이 얼마나 줄었는지 확인해보면

무려 11G가 줄어든 것을 볼 수 있다.

도커 저장경로 변경 해야겠지..? root가 널널해져서 기분이 좋아졌다.

답글 남기기

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