Lewati ke konten utama

Docker Prune: Panduan Lengkap dengan Contoh Praktis

Hapus container, image, volume, dan network yang tidak terpakai dengan aman menggunakan satu perintah shell. Jaga sistem tetap rapi dan rebut kembali ruang disk dengan menghapus resource Docker yang tidak digunakan.
· 11 mnt Baca

Jelajahi bersama AI

Jika Anda bekerja dengan Docker setiap hari, Anda tahu seberapa cepat ia dapat menghabiskan ruang disk.  

Seiring waktu, sistem Anda mengumpulkan image, container, volume, dan network yang tidak terpakai. Kebanyakan hanya menganggur, memakan ruang penyimpanan berharga dan berpotensi menghalangi Anda untuk mengerjakan proyek saat ini. Untungnya, Docker menyediakan perintah pembersihan bawaan yang dengan mudah menghapus resource yang tidak diperlukan.  

Perintah pembersihan ini adalah bagian dari keluarga docker prune, dan hari ini, Anda akan mempelajarinya secara lengkap. Perintah ini akan segera menjadi solusi andalan Anda untuk mengosongkan ruang disk.  

Mari mulai dengan tinjauan singkat sebelum masuk ke contoh praktis.  

Baru mengenal Docker? Lihat panduan kami tentang belajar Docker dari nol untuk profesional data agar cepat mengejar ketertinggalan.  

Apa itu Docker Prune?  

Istilah "Docker Prune" umumnya mengacu pada serangkaian perintah yang dirancang untuk membantu Anda menghapus resource Docker yang tidak terpakai dan tidak diperlukan.  

Seiring waktu, terutama jika Anda bekerja di banyak proyek, Anda akan membuat banyak image, menjalankan container, serta menyiapkan volume dan network. Semuanya menumpuk di sistem Anda, memakan ruang disk yang signifikan. Tujuan docker prune adalah membersihkan kekacauan tersebut dan merebut kembali penyimpanan.  

Meski begitu, ada lebih banyak hal tentang docker prune daripada yang terlihat.  

Ini bukan hanya satu perintah yang bisa Anda jalankan. Memang bisa, tetapi terkadang Anda memerlukan kendali yang lebih granular atas apa yang dihapus. Di sinilah artikel ini berperan. Artikel ini akan menunjukkan cara mengelola pruning secara efektif, memastikan Anda hanya menghapus apa yang Anda maksudkan, serta cara berlatih di lingkungan yang aman agar tidak sengaja menghapus data penting.  

Perlu dicatat juga bahwa perintah prune hanya menghapus resource yang tidak sedang digunakan secara aktif. Image, volume, dan network yang direferensikan oleh container yang berjalan tidak akan dihapus. Dengan kata lain, pruning tidak akan mengganggu workload aktif.  

Pada bagian berikutnya, kami akan memandu Anda melalui berbagai jenis perintah pruning dan menjelaskan bagaimana mereka cocok dalam alur kerja Anda.  

Ingin menambahkan Docker ke CV atau portofolio Anda? 10 ide proyek Docker ini akan membuat Anda siap kerja.

Semua Perintah Docker Prune dengan Contoh Praktis  

Docker menyediakan beberapa perintah prune yang memungkinkan Anda membersihkan resource yang tidak terpakai secara terpisah atau sekaligus. Di bagian ini, Anda akan mempelajarinya—baik melalui teori maupun contoh praktis.  

docker system prune  

Ini adalah perintah paling komprehensif untuk merebut kembali ruang disk. Perintah ini menghapus semua container, network, image, dan build cache yang tidak terpakai dalam satu operasi.  

Jika Anda mencari cara cepat untuk mengosongkan ruang disk dengan satu perintah, inilah yang harus digunakan.  

Anda dapat meneruskan opsi ke perintah docker system prune:  

  • -a atau --all menghapus semua image yang tidak terpakai, bukan hanya yang dangling (image yang tidak ditandai atau tidak direferensikan oleh container mana pun).  
  • --filter memungkinkan Anda menentukan nilai filter.  
  • -f atau --force melewati prompt konfirmasi.  
  • --volumes juga memangkas volume anonim bersama container, network, image, dan build cache.  

Secara default, docker system prune meminta konfirmasi karena ini merupakan operasi yang berpotensi destruktif:  

Prompt konfirmasi docker system prune

