개발자를 위한 저장 공간 가이드

맥에서 Docker가 용량을 차지하고 있습니다

Docker Desktop은 모든 것을 하나의 파일에 담습니다. 빌드할 때마다 커지고, 이미지를 지워도 작아지지 않습니다. 그 이유와, 실제로 공간을 되찾는 방법을 설명합니다.

14일 무료 체험, 카드 필요 없음. 이후 3대에 15달러 한 번. macOS와 리눅스.

맥 홈 폴더에서 Docker 디스크 이미지가 압도적인 비중을 차지하는 Bytesweep 트리맵

공간이 있는 곳

macOS에서 Docker Desktop은 리눅스 가상 머신을 실행하며, 그 가상 머신의 파일 시스템 전체가 맥 위의 스파스 파일 하나입니다:

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

논리적 크기가 아니라 디스크상 실제 크기를 확인하세요. 논리적 크기는 언제나 Docker에 허용한 최대치입니다:

du -h -d0 ~/Library/Containers/com.docker.docker/Data/vms/0/data/

이미지를 지워도 줄지 않는 이유

이미지를 제거하면 가상 머신 파일 시스템 내부의 블록이 해제되지만, 맥의 파일은 크기를 유지합니다. 이미 그만큼을 macOS로부터 가져갔기 때문입니다. 최근 Docker Desktop은 가상 머신 안에서 TRIM을 보내 macOS가 해제된 블록을 회수하게 하지만, 그것은 prune한 순간이 아니라 Docker의 일정에 따라 일어납니다. 그때까지는 docker system df 가 수 기가바이트를 해제했다고 보고하는 동안 Finder는 아무 변화도 보여주지 않습니다.

공간 되찾기

파괴적이지 않은 순서대로입니다.

1. Docker가 무엇을 쓰고 있다고 보는지 확인

언제나 여기서 시작하세요. 이미지, 컨테이너, 볼륨, 빌드 캐시로 나누어 각각 얼마나 회수 가능한지 알려줍니다.

docker system df -v

2. 빌드 캐시 비우기

이미지를 자주 빌드하는 머신에서는 보통 이것이 가장 큰 단일 항목이면서 제거하기 가장 안전합니다. 다음 빌드가 느려질 뿐입니다.

docker builder prune -a

3. 정말로 쓰이지 않는 것 정리

멈춘 컨테이너, 떠 있는 이미지, 쓰이지 않는 네트워크:

docker system prune

다음을 붙이면 -a 실행 중인 컨테이너가 쓰지 않는 이미지까지 모두 제거됩니다. 나중에 다시 받아야 한다는 뜻입니다. 다음 옵션은 --volumes 확신이 있을 때만 붙이세요: 볼륨에는 데이터베이스의 데이터가 들어 있습니다. 이 페이지에서 다시 내려받을 수 없는 것을 파괴하는 유일한 명령입니다.

4. 손대기 전에 볼륨 목록 확인

실제로 무엇이 사라질지 확인하세요:

docker volume ls
docker volume ls -f dangling=true

Docker만 있는 경우는 드뭅니다

이 페이지의 명령을 전부 실행할 수 있지만, 같은 맥에서 Xcode의 DerivedData와 잊고 있던 모델 가중치가 대개 비슷하게 큽니다. Bytesweep은 Docker의 디스크상 실제 크기를 그 모두와 나란히 10초 만에 측정하므로, 도구 하나하나를 쫓는 대신 디스크를 한 번에 정리할 수 있습니다.

5. macOS가 파일을 회수하게 하기

prune 이후, 해제된 블록을 돌려주는 공식적인 방법이 Docker Desktop에 있습니다: 설정 → 리소스 → 고급 → 디스크 사용량, 또는 Docker Desktop을 종료했다 다시 열면 시작할 때 TRIM이 실행됩니다. 1분쯤 기다렸다가 파일 크기를 다시 확인한 뒤에 효과가 없었다고 판단하세요.

6. 디스크 한도 낮추기

다음 위치의 설정 → 리소스에서 가상 디스크 한도는 Docker.raw가 얼마나 커져도 되는지를 정합니다. 낮춘다고 그 자체로 공간이 생기지는 않지만, 문제의 상한을 정할 수 있습니다. 「혹시 몰라서」 올린 것이 그 파일이 64GB가 된 이유입니다.

7. 최후의 수단

설정 → 문제 해결 → Clean / Purge data 는 가상 머신의 디스크를 완전히 초기화해 파일을 거의 0으로 되돌립니다. 가지고 있는 모든 이미지, 컨테이너, 볼륨이 지워집니다. 다른 방법이 통하지 않고, 볼륨에 무엇이 있는지 알고 있을 때 쓰세요.

Finder에서 Docker.raw를 지우지 마세요. 캐시 파일이 아니라 Docker 설치 전체의 데이터이며, Docker가 실행 중일 때 제거하면 결국 초기화가 필요한 상태로 가상 머신이 남을 수 있습니다.

함께 확인할 것

Docker 혼자인 경우는 드뭅니다

Docker가 50GB에 이른 맥이라면 Xcode의 DerivedData와 로컬 AI 모델이 대개 바로 뒤를 잇습니다. 공간을 되찾을 생각이라면, 하나씩 고치기보다 디스크 전체를 한 번 재보는 편이 낫습니다. 전체 목록 →

리눅스에는 이미지 파일이 없습니다

리눅스의 Docker는 다음 위치에 직접 기록하므로, /var/lib/dockerprune하면 공간이 곧바로 생기고 위의 TRIM 문제는 해당되지 않습니다. 리눅스 디스크 정리 →

Docker를 나머지 전부와 함께 보기

Bytesweep은 Docker의 디스크상 실제 크기를 측정해 Xcode, 시뮬레이터, node_modules, 모델 가중치와 나란히 보여주고, 볼륨은 건드리지 않은 채 안전하게 지울 수 있는 것을 표시합니다.

자주 묻는 질문

Docker.raw를 지워도 안전한가요?

Finder에서는, 그리고 Docker가 실행 중일 때는 안전하지 않습니다. 그 파일 하나가 여러분이 가진 모든 이미지와 컨테이너, 볼륨입니다. 정말 새로 시작하고 싶다면 Docker Desktop의 문제 해결 → Clean / Purge data를 쓰세요. 같은 일을 Docker가 아는 방식으로 해줍니다.

docker system prune이 20GB를 해제했다는데 아무것도 달라지지 않은 이유는?

가상 머신 파일 시스템 안에서 20GB를 해제한 것이지 맥에서 해제한 것이 아니기 때문입니다. TRIM이 실행되어 macOS가 블록을 회수할 때까지 파일은 크기를 유지합니다. Docker Desktop을 종료했다 다시 열면 대개 실행됩니다.

docker system prune이 제 데이터베이스를 지우나요?

다음을 붙였을 때만 그렇습니다: --volumes. 이 옵션이 없으면 볼륨은 건드리지 않습니다. 붙이면 컨테이너에 연결되지 않은 볼륨은 모두 사라지며, 멈춰 있는 데이터베이스의 볼륨도 연결되지 않은 것으로 간주됩니다.

Docker.raw는 어느 정도 크기가 적당한가요?

정답은 없지만, 활성 프로젝트가 몇 개 있는 머신이라면 15~25GB가 보통이고, 60GB라면 빌드 캐시를 한 번도 비우지 않았다는 뜻입니다. 이미지 탓이라고 단정하기 전에 다음으로 확인하세요: docker system df -v 입니다.