docker 에서 사용되는 모든 자원 (volume, network, layer, etc...)들이
담겨져 있는 디렉토리입니다.
아무 설정을 안하면 /var/lib/docker
가 기본 경로입니다.
docker info | grep "Root Dir"
로 확인 가능합니다.
docker 를 통해 자원을 생성하다 보면 Docker Root Directory
의 용량이 커집니다.
이럴 때는 Host PC 에 용량이 큰 디스크를 하나 마운트하고
해당 경로를 Docker Root Directory
로 사용하는 게 좋습니다.
지금부터 그 방법을 알아보겠습니다.
OS
: Centos 7.6
Docker Engine version
: 26.1.4
sudo systemctl disable --now containerd.service
sudo systemctl stop docker.socket
sudo systemctl disable --now docker.service
# 모두 [inactivate] 인지 확인
# sudo systemctl status containerd.service
# sudo systemctl status docker.service
# sudo systemctl status docker.socket
주의! 명령어 입력 후에 docker 명령어 사용 ❌
docker.socket
,docker.service
가 재기동될 수도 있습니다.
설정 파일을 생성 및 작성합니다.
sudo vi /etc/docker/daemon.json
{
"data-root": "여러분들의 새로운 docker root 디렉토리 경로"
}
작성 예시
{ "data-root": "/mnt/docker-data" }
주의
docker engine17.05
버전 이전에는 json key 를
data-root
가 아닌graph
를 사용했습니다. 자신의 버전에 설정하세요.
이 목차는 선택적으로 할 수 있는 부분입니다.
기존에 사용하던docker
자원들을 계속 사용하시려는 분들만 따라하세요.
그게 아니면 바로 4번 목차로 넘어가시면 됩니다.
기존 Docker Root Directory
의 내용물을 신규 디렉토리로 옮깁니다.
sudo bash -c "mv /var/lib/docker/* [신규 docker root 디렉토리 경로]"
# 예시: sudo bash -c "mv /var/lib/docker/* /mnt/docker-data"
sudo systemctl start docker
sudo systemctl enable --now docker.service
sudo systemctl enable --now containerd.service
# 참고로 docker.socket 은 docker 명령어를 입력하면 다시 activate 됩니다.
# 아래 2개의 명령어를 통해서 [Active: active (running)] 확인
systemctl status docker
systemctl status containerd
# 추가적으로 docker root directory 가 제대로 옮겨졌는지 확인합니다.
docker info | grep "Docker Root Dir"
이상으로 docker root directory 를 옮기고 재기동까지 해봤습니다.