본문 바로가기

DevOps/Docker

Docker Volume 마운트 위치 변경

728x90

안녕하세요 오랜오랜만입니다.

 

가을없이 바로 겨울이 되고나니 추워지고 추워지다보니 블로그 관리가 소홀해진걸 깨달았습니다.

 

오늘 해볼 주제는 Docker 저장 위치 변경입니다.

 

이게 무슨소리냐면 Docker를 처음 설치하면 부팅디스크에 설치가 될텐데 아마 우분투 기준으로 /var/lib/docker 여기에 docker에 관한 모든 것이 기본으로 저장이 될겁니다. 

 

그렇게되면 나중에 문제가 생길 수가 있는데 DB 등을 도커로 구축하거나 컨테이너에 대한 용량이 점점 커질경우 저장공간이 부족해지는 이슈가 생길 수 있습니다.

 

따라서 해당 위치를 옮겨주는 작업이 필요합니다.

 

살짝 이런느낌

 

그래서 저는 이번에 GCP 를 사용했었는데요 GCP에 HDD 를 붙이고 마운트 하는 과정도 한 번 여기에 추가해보겠습니다. 

 

순서는

1. HDD 마운트

2. Docker 디렉토리 복사

3. Docker 마운트 위치 변경

로 진행해보겠습니다.

 

참고로 제 환경은 Ubuntu 입니다.

 

# sudo lsblk
NAME    MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
loop1     7:1    0  55.4M  1 loop /snap/core18/2128
loop2     7:2    0  61.8M  1 loop /snap/core20/1081
loop3     7:3    0  55.5M  1 loop /snap/core18/2246
loop4     7:4    0 250.4M  1 loop /snap/google-cloud-sdk/203
loop5     7:5    0  70.3M  1 loop /snap/lxd/21029
loop6     7:6    0  32.5M  1 loop /snap/snapd/13640
loop7     7:7    0  32.3M  1 loop
loop8     7:8    0  67.3M  1 loop /snap/lxd/21545
loop9     7:9    0  61.9M  1 loop /snap/core20/1169
loop10    7:10   0  32.4M  1 loop /snap/snapd/13270
loop11    7:11   0 250.3M  1 loop /snap/google-cloud-sdk/202
sda       8:0    0   200G  0 disk
├─sda1    8:1    0 199.9G  0 part /
├─sda14   8:14   0     4M  0 part
└─sda15   8:15   0   106M  0 part /boot/efi
sdb       8:16   0   3.9T  0 disk /mnt/disks/extra_disk

이런식으로 뜨는데요 제 예시에서는 sdb 가 추가되는 영구디스크의 기기 이름입니다. 저는 이미 마운트가 다 된 상태라 여러분들은 이렇게 뜨진 않을 겁니다.

 

 

그 다음 mkfs 를 통해서 디스크 포맷을 해줍니다. 사실 처음 디스크 추가하면 무슨내용이 있겠습니까 이 부분은 안해도 될거같기도 합니다. 저 DEVICE_NAME 부분은 위에서 sdb 인거 처럼 여러분꺼에 맞게 넣어주시면 되겠습니다.

 sudo mkfs.ext4 -m 0 -E lazy_itable_init=0,lazy_journal_init=0,discard /dev/"DEVICE_NAME"

 

 

이제 디스크 마운트를 해봅시다. 이게 무슨소리냐면 폴더와 영구디스크를 연결한다고 보시면됩니다.

 

우선 디렉토리를 만들고

sudo mkdir -p /mnt/disks/MOUNT_DIR

 

마운트할 디렉토리와 방금 그 영구디스크를 마운트하는 명령어를 통해 마운트해줍니다.

sudo mount -o discard,defaults /dev/DEVICE_NAME /mnt/disks/MOUNT_DIR

 

일단 이정도만 해주면 되는데 추가로 VM 을 끄고 자동 마운트를 구성한다거나 하는 것 등의 조건들이 있지만 궁금하신 분은 참고하시기바랍니다.

https://cloud.google.com/compute/docs/disks/add-persistent-disk?hl=ko&_ga=2.118949705.-1560352879.1628136712#formatting 

 

디스크 만들기 및 연결  |  Compute Engine 문서  |  Google Cloud

디스크 볼륨을 생성하여 Windows 및 Linux 인스턴스에 연결하거나 마운트하는 방법 알아보기

cloud.google.com

 

 

자 이제 Docker root 위치를 바꿔야합니다. 저도 옮기고 나서 몇개월만에 글을 쓰다보니 정확히 어떻게 하는지 기억이 가물가물하지만 일단 써보겠습니다.

 

일단 보시는 것처럼 명령어를 쳐보면 도커의 루트 디렉토리 위치가 나옵니다. 저야 물론 다 수정이 되었기 때문에 마운트해둔 곳으로 나오지만 여러분의 경우에는 /var/lib/docker 로 나올겁니다.

# docker info | grep Root
 Docker Root Dir: /mnt/disks/extra_disk/docker

 

이걸 고치려면 방법이 여러개가있습니다.

docker 프로세스를 구동하는 스크립트 파일에서 명령어를 추가한다던가

 

daemon.json에 데이터 루트를 추가하던가 암튼 있습니다.

 

저는 이중에서 daemon.json을 작성해서 해보겠습니다.

 

우선 도커 디렉토리 데이터를 새롭게 저장할 곳으로 옮겨줍니다.

 

/var/lib/docker 를 새롭게 마운트해둔 디스크에 새로운 디렉토리에 cp 명령어로 복사해주세요

 

/etc/docker/daemon.json 파일을 만들어서 다음 내용을 추가해주세요

 

{
    "data-root": "옮길디렉토리"
}

 

자 이러고 docker 데몬을 껏다가 켜줍시다.

 

systemctl docker.service restart

 

자 이러면 끝입니다. 확인해보시고 안되면 댓글 달아주세요

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형