ec2 인스턴스에 오랜만에 ssh로 접속하여 서버를 띄우려 했더니 위의 에러가 발생했다. 분명 보름전에 띄웠을 땐 접속이 잘 되었는데, 어디가 문제인지 몰라서 구글링해보니 ec2 용량이 없다는 것이다.
보는 강의나 책마다 이미지와 컨테이너 관리를 왜 그렇게 신경쓰나 했더니 이렇게 금방 용량이 다 차는 모양이다. 프리티어로 t2.micro이니 그럴만도 한데, 해결을 하려니 막막했다. 하긴 ec2에 프로메테우스와 jenkins, grafana까지 모두 띄워놨으니 로그만해도 엄청날 것이라 생각이 들었다.
1. sudo apt-get autoremove
일단 구글링으로 찾은 이 명령어는 apt-get한 패키지를 삭제하는 것인데, nginx를 띄우기 위해 무분별하게 설치했던 것이 떠올라 실행해봤다. 하지만 아래의 에러코드를 받을 수 있었다.
Reading package lists... Error! E: Write error - write (28: No space left on device) E: IO Error saving source cache E: The package lists or status file could not be parsed or opened.
이것은 저 명령어도 실행할 수 없을만큼 용량이 차있다는 뜻이었다.
filesystem을 확인해보니 100%로 찍혀있고 7.9G를 사용중이었다. 이미지 크기는 719M밖에 안되는데....
2. 로그, 임시파일 제거
그래서 일단 위의 명령어를 실행하기 위해 임시파일과 캐시, 로그를 삭제해봤다.
- 임시 파일 삭제
sudo rm -rf /tmp/*
sudo rm -rf /var/tmp/*
- APT 캐시 강제 삭제
sudo rm -rf /var/cache/apt/*
sudo rm -rf /var/lib/apt/lists/*
- Docker 로그 및 임시 데이터 삭제
sudo rm -rf /var/lib/docker/containers/*/*-json.log
sudo rm -rf /var/lib/docker/tmp/*
세가지 방식의 명령어를 입력하고 나서야 위의 apt-get 패키지를 삭제하고 정상적으로 애플리케이션을 띄울 수 있었다.
/usr 의 크기가 너무 비대해진게 원인인 것 같은데, 일단 nginx를 띄우기 위해 불필요한 volume을 사용하기도 했고, 이미 띄웠는데, cert-bot 이미지가 계속 필요한지도 알아봐야겠다.
'내용 복습 > devOps' 카테고리의 다른 글
'도커 교과서' 1~2장 정리 (4) | 2024.11.02 |
---|---|
도커를 이용해 Containerize하는 과정 (0) | 2024.05.10 |
Docker 개념 알아보기 - Dockerfile, Image, Container (0) | 2024.05.10 |
Github Actions - CICD (0) | 2024.05.09 |
AWS 기초 - https 쓰는 방법 (0) | 2024.05.08 |