Gambar 1 - Prompt konfirmasi docker system prune

Untuk melewati prompt dan menghapus semua image, container, network, dan volume yang tidak terpakai dengan satu perintah, jalankan:  

docker system prune -a -f --volumes

Hapus semuanya dengan satu perintah docker system prune

Gambar 2 - Hapus semuanya dengan satu perintah docker system prune

Namun bagaimana jika Anda membutuhkan kendali yang lebih granular? Mari bahas selanjutnya.

docker container prune

Sederhananya, perintah ini menghapus semua container yang berhenti.

Container yang berhenti tetap ada di sistem Anda hingga dihapus secara manual. Mereka dapat memakan ruang disk dan sulit terlihat kecuali Anda menggunakan alat seperti Dashboard Docker Desktop.

Seperti docker system prune, perintah ini mendukung opsi:

  • --filter memungkinkan Anda menentukan pasangan key-value untuk mengontrol container mana yang dihapus.
  • -f atau --force melewati prompt konfirmasi.

Berikut adalah daftar container yang tidak berjalan:

Daftar container yang tidak berjalan

Gambar 3 - Daftar container yang tidak berjalan

Untuk menghapus code-server (dan container lain yang berhenti), jalankan:

docker container prune -f

Perintah ini tidak akan meminta konfirmasi, dan dalam hitungan detik, Anda akan melihat keluaran seperti ini:

Pesan keluaran pruning container

Gambar 4 - Pesan keluaran pruning container

Dan begitu saja, tidak ada lagi container yang berhenti:

Daftar container yang tidak berjalan (2)

Gambar 5 - Daftar container yang tidak berjalan (2)

Sekarang, mari bereskan image yang tidak terpakai.

docker image prune

Mirip dengan perintah sebelumnya, docker image prune menghapus image yang tidak terpakai.

Secara default, perintah ini hanya menghapus image dangling—image yang tidak bertag dan tidak terkait dengan container. Anda dapat menggunakan flag opsional untuk menghapus semua image yang tidak terpakai, bukan hanya yang dangling.

Berikut daftar opsi yang tersedia

  • -a atau --all menghapus semua image yang tidak terpakai, bukan hanya yang dangling.
  • --filter memungkinkan Anda menentukan pasangan key-value untuk mengontrol image mana yang dihapus.
  • -f atau --force melewati prompt konfirmasi.

Sekarang, mari kita lihat aksinya!

Berikut adalah daftar image yang saat ini ada di sistem:

Daftar image Docker

Gambar 6 - Daftar image Docker

Untuk menghapus semuanya dengan satu perintah, jalankan:

docker image prune -a -f

Anda akan melihat keluaran seperti ini di terminal:

Pesan keluaran pruning image

Gambar 7 - Pesan keluaran pruning image

Setelahnya, tidak ada image yang tersisa di Docker Desktop:

Daftar image Docker (2)

Gambar 8 - Daftar image Docker (2)

Selanjutnya, mari tangani volume yang tidak terpakai.

docker volume prune

Sesuai namanya, perintah docker volume prune menghapus semua volume lokal yang tidak terpakai. Dengan kata lain, perintah ini menghapus volume yang tidak direferensikan oleh container apa pun.

Secara default, perintah ini hanya menghapus volume anonim - volume tanpa nama yang dibuat oleh Docker saat container dimulai. Untuk menghapus volume yang diberi nama secara eksplisit, Anda perlu menambahkan opsi tambahan.

Berikut opsi yang tersedia:

  • -a atau --all menghapus semua volume yang tidak terpakai, bukan hanya yang anonim.
  • --filter memungkinkan Anda menentukan pasangan key-value untuk mengontrol volume mana yang dihapus.
  • -f atau --force melewati prompt konfirmasi.

Di sistem kami, ada satu volume yang dibuat pengguna dari file docker-compose.yml:

Daftar volume Docker

Gambar 9 - Daftar volume Docker

Perintah berikut menghapus semua volume lokal:

docker volume prune -a -f

Setelah menjalankannya, Anda akan melihat keluaran seperti ini:

Pesan keluaran pruning volume

Gambar 10 - Pesan keluaran pruning volume

Sekarang, tidak ada volume yang tersisa:

Daftar volume Docker (2)

Gambar 11 - Daftar volume Docker (2)

Terakhir, mari lihat cara menghapus network yang tidak terpakai.

docker network prune

