1. 작업 계기
회사에서 한 시스템 운영 인수인계를 받던 중 자동 배치를 돌고있던 젠킨스에 오류가 있다는 사실을 알게 되었다.
원인을 찾아보니 리눅스에 도커가 올라가있는 디렉토리가 log full 차서 일어난 현상이었다.
그런데 여기서 근본적인 문제점/의문점 2가지가 있다.
첫번째, 젠킨스 설정에서 오래된 빌드 삭제가 설정이 안되어 있었다.
먼저 이 부분을 설정해주었다.
두번째가 치명적이다.
도커의 루트 디렉토리가 리눅스의 루트 폴더에 마운트가 되어있던 것이다.
내가 이해한 바로는 해당 폴더는 윈도우의 C드라이브 같은 것이다.
OS에 관련된 시스템 관련 데이터를 저장하는 영역으로 증량이 안된다.
다른 리눅스 디렉토리는 각각이 용량을 할당받고 증량해 확장할 수 있다고 한다.
따라서 공간 분리에 대한 필요성을 느껴 도커의 루트 폴더를 이동시키게 되었다.
그 방법에 대해 사수님이 설명해주신 내용을 정리해보았다.
(잊지 말자!)
2. Docker 루트 디렉토리 변경하는 법
1) 루트 디렉토리 설정을 확인한다.
[root@]# docker info | grep Root
Docker Root Dir: /var/lib/docker
현재 문제되는 Root 디렉토리는 /var/lib/docker 이다.
2) 루트 디렉토리 설정 파일 변경
도커의 설정은 /etc/docker/daemon.json 파일을 작성/수정하면 된다.
vi 는 리눅스에서 파일을 수정할 때 앞에 붙이는 명령어이다.
[root@]# vi /etc/docker/daemon.json
이 안에 data-root라는 변수명에 변경하고자 하는 디렉토리 명을 기입해준다.
{
"data-root": "/DOCKER/data"
}
도커가 바라보는 루트 폴더를 변경했으면 이제 이 폴더에 기존 데이터를 이동만 시켜주면 된다.
/DOCKER/data 디렉토리로 데이터를 싹 옮겨주자.
딱 한줄이면 된다.
cp -pr [기존 디렉토리] [이동할 디렉토리]
cp -pr /var/lib/docker /docker-data/data/
명령어를 뜯어보자.
- cp: copy의 약자로 복사할 때 쓰는 리눅스 명령어다.
- -p: 복사되는 파일의 소유권, 권한, 타임스탬프를 보존한다.
- -r: 디렉토리를 재귀적으로 복사해 하위 디렉토리까지 완전히 복사해 이동시키는 설정이다.
따라서 위 명령어의 의미는 모든 권한과 하위 디렉토리까지 동일하게 복사하라는 것이다.
여기까지 왔다면 이 초간단 가이드는 거의 끝이 났다.
도커를 재기동하자. (도커를 종료했다는 가정하에)
[root@]# systemctl start docker
잘 이동했나 확인해주자.
이제 기존 폴더를 삭제해주자.
[root@]# rm /var/lib/docker -Rf
가이드 끝!
'DevOps > Trouble Shooting' 카테고리의 다른 글
Oracle DB 트리거를 통한 로깅 (0) | 2024.07.04 |
---|