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

Jaga agar Gambar Docker Anda Dapat Dikelola dengan Docker Image Prune

Hal-hal bisa menjadi berantakan dengan mudah saat Anda fokus pada penerapan proyek Anda dan menguji berbagai hal dalam wadah Docker. Anda akan menemukan diri Anda perlu membersihkan ruang kerja Anda dari waktu ke waktu. Jadi, mengapa tidak menjaga lingkungan Docker Anda bebas dari kekacauan dengan pemangkasan gambar buruh pelabuhan dan perintah praktis lainnya?

Tutorial ini akan mengajari Anda banyak cara untuk menjaga lingkungan Docker Anda tetap bersih dan mudah dikelola, serta beberapa praktik terbaik untuk menjinakkan potensi kerumitan.

Mari kita mulai!

Prasyarat

Untuk mengikuti tutorial ini, Anda harus memiliki yang berikut ini:

  • PC Windows 10 – Tutorial ini menggunakan Windows 10 dan akan meluncurkan perintah Docker di PowerShell tetapi OS apa pun yang menjalankan Docker tidak masalah.
  • Docker – Tutorial ini menggunakan Docker Desktop v3.6.0 untuk container host.
  • Kontainer Docker yang ada untuk dibersihkan

Menghapus Gambar Docker

Lingkungan Docker terdiri dari banyak komponen berbeda dari gambar, wadah, jaringan, dan sebagainya. Anda akan menemukan banyak komponen berbeda untuk dibersihkan. Mari kita mulai proses pembersihan ini dengan terlebih dahulu memangkas gambar lama yang tidak lagi Anda perlukan. Namun jangan khawatir, jika Anda menghapus gambar dan membuat Dockerfile yang memerlukan gambar yang dihapus tersebut, Docker akan mengunduhnya lagi secara otomatis.

Jika Anda perlu menghapus gambar yang tidak perlu yang telah Anda unduh sebelumnya, rm perintah adalah temanmu. Perintah ini menghapus gambar dan kontainer, tetapi tutorial pertama-tama akan fokus pada gambar.

Jika Anda memiliki satu atau lebih container yang saat ini menggunakan gambar yang ingin Anda hapus, Anda harus terlebih dahulu menghentikan container yang menggunakan gambar tersebut dengan docker stop memerintah. Untuk informasi lebih lanjut, lihat artikel ATA Menggunakan Docker Stop Containers Tanpa Mengacaukan Segalanya!.

Perhatikan bahwa Anda tidak dapat menghapus image Docker kecuali jika Anda menghentikan container yang menggunakan image tersebut.

Untuk menghapus gambar dengan docker rm , Anda harus terlebih dahulu menemukan ID gambar. Untuk melakukannya, jalankan docker image ls memerintah. docker image ls perintah membaca Docker dan mengembalikan semua gambar yang Anda miliki saat ini, termasuk ID setiap gambar.

Anda juga dapat menjalankan docker images perintah untuk membuat daftar dari gambar yang paling baru dibuat.

docker image ls

Di bawah ini, Anda dapat melihat hasil dari docker image ls perintah dalam daftar tabel dengan kolom REPOSITORY , TAG , ID GAMBAR , DIBUAT dan UKURAN .

Setelah Anda mengetahui ID gambar, berikan ID gambar itu ke docker image rm perintah, seperti yang ditunjukkan di bawah ini. Setelah Anda melakukannya, Docker akan menghapus gambar dengan ID yang ditentukan.

# Remove only the images with the specified image ID
docker image rm image_id

Menghapus Gambar Docker 'Menjuntai'

Saat Anda mulai membuat lebih banyak wadah dan mengunduh lebih banyak gambar, kemungkinan Anda akan memiliki berbagai gambar yang tidak memiliki wadah terkait. Gambar-gambar ini disebut gambar 'menggantung' atau 'nyasar' dan saat ini tidak digunakan oleh Docker.

Untuk menghemat ruang disk dan menjaga semuanya tetap rapi, mari bersihkan semua gambar yang menggantung ini. Untuk melakukannya, jalankan docker image prune . Perintah ini memangkas atau hapus gambar yang tidak memiliki wadah yang dibuat darinya.

docker image prune

Jika Anda ingin menghapus SEMUA gambar dengan wadah terkait atau tidak, Anda tidak perlu menemukan ID gambar tertentu; jalankan docker image prune -a untuk menjadi nuklir dan menghapus semuanya.

Menghapus Kontainer Docker

Setelah Anda membersihkan gambar Docker Anda, saatnya untuk pindah ke container. Untungnya, Anda akan melihat tugas menghapus wadah mirip dengan menghapus gambar menggunakan rm perintah.

