Bagaimana Cara Mendaftar dan Menghapus Gambar Docker?

Diterbitkan: 2021-08-03

Docker adalah platform terkenal yang memungkinkan Anda mengelola menjalankan dan mengirimkan aplikasi Anda sebagai wadah yang mengemas OS dan pustaka dependen bersama dengan aplikasi Anda bersama-sama.

Kami akan membahas pengelolaan gambar Docker, terutama pengarahan tentang cara membuat daftar gambar Docker dan mendapatkan informasi yang diperlukan dan kemudian membangun pembelajaran itu untuk menghapus satu atau lebih gambar dengan cara yang efisien.

Jadi mari kita mulai.

Mencantumkan Gambar Docker

Untuk membuat daftar gambar Docker yang ditarik, gunakan:

 abhisheknair@geekflare:~$ docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE redis latest aa4d65e670d6 9 days ago 105MB mysql latest c60d96bd2b77 10 days ago 514MB ubuntu latest c29284518f49 2 weeks ago 72.8MB nginx latest 4cdc5dd7eaad 3 weeks ago 133MB hello-world latest d1165f221234 4 months ago 13.3kB redis 4.0 191c4017dcdd 15 months ago 89.3MB abhisheknair@geekflare:~$

Seperti perintah docker lainnya, ini mendukung perintah images dengan beberapa opsi.

 $ docker images [OPTIONS] [REPOSITORY[:TAG]]

Jika Anda menjalankan docker images tanpa opsi apa pun, itu akan menunjukkan kepada Anda gambar tingkat atas seperti gambar docker image ls , repositori dan tagnya serta ukurannya di disk.

 abhisheknair@geekflare:~$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE mysql latest c60d96bd2b77 10 days ago 514MB ubuntu latest c29284518f49 2 weeks ago 72.8MB nginx latest 4cdc5dd7eaad 3 weeks ago 133MB hello-world latest d1165f221234 4 months ago 13.3kB redis 4.0 191c4017dcdd 15 months ago 89.3MB abhisheknair@geekflare:~$

Gambar-gambar ini memiliki lapisan perantara yang meningkatkan kegunaan, mempercepat proses pembuatan, dan mengurangi penggunaan disk yang tidak ditunjukkan oleh perintah di atas. SIZE adalah ruang gabungan yang diambil oleh gambar dan semua gambar induknya. Jika Anda menyimpan konten gambar sebagai file Tar saat buruh pelabuhan save gambar, itu akan sama dengan ukuran yang tercantum ini.

Sebuah gambar akan terdaftar beberapa kali jika memiliki beberapa nama atau tag repositori meskipun gambar tunggal yang diidentifikasi oleh IMAGE ID menggunakan SIZE yang terdaftar hanya sekali.

Daftar gambar terbaru

 abhisheknair@geekflare:~$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE mysql latest c60d96bd2b77 10 days ago 514MB ubuntu latest c29284518f49 2 weeks ago 72.8MB nginx latest 4cdc5dd7eaad 3 weeks ago 133MB hello-world latest d1165f221234 4 months ago 13.3kB redis 4.0 191c4017dcdd 15 months ago 89.3MB abhisheknair@geekflare:~$

Daftar gambar menurut Repositori dan Tag

Untuk membuat daftar semua gambar milik repositori tertentu, tentukan nama repositori seperti:

 abhisheknair@geekflare:~$ docker images redis REPOSITORY TAG IMAGE ID CREATED SIZE redis latest aa4d65e670d6 9 days ago 105MB redis 4.0 191c4017dcdd 15 months ago 89.3MB abhisheknair@geekflare:~$

Anda juga dapat menentukan nama repositori dengan tag untuk keluaran yang lebih terfilter:

 abhisheknair@geekflare:~$ docker images redis:4.0 REPOSITORY TAG IMAGE ID CREATED SIZE redis 4.0 191c4017dcdd 15 months ago 89.3MB abhisheknair@geekflare:~$

Buat daftar ID gambar lengkap

