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.
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.
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:
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:
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:
Gambar 3 - Daftar container yang tidak berjalan
Untuk menghapus code-server (dan container lain yang berhenti), jalankan:
Perintah ini tidak akan meminta konfirmasi, dan dalam hitungan detik, Anda akan melihat keluaran seperti ini:
Gambar 4 - Pesan keluaran pruning container
Dan begitu saja, tidak ada lagi container yang berhenti:
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:
Gambar 6 - Daftar image Docker
Untuk menghapus semuanya dengan satu perintah, jalankan:
Anda akan melihat keluaran seperti ini di terminal:
Gambar 7 - Pesan keluaran pruning image
Setelahnya, tidak ada image yang tersisa di Docker Desktop:
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:
Setelah menjalankannya, Anda akan melihat keluaran seperti ini:
Gambar 10 - Pesan keluaran pruning volume
Sekarang, tidak ada volume yang tersisa:
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:
Gambar 12 - Daftar network Docker
Untuk menghapus semua network yang tidak terkait dengan instalasi Docker default, jalankan:
Setelah menjalankan perintah, Anda akan melihat keluaran seperti ini:
Gambar 13 - Pesan keluaran pruning network
Network apa pun yang terkait dengan container yang sebelumnya berjalan kini telah hilang:
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:
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:
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:
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.
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.txtDidukung oleh
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:
Dan untuk container yang dihapus, Anda selalu dapat membuatnya kembali jika berbasis pada image yang persisten:
docker run --name<container_name><image_name>Didukung oleh
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:
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.
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.
Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Pelajari kekuatan Docker dan Kubernetes, jalur interaktif ini akan memungkinkan Anda untuk membangun dan mengimplementasikan aplikasi di lingkungan modern.
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 pruneadalah membersihkan kekacauan tersebut dan merebut kembali penyimpanan.Meski begitu, ada lebih banyak hal tentang
docker prunedaripada 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
pruneyang 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:-aatau--allmenghapus semua image yang tidak terpakai, bukan hanya yang dangling (image yang tidak ditandai atau tidak direferensikan oleh container mana pun).--filtermemungkinkan Anda menentukan nilai filter.-fatau--forcemelewati prompt konfirmasi.--volumesjuga memangkas volume anonim bersama container, network, image, dan build cache.Secara default,
docker system prunememinta konfirmasi karena ini merupakan operasi yang berpotensi destruktif: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:
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:--filtermemungkinkan Anda menentukan pasangan key-value untuk mengontrol container mana yang dihapus.-fatau--forcemelewati prompt konfirmasi.Berikut adalah daftar container yang tidak berjalan:
Gambar 3 - Daftar container yang tidak berjalan
Untuk menghapus
code-server(dan container lain yang berhenti), jalankan:Perintah ini tidak akan meminta konfirmasi, dan dalam hitungan detik, Anda akan melihat keluaran seperti ini:
Gambar 4 - Pesan keluaran pruning container
Dan begitu saja, tidak ada lagi container yang berhenti:
Gambar 5 - Daftar container yang tidak berjalan (2)
Sekarang, mari bereskan image yang tidak terpakai.
docker image prune
Mirip dengan perintah sebelumnya,
docker image prunemenghapus 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
-aatau--allmenghapus semua image yang tidak terpakai, bukan hanya yang dangling.--filtermemungkinkan Anda menentukan pasangan key-value untuk mengontrol image mana yang dihapus.-fatau--forcemelewati prompt konfirmasi.Sekarang, mari kita lihat aksinya!
Berikut adalah daftar image yang saat ini ada di sistem:
Gambar 6 - Daftar image Docker
Untuk menghapus semuanya dengan satu perintah, jalankan:
Anda akan melihat keluaran seperti ini di terminal:
Gambar 7 - Pesan keluaran pruning image
Setelahnya, tidak ada image yang tersisa di Docker Desktop:
Gambar 8 - Daftar image Docker (2)
Selanjutnya, mari tangani volume yang tidak terpakai.
docker volume prune
Sesuai namanya, perintah
docker volume prunemenghapus 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:
-aatau--allmenghapus semua volume yang tidak terpakai, bukan hanya yang anonim.--filtermemungkinkan Anda menentukan pasangan key-value untuk mengontrol volume mana yang dihapus.-fatau--forcemelewati prompt konfirmasi.Di sistem kami, ada satu volume yang dibuat pengguna dari file
docker-compose.yml:Gambar 9 - Daftar volume Docker
Perintah berikut menghapus semua volume lokal:
Setelah menjalankannya, Anda akan melihat keluaran seperti ini:
Gambar 10 - Pesan keluaran pruning volume
Sekarang, tidak ada volume yang tersisa:
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 prunemenghapus network yang tidak lagi digunakan oleh container mana pun.Seperti perintah prune lainnya, perintah ini menyertakan beberapa opsi:
--filtermemungkinkan Anda menentukan pasangan key-value untuk mengontrol network mana yang dihapus.-fatau--forcemelewati 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:
Gambar 12 - Daftar network Docker
Untuk menghapus semua network yang tidak terkait dengan instalasi Docker default, jalankan:
Setelah menjalankan perintah, Anda akan melihat keluaran seperti ini:
Gambar 13 - Pesan keluaran pruning network
Network apa pun yang terkait dengan container yang sebelumnya berjalan kini telah hilang:
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 prunemembantu 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 prunedengan aman.Memahami apa yang akan dihapus
Perintah
prunedirancang untuk menghapus hanya resource yang tidak digunakan secara aktif.Misalnya,
docker image prunehanya menghapus image dangling, dandocker volume prunehanya menghapus volume yang tidak terpasang ke container mana pun. Namun, menambahkan opsi seperti-a -fakan 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
pruneapa 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:
Anda akan melihat keluaran serupa dengan ini:
Gambar 15 - Daftar semua container Docker
Demikian pula, gunakan perintah ini untuk mendaftar semua image, termasuk yang tidak terpakai:
Keluaran akan terstruktur mirip dengan yang di atas:
Gambar 16 - Daftar semua image Docker
Untuk memeriksa volume, jalankan perintah ini untuk mendaftar semua volume:
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
prunesecara rutin—bahkan mungkin mengotomatiskannya.Bagian ini memandu Anda melalui praktik terbaik untuk menjalankan perintah
docker prunedi 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 prunedi lingkungan produksi, selalu periksa resource sistem menggunakandocker ps -a,docker images, dandocker volume ls, seperti dijelaskan pada bagian sebelumnya.Selain itu, sebaiknya gunakan perintah pruning yang spesifik daripada
docker system pruneyang 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 prunemenggunakan 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:
Pemecahan Masalah Docker Prune
Perintah
docker pruneadalah 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:
Gambar 18 - Ruang yang digunakan oleh Docker
Saat merebut kembali ruang disk dengan perintah
docker prune, tambahkan flag-auntuk 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):
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:
Dan untuk container yang dihapus, Anda selalu dapat membuatnya kembali jika berbasis pada image yang persisten:
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 pruneadalah 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, dandocker volume lssebelum 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: