Disk VPS Penuh karena Docker? Bersihkan Aman dengan docker system prune

 


VPS Anda menolak menulis file dan menampilkan No space left on device, padahal aplikasi tidak bertambah banyak. Tersangka yang sering luput adalah Docker: image lama, container berhenti yang belum dihapus, dan build cache yang membesar.

Sebelum menghapus apa pun, lihat dulu ke mana ruang itu pergi:

docker system df

Keluaran perintah ini dibagi per jenis — Images, Containers, Local Volumes, Build Cache — lengkap dengan kolom RECLAIMABLE, yaitu ruang yang bisa dibebaskan.


Prune aman: hanya yang tidak dipakai yang hilang

Perintah pembersih standar, dan yang paling aman untuk pemakaian rutin, adalah:

docker system prune

Docker meminta konfirmasi dulu, lalu menghapus container yang sudah berhenti, network yang tidak dipakai, image yang menggantung (dangling), dan build cache yang tidak dipakai. Container yang sedang berjalan tidak disentuh, dan volume tidak dihapus sama sekali. Itulah yang membuat perintah ini aman: data di dalam volume tetap utuh.

Tanpa konfirmasi — hanya untuk skrip yang sudah Anda periksa — tambahkan -f:

docker system prune -f

Hasil yang diharapkan: baris Total reclaimed space di akhir keluaran. Jalankan docker system df lagi dan bandingkan angkanya.

Garis merah: --volumes dan -a

Di sinilah orang paling sering salah langkah. Menambahkan --volumes:

docker system prune --volumes

akan menghapus volume anonim yang tidak dipakai, yaitu volume yang dibuat tanpa nama eksplisit. Volume bernama yang tidak dipakai justru tetap dipertahankan perintah ini; menghapusnya perlu docker volume prune --all, yang jauh lebih berisiko. Aturannya sederhana: jangan menambahkan --volumes sebelum memeriksa docker volume ls dan yakin volume itu memang sampah. Database, upload pengguna, dan state aplikasi hidup di volume.

Flag -a juga patut diwaspadai:

docker system prune -a

Perintah ini menghapus semua image yang tidak dipakai, bukan hanya yang dangling, sehingga image yang masih dibutuhkan harus di-pull ulang. Jalankan docker images dulu sebelum memakai -a.

Bersihkan per komponen bila perlu

Tidak selalu perlu sapu bersih. Perintah per komponen ini berguna bila Anda tahu bagian mana yang membengkak:

docker container prune
docker image prune
docker network prune
docker builder prune

Masing-masing menghapus container berhenti, image dangling, network tak terpakai, dan build cache. Untuk membatasi usia objek yang dihapus — misalnya hanya yang dibuat lebih dari 7 hari lalu — tambahkan filter:

docker system prune --filter "until=168h"

Jadwalkan agar tidak menumpuk lagi

Jadwalkan prune standar lewat cron (atau systemd timer mingguan sebagai alternatif), misalnya tiap Minggu pukul 03:00, dengan menambahkan baris ini lewat crontab -e:

0 3 * * 0 docker system prune -f

Jangan pernah menjadwalkan --volumes atau -a secara otomatis tanpa pemantauan.

Kesalahan umum

  • Ruang tidak berkurang: kemungkinan besar ruang itu ada di volume bernama atau log container. Periksa docker volume ls dulu.
  • Container penting ikut terhapus: prune hanya menghapus container yang berhenti. Kelola lewat Docker Compose agar mudah dinyalakan ulang.

Tabel ringkasan

PerintahYang dihapusRisiko data
docker system pruneContainer berhenti, network tak terpakai, image dangling, build cacheRendah, volume aman
docker system prune -fSama, tanpa konfirmasiRendah, bila perintah sudah diperiksa
docker system prune -aDitambah semua image tak terpakaiSedang, perlu pull ulang
docker system prune --volumesDitambah volume anonim tak terpakaiTinggi bila belum diperiksa
docker volume prune --allSemua volume tak terpakai, termasuk bernamaSangat tinggi, backup dulu

Checklist akhir

  • docker system df dijalankan sebelum dan sesudah prune
  • docker volume ls diperiksa sebelum memakai --volumes
  • Tidak ada container berjalan yang terganggu
  • Ruang kosong disk bertambah sesuai Total reclaimed space

Bagian Docker apa yang paling banyak memakan disk di VPS Anda — image, build cache, atau volume? Ceritakan hasil docker system df Anda di komentar.

Baca juga: Docker Compose untuk Self-Hosting dari Nol untuk mengelola container agar mudah dinyalakan ulang, dan Docker Volume dan Backup: Jangan Sampai Data Hilang sebelum Anda menyentuh volume apa pun.

Komentar