GNU/Linux >> Belajar Linux >  >> Panels >> Docker

Cara Memangkas Sumber Daya Docker yang Tidak Digunakan

Docker memungkinkan Anda dengan cepat mengemas aplikasi Anda sebagai wadah, sehingga memungkinkan untuk menjalankannya di mana saja dari laptop Anda ke cloud publik. Setelah menggunakan Docker untuk sementara waktu, Anda dapat mengumpulkan sejumlah besar kontainer, gambar, dan sumber daya lainnya yang berlebihan. Berikut cara merapikannya.

Docker biasanya tidak menghapus apa pun kecuali Anda menyuruhnya. Itu berarti gambar yang Anda tarik dan wadah yang Anda buat mungkin masih berkeliaran di sistem Anda, meskipun tidak lagi digunakan.

Memiliki terlalu banyak sumber daya yang berlebihan dapat dengan cepat menyebabkan penggunaan disk yang berlebihan. Ini juga menghasilkan keluaran yang jauh lebih panjang saat mencantumkan sumber daya pada baris perintah, sehingga lebih sulit untuk menemukan informasi yang Anda cari.

Memotong Sumber Daya yang Menggantung

Sumber daya "menggantung" adalah objek Docker apa pun yang saat ini tidak terkait dengan wadah. Ini termasuk gambar Docker, jaringan dan volume, serta wadah yang dihentikan. Dalam hal gambar, gambar "menggantung" jika tidak ditandai dan tidak memiliki referensi.

Docker menyediakan satu perintah housekeeping untuk memungkinkan Anda membersihkan semua resource yang menggantung dan container yang dihentikan. Kecuali jika sumber daya digunakan oleh berjalan wadah, itu akan dihapus.

docker system prune

Menjalankan perintah akan menampilkan prompt konfirmasi yang mencantumkan jenis sumber daya yang akan dihapus. Ketik y dan tekan Enter untuk melanjutkan penghapusan. Anda dapat menonaktifkan konfirmasi dengan meneruskan -f atau --force bendera.

Volume tidak dihapus secara default. Menghapus volume berisiko hilangnya data persisten yang mungkin ingin Anda simpan. Jika Anda ingin menghapus volume yang tidak terkait dengan penampung, teruskan --volumes bendera untuk menyertakan mereka dalam operasi.

Anda dapat menghapus lebih banyak lagi data gambar dengan meneruskan -a (atau --all ) bendera. Ini akan menyebabkan Docker menghapus semua yang tidak digunakan gambar, bukan hanya menjuntai yang tidak direferensikan. Setiap gambar di sistem Anda akan dihapus, kecuali ada setidaknya satu penampung berjalan yang memerlukannya.

Menggunakan Filter Saat Memangkas

Filter dapat digunakan dengan prune memerintah. Pemfilteran memberi Anda lebih banyak kontrol atas apa yang akan dihapus. Dua filter saat ini didukung, until dan timestamp .

  • until – Tanda until filter mencegah penghapusan wadah, gambar, dan jaringan yang dibuat sebelum waktu tertentu. Anda dapat menentukan waktu dalam beberapa format berbeda, seperti stempel waktu Unix dalam detik (mis. 1614890000 ) atau string stempel waktu berformat tanggal (mis. 2021-03-04T20:30:00 ).
  • label label filter membatasi penghapusan sehingga hanya sumber daya dengan label tertentu yang dihapus. Label dapat digunakan dengan wadah, gambar, jaringan, dan volume. Anda menentukan label sebagai label=key=value (kunci sama dengan nilai), label!=key=value (kunci tidak sama dengan nilai), label=key (memiliki label tertentu) atau label!=key (tidak memiliki label yang diberikan).

Untuk menggunakan filter, teruskan ke --filter bendera:

docker system prune --filter until=2021-03-04T20:30:00 --filter label=foo=bar

Perintah ini akan menghapus sumber daya dengan foo=bar label yang dibuat sebelum 20:30 pada tanggal 4 Maret. Sumber daya apa pun yang tidak cocok dengan kriteria ini tidak akan tersentuh.

Memotong Jenis Sumber Daya Individual

Anda tidak perlu selalu menggunakan docker system prune . Docker juga menyediakan perintah pemangkasan yang lebih terperinci. Ini dapat digunakan jika Anda hanya ingin menghapus satu jenis sumber daya.

--force dan --filter flags yang didukung oleh docker system prune juga berlaku untuk masing-masing perintah prune yang tercantum di bawah ini.

Pemangkasan Wadah

Perintah Docker sehari-hari dapat dengan cepat menghasilkan sejumlah besar container yang dihentikan. Masalahnya bertambah jika Anda docker build gambar tanpa --rm flag, karena ini menyebabkan lapisan build perantara dipertahankan.

Jalankan docker container prune untuk membersihkan wadah yang berhenti. Kontainer yang dihentikan tidak muncul saat Anda menjalankan docker ps; untuk melihatnya, Anda harus menggunakan docker ps -a untuk menampilkan semua container di sistem Anda.

