Levo 가이드 · 개발자: 기타

Mac에서 Docker가 디스크 공간을 너무 많이 쓸 때

Mac의 Docker는 모든 것을 큰 가상 디스크 파일 하나인 Docker.raw에 저장해요. 이 파일은 커지기만 하고 저절로 줄지 않아요. 무엇이 쓰는지는 docker system df로 확인하고, 비우려면 docker system prune와 docker builder prune를 쓰세요.

Docker 이미지와 빌드 캐시가 각각 크기와 이유와 함께 표시된 Levo의 Ready to free 목록
항목확인 방법지워도 되나요?
중지된 컨테이너docker ps -a네. 안에 있는 게 필요하지 않다면요
사용하지 않는 이미지docker images네. 필요할 때 받거나 다시 빌드해요
빌드 캐시docker builder du네. 다음 빌드가 느려져요
볼륨docker volume ls주의. 데이터베이스가 여기에 있어요
디스크 파일~/Library/Containers/com.docker.docker/Data/vms/0/data/Docker.raw직접 지우면 안 돼요

Docker.raw가 큰 이유

컨테이너는 작은 Linux VM에서 실행되고, VM의 디스크는 Mac 위의 파일 하나예요. Docker Desktop은 최대 크기(보통 60GB 이상)를 정하고, 이미지를 받고 빌드할수록 파일이 그쪽으로 커져요. Finder에서는 희소 파일이라서 실제보다 훨씬 커 보일 수 있어요. ls -lh는 최대 크기를, du -sh는 실제로 쓰는 양을 보여 줘요.

문제는 이미지를 지우면 VM 안의 공간은 비워지지만 Mac 위의 파일이 바로 줄지 않는다는 거예요. 최근 Docker Desktop은 비워진 블록을 macOS에 돌려주지만, 오래된 환경이나 많이 쓰고 지운 뒤에는 Settings › Resources에서 디스크 크기를 조정하거나 초기화해야 할 수도 있어요.

직접 하는 방법

무엇이 공간을 쓰는지 보기

docker system df
docker system df -v

첫 번째 명령은 이미지, 컨테이너, 볼륨, 빌드 캐시의 합계를 RECLAIMABLE 열과 함께 보여 줘요. 두 번째는 각각을 나열해요. 빌드 캐시는 눈에 띄지 않는 존재로, 몇 주 빌드하고 나면 가장 큰 항목인 경우가 많아요.

비우기

docker container prune
docker image prune -a
docker builder prune
docker system prune

볼륨에는 데이터베이스, 업로드한 파일, compose 파일이 이름 있는 볼륨에 마운트한 것이 있어요. docker system prune --volumes는 지금 어떤 컨테이너도 쓰지 않는 모든 볼륨을 지워요. 다음 주에 열 프로젝트의 Postgres도 포함돼요. docker volume ls로 나열하고, 확인한 뒤에 docker volume rm <name>로 하나씩 지우세요.

공간을 macOS에 돌려주기

prune한 뒤 실제 크기를 다시 확인하세요.

du -sh ~/Library/Containers/com.docker.docker/Data/vms/0/data/Docker.raw

그래도 크다면 Docker Desktop을 열고 Settings › Resources에서 Virtual disk limit를 낮추거나, Troubleshoot › Clean / Purge data를 선택해 처음 상태로 돌리세요. 후자는 모든 이미지, 컨테이너, 볼륨을 지워요. Docker가 실행 중일 때 Docker.raw를 휴지통으로 끌어다 놓지 마세요. 안의 모든 것을 잃고 VM이 손상될 수 있어요.

OrbStack, Colima, Podman

모두 Docker API를 쓰기 때문에 같은 명령이 동작해요. 다른 건 디스크의 위치예요.

Docker를 더는 쓰지 않는다면 Mac에서 Docker 삭제하는 방법을 참고하세요. 나머지 툴체인까지 넓게 살펴보려면 개발자 디스크 정리가 있어요.

Levo는 이렇게 해요

Levo는 Docker 이미지와 빌드 캐시를 Ready to free에서 별도의 종류로 크기와 이유와 함께 보여 줘요. 디스크의 최신 인덱스로 찾기 때문에 명령을 실행하지 않아도 보이고, 네 가지 prune 명령 중 무엇을 쓸지 기억할 필요도 없어요.

무엇이 안전한지는 내 에이전트가 판단해요. 아무것도 쓰지 않는 이미지와 빌드 캐시는 흔한 후보예요. 볼륨에는 되찾을 수 없는 데이터가 있을 수 있으니 직접 확인하세요. Levo는 사용 중인 것은 절대 정리하지 않아요. 에이전트는 읽기만 하고, 지우는 건 다시 확인한 뒤 Levo가 해요.

정리 수준을 고르고, 지울 것을 선택한 다음 Clean up을 누르세요. Levo로 Docker Desktop을 삭제하면 확인 단계에서 큰 잔여 파일이 목록으로 나와서 사라지기 전에 볼 수 있어요. 웹 개발자를 위한 Levo를 참고하세요. 정리는 두 번까지 무료이고, 그다음은 평생 라이선스예요.

자주 묻는 질문

docker system prune을 실행해도 안전한가요?

컨테이너, 네트워크, dangling 이미지, 빌드 캐시는 안전하지만 다음 빌드가 느려지고 일부 이미지는 다시 받아요. --volumes를 붙이지 않으면 볼륨은 건드리지 않아요. 조심해야 할 건 이 플래그예요.

이미지를 지웠는데 Docker.raw가 왜 여전히 큰가요?

이 파일은 희소 파일이라 VM 안의 공간이 비워져도 항상 줄지는 않아요. 실제 크기는 du -sh로 확인하세요. 여전히 크다면 Docker Desktop의 Resources 설정에서 가상 디스크 한도를 낮추거나 데이터를 삭제하세요.

Docker.raw를 지워도 되나요?

Docker를 실행한 상태에서 Docker Desktop의 Troubleshoot 메뉴로 하거나, 종료하고 삭제한 뒤에만 가능해요. 파일을 직접 지우면 안의 모든 이미지, 컨테이너, 볼륨이 사라져요.

Mac에서 Docker에는 공간이 얼마나 필요한가요?

무엇을 실행하느냐에 따라 달라요. 이미지를 많이 빌드한다면 20~60GB를 예상하세요. Docker Desktop의 가상 디스크 한도가 상한이에요.

OrbStack은 Docker Desktop보다 디스크를 적게 쓰나요?

보통 그래요. 필요에 따라 늘고 줄고 macOS와 파일을 공유하기 때문이에요. 그래도 이미지, 빌드 캐시, 볼륨은 유지하니까 docker system df와 prune은 거기서도 적용돼요.