Untuk membuat daftar semua gambar tanpa memotong IMAGE ID , gunakan:

 abhisheknair@geekflare:~$ docker images --no-trunc REPOSITORY TAG IMAGE ID CREATED SIZE redis latest sha256:aa4d65e670d6518e5da96ca9d1a76370a942970a8802e6d5cc6bcf058ab12ca7 9 days ago 105MB mysql latest sha256:c60d96bd2b771a8e3cae776e02e55ae914a6641139d963defeb3c93388f61707 10 days ago 514MB ubuntu latest sha256:c29284518f497b8c5f49933e74e43ca5221e69c8251e780427f7d12f716625ff 2 weeks ago 72.8MB nginx latest sha256:4cdc5dd7eaadff5080649e8d0014f2f8d36d4ddf2eff2fdf577dd13da85c5d2f 3 weeks ago 133MB hello-world latest sha256:d1165f2212346b2bab48cb01c1e39ee8ad1be46b87873d9ca7a4e434980a7726 4 months ago 13.3kB redis 4.0 sha256:191c4017dcdd3370f871a4c6e7e1d55c7d9abed2bebf3005fb3e7d12161262b8 15 months ago 89.3MB abhisheknair@geekflare:~$

Daftar Intisari Gambar

Gambar Docker yang menggunakan format v2 atau yang lebih baru memiliki pengenal yang dapat dialamatkan konten yang dikenal sebagai digest . Untuk membuat daftar nilai intisari gambar, gunakan tanda --digest sebagai:

 abhisheknair@geekflare:~$ docker images --digests REPOSITORY TAG DIGEST IMAGE ID CREATED SIZE redis latest sha256:cd0c68c5479f2db4b9e2c5fbfdb7a8acb77625322dd5b474578515422d3ddb59 aa4d65e670d6 9 days ago 105MB mysql latest sha256:8b928a5117cf5c2238c7a09cd28c2e801ac98f91c3f8203a8938ae51f14700fd c60d96bd2b77 10 days ago 514MB ubuntu latest sha256:b3e2e47d016c08b3396b5ebe06ab0b711c34e7f37b98c9d37abe794b71cea0a2 c29284518f49 2 weeks ago 72.8MB nginx latest sha256:c5aab9d8e259d54af91e0548abf1fa8188a43079eb86b6ba8df9f482a5380720 4cdc5dd7eaad 3 weeks ago 133MB hello-world latest sha256:df5f5184104426b65967e016ff2ac0bfcd44ad7899ca3bbcf8e44e4461491a9e d1165f221234 4 months ago 13.3kB redis 4.0 sha256:2e03fdd159f4a08d2165ca1c92adde438ae4e3e6b0f74322ce013a78ee81c88d 191c4017dcdd 15 months ago 89.3MB abhisheknair@geekflare:~$

Dengan registri 2.0 , Anda dapat menggunakan intisari ini dengan perintah push , pull , create , run dan rmi . Ini juga berfungsi dengan perintah FROM di Dockerfile .

Memfilter Keluaran

perintah docker mendukung pemfilteran dengan images dengan menggunakan --filter flag. Filter yang saat ini didukung adalah:

  • menjuntai (boolean – benar atau salah)
  • label ( label=<key> atau label=<key>=<value> )
  • before ( <image-name>[:<tag>] , <image id> or <image@digest> ) – memfilter gambar yang dibuat sebelum diberikan id atau referensi
  • sejak ( <image-name>[:<tag>] , <image id> atau <image@digest> ) – memfilter gambar yang dibuat sejak id atau referensi yang diberikan
  • referensi (pola referensi gambar) – memfilter gambar yang referensinya cocok dengan pola yang ditentukan

Selanjutnya, Anda dapat menggunakan beberapa filter dengan menggabungkannya seperti:

 $ docker images --filter "<key1>=<value1>" --filter"<key2>=<value2>"

Contoh:

 abhisheknair@geekflare:~$ docker images --filter "before=redis" --filter "since=hello-world" REPOSITORY TAG IMAGE ID CREATED SIZE mysql latest c60d96bd2b77 10 days ago 514MB ubuntu latest c29284518f49 2 weeks ago 72.8MB nginx latest 4cdc5dd7eaad 3 weeks ago 133MB abhisheknair@geekflare:~$

Memformat Output

docker images mendukung output pemformatan yang mungkin diperlukan untuk bersarang dengan perintah lain, skrip, atau lainnya. Ini adalah placeholder yang didukung untuk flag --format :