Ketika container Docker berkomunikasi satu sama lain, mereka sering menggunakan network yang didefinisikan pengguna. Namun, network tersebut biasanya tetap ada di sistem Anda setelah container tersebut dihapus.

Perintah docker network prune menghapus network yang tidak lagi digunakan oleh container mana pun.

Seperti perintah prune lainnya, perintah ini menyertakan beberapa opsi:

  • --filter memungkinkan Anda menentukan pasangan key-value untuk mengontrol network mana yang dihapus.
  • -f atau --force melewati prompt konfirmasi.

Berbeda dengan image, container, atau volume, Anda tidak dapat memeriksa network secara visual melalui Docker Desktop, jadi Anda perlu bekerja dari command line. Berikut adalah daftar network yang tersedia:

Daftar network Docker

Gambar 12 - Daftar network Docker

Untuk menghapus semua network yang tidak terkait dengan instalasi Docker default, jalankan:

docker network prune -a -f

Setelah menjalankan perintah, Anda akan melihat keluaran seperti ini:

Pesan keluaran pruning network

Gambar 13 - Pesan keluaran pruning network

Network apa pun yang terkait dengan container yang sebelumnya berjalan kini telah hilang:

Daftar network Docker

Gambar 14 - Daftar network Docker

Namun, perhatikan bahwa tiga network yang tersisa penting agar Docker berfungsi dengan baik dan tidak dapat dihapus.

Dan itulah penggunaan dasar perintah docker prune! Selanjutnya, kami akan membahas topik lanjutan seperti menggunakan perintah ini dengan aman serta praktik terbaik untuk lingkungan produksi dan sensitif.

Menggunakan Docker Prune dengan Aman  

Perintah docker prune membantu dengan cepat merebut kembali ruang disk, tetapi harus digunakan dengan hati-hati, terutama di lingkungan produksi.  

Secara tidak sengaja menghapus container, image, atau volume penting dapat menyebabkan kehilangan data dan mengganggu alur kerja kritis. Untuk mencegahnya, sebaiknya pahami apa yang akan dihapus sebelum mengeksekusi perintah prune apa pun.  

Bagian ini menjelaskan tindakan pencegahan utama saat menjalankan docker prune dengan aman.  

Memahami apa yang akan dihapus  

Perintah prune dirancang untuk menghapus hanya resource yang tidak digunakan secara aktif.  

Misalnya, docker image prune hanya menghapus image dangling, dan docker volume prune hanya menghapus volume yang tidak terpasang ke container mana pun. Namun, menambahkan opsi seperti -a -f akan menghapus semua image atau volume tanpa meminta konfirmasi.  

Selain itu, di lingkungan yang kompleks, dependensi mudah terlewat, jadi memeriksa kembali sebelum pruning selalu merupakan praktik yang baik.  

Sebelum menjalankan perintah prune apa pun, Anda sebaiknya memeriksa sistem untuk melihat resource mana yang sedang digunakan. Ada beberapa cara untuk melakukannya, dan kami akan membahas yang paling umum di bagian ini.  

Gunakan perintah ini untuk menampilkan semua container, termasuk yang berhenti:  

docker ps -a

Anda akan melihat keluaran serupa dengan ini:

Daftar semua container Docker

Gambar 15 - Daftar semua container Docker

Demikian pula, gunakan perintah ini untuk mendaftar semua image, termasuk yang tidak terpakai:  

docker images

Keluaran akan terstruktur mirip dengan yang di atas:  

Daftar semua image Docker

Gambar 16 - Daftar semua image Docker

Untuk memeriksa volume, jalankan perintah ini untuk mendaftar semua volume:  

docker volume ls

Daftar semua volume Docker

Gambar 17 - Daftar semua volume Docker

Tinjau keluaran ini dengan saksama untuk memastikan tidak ada resource kritis yang akan terhapus secara keliru.  

Dry run demi keamanan  

Sayangnya, Docker masih belum memiliki opsi bawaan untuk dry run perintah prune, meskipun hal itu telah diminta bertahun-tahun lalu.  

Karena itu, Anda harus memeriksa resource secara manual menggunakan perintah yang tercantum di bagian sebelumnya sebelum menjalankan perintah prune.  

Jika Anda bekerja di lingkungan sensitif di mana persistensi data sangat penting, Anda harus selalu membuat cadangan sebelum menjalankan perintah prune yang memengaruhi volume.  

