minseok0917

Docker 환경에서 MongoDB 장애 해결: 디스크 용량 및 권한 문제 대처 방법

현재 진행 프로젝트에서 도커로 몽고DB를 띄워서 사용하는데 갑자기 몽고DB가 죽었다.
그 원인을 찾기 위해 도커 로그도 보고 그랬는데 최종적으로는 용량이 다 찼다는 결론이 나왔다.

리눅스 자체에서 특정 경로에 용량을 많이 할당할 수 있는데, 나는 개발용이고 귀찮아서 volumn을 넣어두지 않은 상태였다.
그러다가 용량이 꽉차서 몽고DB가 죽은거라, VSCode SSH로 접속해서 docker-compose에 volumn을 추가 할 생각이였다.

회사에서 주로 VSCode를 사용해서 SSH로 리눅스 서버에 접속하서 도커 코드를 작성하곤 하는데
호스트 주소랑 아이디, 패스워드를 정확하게 입력했는데도 계속 접속이 안되는 상황이 생겼다.

MobaXterm이라는 Linux서버 접속 하는 계정을 간단하게 관리할 수 있는 소프트웨어를 putty 대신 사용하고 있는데
VSCode SSH로는 접속이 안됐는데 여기는 접속이 가능해서 무언가 이상함을 느꼈다.

리눅스에서 디스크 용량을 찍어보니 전체 용량을 다 사용을 하고 있는 상태였다.
VSCode에서는 SSH 서버 접속할 때 접속하는 유저 경로로 .vscode-server라는 파일로 새로운 파일을 설치하는데
설치 과정에서 이미 용량이 100% 였기에 아이디, 패스워드를 정확하게 입력해도 설치가 되지 않아서 로그인이 되지 않았던 것이다.

  • 리눅스 시스템 사용 용량: df
  • 도커 시스템 사용 용량: docker system df

회사에서 도커를 많이 사용하는데 docker ps -a | grep Exit로 비사용 컨테이너를 조회하니 꽤 많았다.
계속 쓰는것도 아니고 개발용으로 사용하고 냅두는 곳이라서, 컨테이너만 제거하기로 했다.

  • 모든 리소스 정리: docker system prune -a --volumes
  • 빌드 캐시 정리: docker builder prune
  • 비사용 볼륨 정리: docker volume prune
  • 비사용 컨테이너 정리: docker container prune
  • 비사용 이미지 정리 : docker image prune -a

비사용 컨테이너만 싹 정리했는데, 69GB 정도의 컨테이너가 사라졌고 이로써 VSCode SSH 접속이 가능해졌다.
그리고 몽고DB로 volumn을 용량 많은 곳으로 연결해서 새로 살려뒀다. 근데 또 죽는 상황이 생겼다.
로그를 파악해보니깐 몽고DB 도커에서 volumn으로 쓰기 권한이 없어서 권한 에러가 뜨는 거였다.

현재 내 리눅스 계정 권한정도면 되서 id라고 커맨드를 써서 uid의 있는 번호를 보고
docker-compose에서 user: "uid" 이렇게 작성하면 쓰기 권한 이슈도 해결됐다.