Docker Root Directory 경로 변경법

식빵·2024년 11월 26일
0

docker reference

목록 보기
11/12
post-thumbnail

🍞 Docker Root Directory?

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




🍞 Root Directory 변경법

1. Docker 서비스/소켓 중지

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 가 재기동될 수도 있습니다.


2. 설정파일 생성 및 경로 변경

설정 파일을 생성 및 작성합니다.

sudo vi /etc/docker/daemon.json
{
  "data-root": "여러분들의 새로운 docker root 디렉토리 경로"
}

작성 예시

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

주의
docker engine 17.05 버전 이전에는 json key 를
data-root 가 아닌 graph 를 사용했습니다. 자신의 버전에 설정하세요.



3. 기존 Root Dir 옮기기 (선택)

이 목차는 선택적으로 할 수 있는 부분입니다.
기존에 사용하던 docker 자원들을 계속 사용하시려는 분들만 따라하세요.
그게 아니면 바로 4번 목차로 넘어가시면 됩니다.

기존 Docker Root Directory 의 내용물을 신규 디렉토리로 옮깁니다.

sudo bash -c "mv /var/lib/docker/* [신규 docker root 디렉토리 경로]"
# 예시: sudo bash -c "mv /var/lib/docker/* /mnt/docker-data"



4. Docker 재기동

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 를 옮기고 재기동까지 해봤습니다.




🍞 참고한 것

profile
백엔드를 계속 배우고 있는 개발자입니다 😊

0개의 댓글