Tentu saja, ini hanya tindakan pencegahan, tetapi kami berharap opsi dry run segera diimplementasikan.

Praktik Terbaik untuk Docker Prune  

Untuk menjaga lingkungan Docker tetap bebas dari kekacauan yang tidak perlu, penting untuk menjalankan perintah prune secara rutin—bahkan mungkin mengotomatiskannya.  

Bagian ini memandu Anda melalui praktik terbaik untuk menjalankan perintah docker prune di lingkungan produksi.  

Gunakan docker prune secara rutin  

Seiring waktu, Docker mengumpulkan image yang tidak terpakai, container yang berhenti, dan volume yang tidak diperlukan—yang semuanya mengonsumsi ruang disk signifikan.  

Menjalankan perintah pruning secara berkala menjaga lingkungan Anda tetap bersih dan mencegah penggunaan disk berlebihan. Anda harus memasukkannya sebagai bagian dari jadwal pemeliharaan.  

Setiap beberapa minggu adalah titik awal yang baik, tetapi jika setup Anda melibatkan pembuatan dan penghapusan container yang sering, pertimbangkan jadwal yang lebih sering.  

Berhati-hati di produksi  

Pekerjaan apa pun di lingkungan produksi memerlukan kehati-hatian ekstra, dan pruning Docker tidak terkecuali.  

Sejenak lengah dapat menyebabkan downtime atau kehilangan data, dan Anda tentu tidak ingin bertanggung jawab atas itu. Sebelum menjalankan perintah docker prune di lingkungan produksi, selalu periksa resource sistem menggunakan docker ps -a, docker images, dan docker volume ls, seperti dijelaskan pada bagian sebelumnya.  

Selain itu, sebaiknya gunakan perintah pruning yang spesifik daripada docker system prune yang menyeluruh, karena akan lebih mudah memulihkan jika terjadi penghapusan yang tidak disengaja.  

Otomatisasikan docker prune  

Praktik baik lainnya adalah merampingkan upaya pembersihan dengan mengotomatiskan perintah docker prune menggunakan tugas terjadwal.  

Di Linux, Anda dapat menyiapkan cron job untuk menjalankan perintah secara berkala, sementara di Windows, Anda dapat menggunakan Task Scheduler untuk automasi serupa. Ini membantu menjaga sistem tetap rapi tanpa perlu intervensi manual. Namun, di lingkungan produksi, pastikan pruning otomatis tidak mengganggu workload kritis.  

Misalnya, cron job di Linux ini menjalankan perintah pruning menyeluruh setiap Minggu pukul 00:00:

0 0 * * 0 docker system prune -a -f

Pemecahan Masalah Docker Prune  

Perintah docker prune adalah solusi andalan untuk merebut kembali ruang disk, tetapi tidak selalu cukup untuk memastikan ruang memadai guna menarik image baru atau menjalankan container baru.  

Selain itu, Anda mungkin secara tidak sengaja menghapus resource penting, jadi penting untuk membahas strategi pemulihan.  

Kedua topik tersebut akan dibahas di bagian ini.  

Mengalami masalah ruang disk  

Image Docker bisa berukuran besar—baru-baru ini kami memiliki satu berukuran lebih dari 13GB—dan kami yakin ada yang lebih besar lagi. Jadi, bahkan setelah menjalankan docker prune, Anda mungkin mendapati sistem masih kekurangan ruang disk.  

Untuk melihat secara tepat berapa banyak ruang yang digunakan oleh image, container, dan volume, jalankan perintah ini:  

docker system df

Ruang yang digunakan oleh Docker

Gambar 18 - Ruang yang digunakan oleh Docker

Saat merebut kembali ruang disk dengan perintah docker prune, tambahkan flag -a untuk menghapus semua image, volume, atau container—bukan hanya yang dangling atau anonim. Tentu, ingat potensi kekurangan dari pendekatan ini.  

Jika masalah ruang disk tetap ada, satu-satunya opsi Anda adalah menambah ruang disk yang tersedia.  

Memulihkan dari penghapusan tidak sengaja

Pemulihan lebih mudah diucapkan daripada dilakukan—itulah sebabnya kami menyarankan untuk memahami apa yang akan dihapus oleh pruning sebelum menjalankan perintah sebenarnya.  