Tempat penampung Keterangan
.ID ID gambar
.Repository Repositori gambar
.Tag Label gambar
.Digest Intisari gambar
.CreatedSince Waktu yang berlalu sejak gambar dibuat
.CreatedAt Waktu ketika gambar itu dibuat
.Size Ukuran disk gambar

Sebagai contoh, perintah di bawah ini mencetak output tanpa header dan mengeluarkan ID dan Repository yang dipisahkan oleh titik dua ( : ) untuk semua gambar:

 abhisheknair@geekflare:~$ docker images --format "{{.ID}}: {{.Repository}}" aa4d65e670d6: redis c60d96bd2b77: mysql c29284518f49: ubuntu 4cdc5dd7eaad: nginx d1165f221234: hello-world 191c4017dcdd: redis abhisheknair@geekflare:~$

Atau untuk membuat daftar semua gambar dengan repositori dan tagnya dalam format tabel, Anda dapat menggunakan:

 abhisheknair@geekflare:~$ docker images --format "table {{.ID}}\t{{.Repository}}\t{{.Tag}}" IMAGE ID REPOSITORY TAG aa4d65e670d6 redis latest c60d96bd2b77 mysql latest c29284518f49 ubuntu latest 4cdc5dd7eaad nginx latest d1165f221234 hello-world latest 191c4017dcdd redis 4.0 abhisheknair@geekflare:~$

Menghapus Gambar Docker

Untuk menghapus satu atau lebih image Docker dari sistem, kami menggunakan:

 $ docker image rm [OPTIONS] IMAGE [IMAGE...]

Untuk menghapus satu gambar, cukup tentukan nama gambar:

 abhisheknair@geekflare:~$ docker image rm redis Untagged: redis:latest Untagged: redis@sha256:cd0c68c5479f2db4b9e2c5fbfdb7a8acb77625322dd5b474578515422d3ddb59 Deleted: sha256:aa4d65e670d6518e5da96ca9d1a76370a942970a8802e6d5cc6bcf058ab12ca7 Deleted: sha256:3bd00d38f5ca70200050477c527cc60cfdf82911d6fe03932e2bcae31a95cfa2 Deleted: sha256:22722fde392d188cfbe5bbd0c2451cc71cf5b000afc0e5114c1066bb5e113ec9 Deleted: sha256:38212b55ef525e86cd726cd83c1a82a6009c68d24771d6e93d439fdc88e66f0e Deleted: sha256:188c498579cef37b65a93d6448c6b129fa07d5740fc213a18843ff22d80cd10d Deleted: sha256:2117165cd53c98f13ec7af36c9d8acd239fc541c847efaccb49885decf615d68 abhisheknair@geekflare:~$

Atau untuk menghapus beberapa gambar, tentukan beberapa nama gambar yang dipisahkan oleh spasi:

 abhisheknair@geekflare:~$ docker image rm redis mariadb Untagged: redis:latest Untagged: redis@sha256:cd0c68c5479f2db4b9e2c5fbfdb7a8acb77625322dd5b474578515422d3ddb59 Deleted: sha256:aa4d65e670d6518e5da96ca9d1a76370a942970a8802e6d5cc6bcf058ab12ca7 Deleted: sha256:3bd00d38f5ca70200050477c527cc60cfdf82911d6fe03932e2bcae31a95cfa2 Deleted: sha256:22722fde392d188cfbe5bbd0c2451cc71cf5b000afc0e5114c1066bb5e113ec9 Deleted: sha256:38212b55ef525e86cd726cd83c1a82a6009c68d24771d6e93d439fdc88e66f0e Deleted: sha256:188c498579cef37b65a93d6448c6b129fa07d5740fc213a18843ff22d80cd10d Deleted: sha256:2117165cd53c98f13ec7af36c9d8acd239fc541c847efaccb49885decf615d68 Untagged: mariadb:latest Untagged: mariadb@sha256:3b6f9fa1d406e168998d62501b2ee4f27d53138bebfcdac03540758996c5ff1d Deleted: sha256:fd17f57768027456cc17987058474fb21d3c51e9dd764e4497c1dfe92ff058db Deleted: sha256:a638f04e531b032c81a84bda59a36d1df3c4cec62560c403bc2edb642bce79ba Deleted: sha256:af7a7e7bf72e7ad0c5227995f219d9094fafbe0ac973dbe7eb4ab190a5a58ba5 Deleted: sha256:a0cfd81b291e8da6bca0731c9db70fe1b61d176906b1cf05ade1cd61572ffaaa Deleted: sha256:38b00cb5dab64398092fab2b18563af1ef4a9445dec8a531ac725059dc218f41 Deleted: sha256:6e60d29d2d76125f989f503a78729984f7ba3e26bfbf7038d5ab644b8755b7c2 Deleted: sha256:1dafdd60e471b4c1f5244cfe1d20d79f934f504ef42180b637886be2b0b74370 Deleted: sha256:2fffe8e736cdb99359084e297f4bb54a4cac879366bd3e4333d3dbe966f8e9a6 Deleted: sha256:f728037697805db453111266541c202c74971484ef359ea29b9c60064ed9e47e Deleted: sha256:28155a13db3520201db576bf6d56b68fc08ef27b1c4c49dbfeadef523d35c5f0 Deleted: sha256:7555a8182c42c7737a384cfe03a3c7329f646a3bf389c4bcd75379fc85e6c144 abhisheknair@geekflare:~$

