ㅇ.ㅇ
[Docker] 도커 시스템 공간 확보 본문
Docker 임시 파일 및 빌드 캐시 안전하게 정리하는 방법
Docker에서 작업을 지속하면서 tmp 파일이나 빌드 캐시가 쌓여 용량을 차지하거나 비정상적인 데이터를 포함할 수 있다. 우선 나 같은 경우에는 tmp쪽에 용량이 없다는 에러 메시지가 나와서 용량이 큰 이미지를 pull 받을 수 없었다. 그럼 이러한 파일들을 정리하고, 시스템 공간을 확보하는 방법을 알아보자.
1. 사용하지 않는 컨테이너, 네트워크, 볼륨, 이미지 정리
아래 명령어는 모든 불필요한 리소스를 삭제할 수 있다.
-- (1) 사용하지 않는 컨테이너 정리
docker container prune
-- 중지된 상태의 모든 컨테이너를 삭제
-- (2) 사용하지 않는 네트워크 정리
docker network prune
-- 사용되지 않는 모든 네트워크를 삭제
-- (3) 사용하지 않는 볼륨 정리
docker volume prune
-- 어떤 컨테이너에서도 사용되지 않는 모든 볼륨을 삭제
-- (4) 사용하지 않는 이미지 정리
docker image prune
-- 태그가 없는 중간 이미지(다른 이미지가 의존하지 않는 이미지)를 삭제
-- (5) 사용하지 않는 모든 리소스를 한 번에 정리
docker system prune
-- 여기에서 리소스는 중지된 컨테이너, 사용되지 않는 네트워크, dangling 이미지, 볼륨을 의미
- 주의 : 필요한 이미지나 볼륨도 삭제될 수 있으니 확인 또 확인을 한 후 정리해야한다.
개인적으로, 이렇게 prune으로 지우는 것보다는 ls 명령어로 목록을 확인 후 불필요한 데이터들을 하나씩 삭제하는 게 안전하다고 생각한다. 그런데 너무 많은.. 너무 출처를 모르는 데이터가 많이 쌓였다면 한번씩 중요 데이터들은 백업하고 정리하는 것도 좋을 것이다.
2. Docker 임시 파일 경로에서 수동 삭제
Docker는 일반적으로 Linux 시스템의 /var/lib/docker/tmp 디렉터리에 임시 파일을 저장한다. 그러므로 이 디렉터리의 비정상 파일을 직접 확인하고 삭제할 수 있다.
sudo rm -rf /var/lib/docker/tmp/*
- 주의 : Docker 엔진이 실행 중인 상태에서 삭제 작업을 수행하면 작업 중단이 발생할 수 있으므로 중요한 작업이 없는 상태에서 실행해야 한다.
/var/lib/docker/tmp/ 디렉터리 외에도 시스템별 차이로 다른 경로가 있을 수 있으니, docker info 명령어로 Docker 데이터 경로를 확인하는 방법도 있다.
3. Docker 빌드 캐시 정리
Docker 빌드 캐시는 이미지 빌드 중 중간 결과물을 캐싱하여 향후 빌드 속도를 높이기 위해 사용된다. 그래서 빌드 캐시를 정리하여 디스크 공간을 확보 할 수 있다.
docker builder prune
--all: 사용 중인 캐시까지 포함해 모든 빌드 캐시를 삭제
docker builder prune --all
--filter: 특정 조건(예: until=24h)에 따라 캐시를 삭제
docker builder prune --filter "until=24h"
--force: 확인 절차 없이 즉시 삭제를 진행
docker builder prune --force
시스템 디스크 사용량 확인
docker system df
이 명령어는 현재 Docker 시스템에서 사용 중인 디스크 공간을 한눈에 보여준다. 이미지, 컨테이너, 로컬 볼륨 및 캐시된 빌드 데이터의 디스크 사용량을 개별적으로 보여주고, 각각 얼마나 많은 공간을 차지하는지 확인할 수 있다.
- TOTAL : 자원의 총 개수
- ACTIVE : 현재 사용 중인 자원 개수
- SIZE : 자원이 차지하고 있는 총 디스크 공간
- RECLAIMABLE : docker system prune을 통해 삭제할 수 있는 디스크 공간 - dangling이 차지하는 용량
또한 --verbose 옵션을 사용하면 순서대로 모든 이미지, 컨테이너, 볼륨, 캐시 순으로 자세하게 ID, 이름, 사용량, 상태 등을 알 수 있다. 불필요한 자원을 식별하고 바로바로 정리하는데 유용하다.
'Docker' 카테고리의 다른 글
[Docker] lazydocker 설치 방법 (0) | 2024.11.17 |
---|---|
[Docker] Docker 컨테이너에서 파일 추출하기 (1) | 2024.11.08 |
[Docker] Postgres 컨테이너 실행 에러: initdb not found (0) | 2024.11.07 |
[Docker] Tomcat 컨테이너 실행 에러 cannot find setclasspath.sh (3) | 2024.11.01 |
[Docker] Docker 컨테이너 실행 오류 Failed to Setup IP Tables (1) | 2024.11.01 |