Pertama, temukan ID kontainer dengan docker container ls perintah untuk menghapus wadah, seperti yang ditunjukkan di bawah ini. Perintah ini mengembalikan semua container, termasuk CONTAINER ID . -al parameter bersifat opsional untuk menunjukkan kepada Anda semua penampung (berjalan atau tidak) dan hanya versi terbaru dari setiap penampung.

docker container ls -al # List all Docker containers

Setelah Anda mengetahui ID penampung, jalankan docker rm dan berikan ID penampung yang ingin Anda hapus.

# Remove only the containers with the specified container ID
docker rm container_id

Anda juga dapat menentukan lebih dari satu ID penampung dengan memisahkan setiap ID dengan spasi, seperti yang ditunjukkan di bawah ini. Perintah ini menghapus (rm ) wadah tutorial Alpine dan Docker 101 dengan ID wadah f8ec07177218 dan 6fac840d9382 .

docker rm f8ec07177218 6fac840d9382

Menghapus Semua Kontainer Docker yang Dihentikan

Mungkin Anda memiliki banyak wadah berhenti yang hanya menghabiskan ruang. Seperti gambar yang menjuntai, wadah yang berhenti tidak berfungsi untuk saat ini.

Untuk menghapus semua penampung yang dihentikan:

1. Jalankan docker perintah di bawah ini untuk mendaftar semua (ls --all ) Kontainer buruh pelabuhan. Perhatikan semua wadah dengan STATUS dari Keluar (X) Y jam yang lalu . Semua kontainer ini saat ini sedang dihentikan.

docker container ls --all

2. Sekarang jalankan docker container prune perintah untuk menghapus semua wadah yang dihentikan. Saat perintah ini dijalankan, Anda akan melihat ID penampung mana yang dihapus oleh perintah.

docker container prune

3. Terakhir, jalankan docker container ls -a lagi untuk melihat bahwa setiap wadah yang dihentikan telah dipindahkan.

Jika Anda lebih suka tidak menentukan satu atau beberapa ID penampung secara manual, Anda juga dapat menyusun perintah Docker menggunakan $() ke kedua wadah daftar dan hapus dalam satu baris dengan docker container rm $(docker container ls -aq) . docker container perintah menggunakan q beralih untuk tidak mengembalikan kontainer ke konsol. Setelah Docker mengumpulkan semua container, ia kemudian menjalankan docker container rm melawan masing-masing.

Menghapus Kontainer Docker dengan Memfilter Aturan

Mungkin Anda memiliki banyak wadah berbeda, dan menghapusnya masing-masing dengan ID akan merepotkan. Jika semuanya memiliki beberapa karakteristik umum, Anda dapat membuat filter untuk menghapus hanya penampung yang cocok dengan kueri tertentu.

Untuk menghapus beberapa penampung yang cocok dengan kueri tertentu, gunakan filter parameter atau flag pemfilteran pada docker container prune memerintah. Parameter ini memungkinkan Anda untuk menentukan until atribut untuk menyaring wadah yang dibuat sebelum tanggal atau label argumen untuk mencocokkan wadah dengan/tanpa label tertentu.

Misalnya, Anda dapat menghapus semua penampung yang dihentikan yang telah dibuat lebih dari 10h lalu dengan menjalankan perintah di bawah ini.

docker container prune --filter "until=10h"

Masukkan Y untuk mengonfirmasi penghapusan kontainer Docker, seperti yang ditunjukkan di bawah ini. Setelah penghapusan selesai, Anda akan melihat kontainer mana yang dipindahkan dan total ruang yang direklamasi.

Membersihkan Container dengan Perintah Docker Bersarang

Semua perintah sebelumnya yang tercakup mengharuskan Anda untuk menghentikan setiap wadah sebelumnya. Tapi bagaimana jika kontainer sedang berjalan? Alih-alih menghentikan setiap kontainer satu per satu, Anda dapat membuat sarang perintah Docker dalam perintah penghapusan untuk menghentikan semua kontainer dan menghapusnya secara bersamaan.

Lakukan tindakan pencegahan ekstra saat melepas wadah yang sedang berjalan. Penghapusan dapat memengaruhi beberapa aplikasi atau proses yang bergantung pada container Docker tersebut.