Penghapusan Paksa

Mungkin ada wadah yang sedang berjalan yang menggunakan gambar yang Anda coba hapus. Dalam kasus seperti itu, Docker akan memberi Anda peringatan ketika Anda mencoba menghapus gambar yang direferensikan.

 abhisheknair@geekflare:~$ docker image rm nginx Error response from daemon: conflict: unable to remove repository reference "nginx" (must force) - container ce908eadf829 is using its referenced image 4cdc5dd7eaad abhisheknair@geekflare:~$

Anda dapat menghentikan wadah terkait terlebih dahulu dan kemudian mencoba lagi atau menggunakan flag -f yang memaksa penghapusan gambar (hati-hati).

 abhisheknair@geekflare:~$ docker image rm nginx -f Untagged: nginx:latest Untagged: nginx@sha256:c5aab9d8e259d54af91e0548abf1fa8188a43079eb86b6ba8df9f482a5380720 Deleted: sha256:4cdc5dd7eaadff5080649e8d0014f2f8d36d4ddf2eff2fdf577dd13da85c5d2f abhisheknair@geekflare:~$

Pangkas Gambar

Ada situasi tertentu di mana gambar yang tidak digunakan menghabiskan ruang disk atau Anda hanya perlu membersihkan gambar lama yang menggantung. Anda dapat membersihkan gambar yang tidak digunakan tersebut dengan menggunakan:

 $ docker image prune

Contoh:

 abhisheknair@geekflare:~$ docker image prune WARNING! This will remove all dangling images. Are you sure you want to continue? [y/N] y Total reclaimed space: 0B abhisheknair@geekflare:~$

Jika Anda ingin membersihkan semua gambar yang juga tidak digunakan oleh wadah apa pun, gunakan -a flag:

 abhisheknair@geekflare:~$ docker image prune -a WARNING! This will remove all images without at least one container associated to them. Are you sure you want to continue? [y/N] y Deleted Images: untagged: mariadb:latest untagged: mariadb@sha256:3b6f9fa1d406e168998d62501b2ee4f27d53138bebfcdac03540758996c5ff1d deleted: sha256:fd17f57768027456cc17987058474fb21d3c51e9dd764e4497c1dfe92ff058db deleted: sha256:a638f04e531b032c81a84bda59a36d1df3c4cec62560c403bc2edb642bce79ba deleted: sha256:af7a7e7bf72e7ad0c5227995f219d9094fafbe0ac973dbe7eb4ab190a5a58ba5 deleted: sha256:a0cfd81b291e8da6bca0731c9db70fe1b61d176906b1cf05ade1cd61572ffaaa deleted: sha256:38b00cb5dab64398092fab2b18563af1ef4a9445dec8a531ac725059dc218f41 deleted: sha256:6e60d29d2d76125f989f503a78729984f7ba3e26bfbf7038d5ab644b8755b7c2 deleted: sha256:1dafdd60e471b4c1f5244cfe1d20d79f934f504ef42180b637886be2b0b74370 deleted: sha256:2fffe8e736cdb99359084e297f4bb54a4cac879366bd3e4333d3dbe966f8e9a6 deleted: sha256:f728037697805db453111266541c202c74971484ef359ea29b9c60064ed9e47e deleted: sha256:28155a13db3520201db576bf6d56b68fc08ef27b1c4c49dbfeadef523d35c5f0 deleted: sha256:7555a8182c42c7737a384cfe03a3c7329f646a3bf389c4bcd75379fc85e6c144 untagged: redis:latest untagged: redis@sha256:cd0c68c5479f2db4b9e2c5fbfdb7a8acb77625322dd5b474578515422d3ddb59 deleted: sha256:aa4d65e670d6518e5da96ca9d1a76370a942970a8802e6d5cc6bcf058ab12ca7 deleted: sha256:3bd00d38f5ca70200050477c527cc60cfdf82911d6fe03932e2bcae31a95cfa2 deleted: sha256:22722fde392d188cfbe5bbd0c2451cc71cf5b000afc0e5114c1066bb5e113ec9 deleted: sha256:38212b55ef525e86cd726cd83c1a82a6009c68d24771d6e93d439fdc88e66f0e deleted: sha256:188c498579cef37b65a93d6448c6b129fa07d5740fc213a18843ff22d80cd10d deleted: sha256:2117165cd53c98f13ec7af36c9d8acd239fc541c847efaccb49885decf615d68 Total reclaimed space: 445.2MB abhisheknair@geekflare:~$