Namun, jika Anda berada dalam situasi di mana Anda secara tidak sengaja memangkas container, image, atau volume penting, mulailah dengan memeriksa log untuk mengidentifikasi apa yang dihapus.  

Di macOS, ini dapat dilakukan dengan menjalankan dua perintah berikut (opsi untuk Windows dan Linux):  

pred='process matches ".*(ocker|vpnkit).*" || (process in {"taskgated-helper", "launchservicesd", "kernel"} && eventMessage contains[c] "docker")'
/usr/bin/log stream --style syslog --level=debug --color=always --predicate "$pred"

/usr/bin/log show --debug --info --style syslog --last 30m --predicate "$pred" >/tmp/logs.txt

Menjalankan perintah ini akan menyimpan 30 menit terakhir log terkait Docker ke /tmp/logs.txt. Anda harus memeriksa log ini untuk menentukan container atau image mana yang dihapus.  

Untuk image yang dihapus, Anda kemungkinan dapat menariknya lagi dari registry seperti Docker Hub. Perintah seperti ini seharusnya berhasil:  

docker pull <image_name>

Dan untuk container yang dihapus, Anda selalu dapat membuatnya kembali jika berbasis pada image yang persisten:  

docker run --name <container_name> <image_name>

Sebagai alternatif, Anda dapat memulihkan dari cadangan jika tersedia, yang dapat digunakan untuk memulihkan data volume dan container. Ke depan, pertimbangkan menggunakan alat untuk snapshot volume guna mencegah kehilangan data.  

Namun, strategi terbaik adalah memeriksa resource yang akan dihapus sebelum menjalankan perintah pruning dan hanya melanjutkan jika Anda benar-benar yakin tidak akan memengaruhi alur kerja Anda.  

Ringkasan Docker Prune  

Sebagai penutup, keluarga perintah docker prune adalah cara yang ampuh untuk merebut kembali ruang disk, tetapi disertai risiko secara tidak sengaja menghapus resource yang Anda butuhkan, sehingga menyebabkan kehilangan data. Risiko ini bahkan lebih besar saat menggunakan flag opsional -a -f, yang akan menghapus semuanya secara paksa.  

Namun demikian, pruning tetap menjadi metode andalan untuk menjaga sistem Anda tetap bersih dan teratur.  

Anda hanya perlu berhati-hati, terutama di lingkungan produksi. Gunakan perintah seperti docker ps -a, docker images, dan docker volume ls sebelum pruning untuk mendaftar semua container, image, dan volume. Jalankan perintah pruning hanya setelah Anda yakin tidak masalah menghapus resource yang terdaftar (dengan asumsi resource tersebut tidak digunakan oleh container yang berjalan).  

Jika Anda ingin mempelajari lebih lanjut tentang Docker, containerization, dan orkestrasi container, lihat kursus-kursus berikut di DataCamp:

FAQs

Apakah docker prune aman?

Secara umum, ya, tetapi harus digunakan dengan hati-hati. Perintah ini hanya menghapus resource yang tidak digunakan, namun menjalankannya tanpa pengecekan dapat menyebabkan penghapusan tidak sengaja, terutama di lingkungan produksi. Flag tambahan seperti -a -f akan menghapus semua resource yang tidak terpakai secara paksa. 

Apa perbedaan antara docker prune dan docker rm?

docker prune menghapus semua resource yang tidak terpakai untuk jenis tertentu, sementara docker rm digunakan untuk menghapus container atau image tertentu secara manual.

Apakah docker system prune menghapus semuanya?

Tidak, docker system prune menghapus container, network, image, dan build cache yang tidak terpakai, tetapi tidak menghapus volume bernama kecuali flag --volumes ditentukan setelah perintah. 

Apa itu dangling image di Docker?

Dangling image adalah image yang tidak bertag atau tidak direferensikan oleh container mana pun. Ini biasanya sisa image intermediate dari proses build dan dapat dihapus dengan aman menggunakan perintah docker image prune. 

Dario Radečić

Penulis

Dario Radečić

Senior Data Scientist yang berbasis di Kroasia. Penulis Tekno Teratas dengan lebih dari 700 artikel yang telah diterbitkan, menghasilkan lebih dari 10 juta tayangan. Penulis buku Machine Learning Automation with TPOT.

Topik

Terkait

blogs

40 Pertanyaan Wawancara DBMS Teratas di 2026

blogs

Spaghetti Plot dan Jalur Badai

blogs

Tutorial Korelasi di R