
CoderToDataDocker "Phình Bụng" & Lỗi File .VHDX Không Chịu Thu Nhỏ: Hướng Dẫn Xử Lý Triệt Để

Docker “phình bụng” là chuyện rất hay gặp đối với anh em lập trình viên. Ảnh build cũ, container stop, volume rác… tích tụ lâu ngày sẽ khiến ổ cứng báo đỏ ngay lập tức. Nếu bạn đang đối mặt với tình trạng "Disk Full", hãy làm theo các bước từ an toàn đến "mạnh tay" dưới đây.
1. Kiểm tra "thủ phạm" đang chiếm dung lượng
Trước khi dọn dẹp, bạn cần soi rõ xem thành phần nào đang ngốn dung lượng nhất bằng lệnh:
docker system dfBạn sẽ thấy các thông số về: Images (Ảnh build), Containers, Local Volumes và đặc biệt là Build Cache.

2. Các bước dọn rác Docker an toàn
Dọn dẹp Container và Image cũ
Xóa các container đã dừng và network không dùng đến:
docker container pruneXóa các image không còn được sử dụng (dangling images):
docker image pruneDọn Build Cache (Thủ phạm chính)
Nếu bạn thường xuyên build dự án (Next.js, Laravel, Node.js), Build Cache có thể lên tới hàng chục GB. Để giải phóng ngay:
docker builder pruneHoặc dọn sạch toàn bộ cache (mạnh tay hơn):
docker builder prune -a3. Xử lý triệt để lỗi ổ đĩa không giảm trên Windows (WSL2)
Một vấn đề gây ức chế là dù bạn đã dọn dẹp bên trong Docker, dung lượng ổ đĩa vật lý (ổ C hoặc D) vẫn không giảm. Đó là do file đĩa ảo .vhdx của WSL2 chỉ có thể nở ra chứ không tự co lại.
Cách 1: Thu nhỏ file .vhdx (Dành cho Windows Pro/Enterprise)
Nếu bạn có Hyper-V, hãy tắt Docker hoàn toàn và chạy lệnh sau trong PowerShell (Quyền Admin):
wsl --shutdown
Optimize-VHD -Path "D:\Docker Data\...\disk\docker_data.vhdx" -Mode Full
Lưu ý: Nếu gặp lỗi "Optimize-VHD is not recognized", nghĩa là bạn đang dùng Windows Home. Hãy dùng Cách 2.
Cách 2: Reset Disk Image (Đơn giản nhất, dùng được cho Windows Home)
Đây là cách nhanh nhất để "làm mới" hoàn toàn ổ đĩa Docker:
- Mở Docker Desktop -> Settings -> Resources.
- Tìm mục Disk image location.
- Chọn Clean / Reset Disk Image.
Cách này sẽ xóa sạch các image/container hiện tại (không mất code dự án) và giải phóng 100% dung lượng ảo.
Bạn cần tối ưu Dockerfile? Nếu bạn đang dùng Next.js, Laravel hay Fullstack và muốn build nhanh, nhẹ hơn, hãy để lại bình luận phía dưới nhé!