Jika Anda ingin menghapus satu wadah, gunakan docker rm perintah yang melewati ID wadah. Anda bisa mendapatkannya dengan menjalankan docker ps . Jika penampung sedang berjalan, Anda harus menggunakan --force tandai untuk menghapusnya.

Memotong Gambar

Gunakan docker image prune untuk menghapus semua gambar yang menjuntai. Seperti docker system prune , ini akan memengaruhi gambar yang tidak ditandai atau tidak dirujuk oleh penampung apa pun.

Tambahkan -a tandai untuk menghapus semua gambar yang tidak digunakan. Ini akan menghapus setiap gambar di sistem Anda yang tidak diperlukan oleh setidaknya satu wadah. Gambar yang diberi tag juga akan disertakan, sehingga Anda dapat dengan cepat menghapus penarikan lama dari Docker Hub.

Anda dapat menghapus gambar tertentu dengan docker rmi perintah:

docker rmi wordpress:latest

Ketika satu gambar memiliki beberapa tag, docker rmi akan menghapus tag yang diberikan tanpa benar-benar menghapus gambar. Ini akan dihapus setelah tag terakhir dihapus.

Memotong Jaringan

Jaringan Docker tidak dibersihkan secara otomatis. Seiring waktu, Anda dapat berakhir dengan sejumlah besar dari mereka. Ini mengacaukan sistem Anda dengan perangkat jembatan virtual yang berlebihan dan entri tabel perutean. Jalankan docker network prune untuk menghancurkan jaringan yang tidak digunakan dan mengembalikan perubahan ke konfigurasi host Anda.

Anda dapat menghapus jaringan individual dengan menjalankan docker rm my-network .

Volume Pemangkasan

Docker tidak akan pernah menghapus volume. Mereka menyimpan data persisten yang dibuat oleh wadah Anda sehingga penghapusan yang tidak diinginkan dapat memiliki konsekuensi yang menghancurkan. Volume juga dapat digunakan bersama oleh beberapa wadah atau dibiarkan tidak aktif dan siap dipasang ke wadah lain di masa mendatang.

Jika Anda ingin memangkas volume yang tidak digunakan, Anda harus menjalankan docker volume prune . Ini akan menghapus volume apa pun yang tidak digunakan oleh setidaknya satu wadah. Volume individual dapat dihapus menggunakan docker volume rm my-volume .

Mencegah Akumulasi di Masa Mendatang

Anda dapat meminimalkan risiko penumpukan sumber daya yang berlebihan di masa mendatang dengan berhati-hati untuk meneruskan --rm tandai ke docker build dan docker run perintah.

Saat digunakan dengan build , itu akan menyebabkan penghapusan lapisan build perantara (ditandai sebagai <none>:<none> dalam docker images ) keluaran. Ini dapat mewakili pengurangan yang signifikan dalam penggunaan disk. Lapisan perantara baru biasanya dibuat untuk setiap instruksi di Dockerfile Anda . Anda biasanya dapat menghapusnya kecuali jika Anda ingin menggunakannya nanti sebagai titik awal untuk gambar baru.

Menggunakan --rm dengan docker run akan menghapus wadah segera setelah perintahnya keluar. Ini sangat ideal saat menjalankan biner dalam wadah sekali pakai. Jangan lulus --rm ke container yang ingin Anda jalankan terus-menerus, atau yang mungkin ingin Anda mulai dan hentikan sesuai permintaan. Contohnya termasuk server web dan database yang menjalankan layanan alih-alih perintah yang disediakan pengguna.

Kesimpulan

Memangkas sumber daya Docker Anda dapat mengosongkan ruang disk dan membantu Anda bekerja dengan CLI Docker. Menghilangkan penampung dan gambar yang berlebihan memudahkan mengidentifikasi sumber daya yang Anda cari.

Docker tidak akan menghapus apa pun kecuali Anda menyuruhnya. Sebaiknya jalankan docker system prune secara berkala untuk menjaga sistem Anda tetap bersih. Anda dapat membuat tugas cron yang menjalankannya setiap bulan, menggunakan until filter untuk membuat periode retensi untuk sumber daya yang baru saja ditambahkan.


Docker
  1. Cara Menghapus Semua Gambar Docker, Wadah, Volume, Jaringan, dan Sumber Daya yang Tidak Digunakan

  2. Cara Memperbarui Wadah Docker yang Berjalan Secara Otomatis

  3. Cara Mengekspor dan Mengimpor Kontainer Docker

  1. Cara Menggunakan Tulis Docker

  2. Bagaimana Menghubungkan Kontainer Docker

  3. Bagaimana Melewati Variabel Lingkungan ke Docker Containers

  1. Cara Berbagi Data Antar Wadah Docker

  2. Cara Mendaftar Kontainer Docker

  3. Cara menghapus semua wadah Docker