Anda juga dapat menggunakan tanda --force atau -f untuk melanjutkan pembersihan tanpa konfirmasi atau menggunakan tanda --filter untuk memberikan nilai filter (misalnya 'sampai=<timestamp>') ke perintah prune .

Contoh:

 $ docker image prune -a --force --filter "until=2021-01-04T00:00:00"

Atau

 $ docker image prune --filter="label=deprecated"

Menggunakan Perintah rmi

Anda juga dapat menggunakan perintah rmi dengan buruh pelabuhan untuk menghapus gambar.

Ini menghapus (dan un-tag) satu atau lebih gambar dari node Docker. Jika gambar memiliki beberapa tag, menggunakan perintah ini dengan tag sebagai parameter hanya akan menghapus tag. Jika tag adalah satu-satunya untuk gambar, baik gambar maupun tag akan dihapus.

Perintah ini tidak menghapus gambar dari registri. Juga, Anda tidak dapat menghapus gambar wadah yang sedang berjalan kecuali Anda menggunakan opsi -f seperti dengan perintah docker image rm .

Contoh:

 abhisheknair@geekflare:~$ docker rmi alpine Untagged: alpine:latest Untagged: alpine@sha256:adab3844f497ab9171f070d4cae4114b5aec565ac772e2f2579405b78be67c96 Deleted: sha256:d4ff818577bc193b309b355b02ebc9220427090057b54a59e73b79bdfe139b83 Deleted: sha256:72e830a4dff5f0d5225cdc0a320e85ab1ce06ea5673acfe8d83a7645cbd0e9cf abhisheknair@geekflare:~$

Anda juga dapat menggunakan --no-prune untuk menentukan untuk tidak menghapus induk yang tidak ditandai.

Hentikan Wadah dan Hapus Gambar

Pada banyak kesempatan, Anda mungkin perlu menghentikan semua wadah dan menghapus semua gambar terkait. Anda dapat melakukannya hanya dengan:

 $ docker rm -vf $(docker ps -a -q)

Perintah di atas akan menghentikan dan menghapus semua container yang sedang berjalan dengan paksa. Kemudian kita dapat melanjutkan untuk menghapus gambar yang ditautkan dengan menggunakan:

 $ docker rmi -f $(docker images -a -q)

Ringkasan

Docker adalah alat serbaguna yang merupakan bagian penting dari gudang senjata insinyur DevOps saat ini dan merupakan bagian dari teknologi ramai lainnya seperti Kubernetes. Manajemen gambar Docker adalah salah satu bagian penting dalam mengelola dan memecahkan masalah penerapan Docker.

Anda sekarang harus memiliki gagasan dasar tentang kemampuan yang ditawarkan oleh perintah docker CLI dengan perintahnya seperti image , images dan rmi . Bendera mereka menawarkan penyesuaian lebih lanjut dan menawarkan opsi pemfilteran dan penyesuaian lanjutan yang dapat membantu dalam otomatisasi dan penggunaan lanjutan.

Gunakan docker [COMMAND] help untuk detail lebih lanjut tentang opsi yang tersedia dan topik bantuan terkait.