Docker bersarang ($(docker container ) perintah di bawah ini mencantumkan semua wadah secara diam-diam (-aq ) di memori, termasuk yang sedang berjalan. Daftar kontainer kemudian diteruskan ke docker luar perintah untuk menghapus (rm ) wadah dalam daftar.

Anda dapat melihat di bawah bahwa menjalankan perintah bersarang menghapus semua kontainer sekaligus, seperti yang ditunjukkan di bawah ini. Jadi ketika Anda memeriksa daftar container, Anda tidak akan mendapatkan output karena daftarnya kosong.

Menghapus Kontainer Secara Otomatis dengan --rm Tandai

Perintah sebelumnya digunakan untuk menghapus container Docker hanya setelah daftar Docker berantakan. Tetapi mengapa menunggu daftar Docker menjadi berantakan? Jika Anda adalah tipe pekerja yang "bersih saat bekerja", tindakan pembersihan preventif ada di ujung jari Anda dengan --rm bendera.

--rm tandai dalam docker run perintah berguna jika Anda hanya menguji sesuatu di mesin Anda untuk waktu yang singkat dan tidak menangani file atau penerapan penting di dalam wadah itu.

docker run sintaks perintah di bawah ini menambahkan wadah Docker dengan nama pilihan Anda (container_name ) dan gambar Docker (organization/base_image ) dari perpustakaan Docker Hub. Tapi kemudian --rm flag menghapus wadah secara otomatis.

docker run --rm --name container_name organization/base_image

Membersihkan Volume Docker

Docker tidak hanya terdiri dari gambar dan wadah. Ekosistem Docker juga terdiri dari volume penyimpanan. Dengan menggunakan metode umum yang sama untuk menemukan ID dan memangkas item, Anda juga dapat membersihkan volume penyimpanan.

Seperti halnya wadah dan gambar, jalankan docker volume ls untuk melihat semua ID volume yang Anda miliki di sistem.

docker volume ls

Di bawah ini, Anda dapat melihat bahwa dalam tutorial ini, ada tiga volume yang terdaftar.

Sekarang jalankan docker perintah di bawah ini untuk menghapus semua volume yang tidak digunakan (volume prune ).

Untuk menghapus jaringan buruh pelabuhan yang tidak digunakan, jalankan perintah ini sebagai gantinya:docker network prune

docker volume prune

Di bawah, Anda dapat melihat bahwa perintah menghapus semua volume lokal karena tidak digunakan pada saat penghapusan. Jadi ketika Anda mendaftar semua volume Docker, Anda hanya mendapatkan daftar tabel kosong.

Menghapus Semua Komponen Docker yang Tidak Digunakan Sekaligus

Sepanjang tutorial ini, Anda telah memilih dan memilih komponen Docker mana yang akan dihapus. Mungkin Anda bekerja di lingkungan pengujian dan hanya ingin membersihkan semuanya sekaligus. Daripada membersihkan setiap komponen satu per satu, bersihkan semuanya dengan docker system prune !

docker system prune perintah menghapus container yang tidak berjalan, jaringan yang tidak digunakan, gambar yang tidak digunakan, dan cache build untuk mesin Docker.

docker system prune

Atambahkan -f tandai untuk memaksa atau menekan pesan peringatan dan mengonfirmasi penghapusan elemen sistem Docker, seperti ini:docker system prune -f

Di bawah ini, Anda dapat melihat prompt yang menanyakan apakah Anda ingin terus menghapus elemen sistem Docker atau tidak. Konfirmasi dengan memasukkan Y untuk melanjutkan.

Kesimpulan

Dalam tutorial ini, Anda telah menjelajahi banyak cara untuk membersihkan image Docker dengan docker image prune perintah, menghapus kontainer dengan docker container rm , dan banyak lagi.

Dengan pengetahuan baru ini, mengapa tidak mengembangkan metode pilihan Anda sendiri untuk membersihkan gambar Docker Anda? Mungkin membuat inventaris aset Docker atau sistem penandaan yang baik yang memungkinkan Anda memberi nama proyek Anda dengan benar dan menghindari penghapusan gambar atau wadah penting?


Docker
  1. Cara Memodifikasi Gambar Docker

  2. Cara Menginstal Nextcloud dengan Docker di Server Linux Anda

  3. Cara Membuat dan Mengonfigurasi Gambar Docker Kustom secara Otomatis dengan Dockerfile – Bagian 3

  1. Cara Memindahkan Gambar Docker antar Host

  2. Buat, Beri Tag, dan Unggah Gambar Docker Anda Sendiri

  3. Cara Berbagi Gambar Docker Dengan Orang Lain

  1. Docker Bagian 4:membangun dan memublikasikan gambar buruh pelabuhan khusus

  2. Memulai dengan Gambar Docker yang Dibuat Sebelumnya

  3. Bekerja dengan Gambar Docker, Wadah, dan DockerHub