Cara menghapus semua gambar Docker lokal

267

Saya baru-baru ini mulai menggunakan Docker dan tidak pernah menyadari bahwa saya harus menggunakan docker-compose downalih-alih ctrl-catau docker-compose stopuntuk menyingkirkan eksperimen saya. Saya sekarang memiliki sejumlah besar gambar buruh pelabuhan yang tidak dibutuhkan secara lokal.

Apakah ada bendera yang dapat saya jalankan untuk menghapus semua gambar & wadah buruh pelabuhan lokal?

Sesuatu seperti docker rmi --all --force--semua bendera tidak ada tetapi saya mencari sesuatu dengan ide serupa.

Kimmo Hintikka
sumber
2
docker images purge-> akan menghapus semua gambar buruh pelabuhan Anda
muthukumar helius
Dengan xargs:docker image ls -q | xargs -I {} docker image rm -f {}
arkadyt
@mutukumarhelius Saya pikir maksud Anda docker image prune(gambar singular dan prune bukan pembersihan).
Andrés Mejía

Jawaban:

535

Untuk menghapus semua kontainer termasuk volumenya gunakan,

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

Untuk menghapus semua gambar,

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

Ingat, Anda harus menghapus semua wadah sebelum menghapus semua gambar dari mana wadah itu dibuat.

Jika Anda bekerja pada Windows (Powershell),

$images = docker images -a -q
foreach ($image in $images) { docker image rm $image -f }
techtabu
sumber
7
unknown shorthand flag: 'a' in -asaat menjalankandocker rmi -f $(docker images -a -q)
Ashutosh Chamoli
25
@Ashutosh Chamoli: Tidak bekerja di CMD, bekerja di PowerShell.
Jack
4
Varian satu baris untuk PowerShell:docker images -a -q | % { docker image rm $_ -f }
CodeStix
4
Saya harus datang ke sini 100 kali. Terima kasih telah menulis jawaban ini!
Ajay Maity
「Buruh pelabuhan rmi -f $ (gambar buruh pelabuhan -a -q)」 benar-benar badass
Sinux
176

Gunakan ini untuk menghapus semuanya :

docker system prune -a --volumes

Hapus semua wadah, volume, jaringan, dan gambar yang tidak digunakan

WARNING! This will remove:
    - all stopped containers
    - all networks not used by at least one container
    - all volumes not used by at least one container
    - all images without at least one container associated to them
    - all build cache

https://docs.docker.com/engine/reference/commandline/system_prune/#extended-description

Robert
sumber
1
Namun, sebenarnya tidak mengklaim kembali semua ruang disk.
lucian303
@ lucian303 pendekatan ini mendapatkan kembali ruang disk. Mungkin Anda menghadapi masalah tertentu.
Robert
Saya hanya mendapatkan hasil yang diinginkan ketika saya melakukan ini dan langkah-langkah dalam jawaban
@techtabu
31

Untuk menghapus semuanya sederhana:

$ docker system prune --all

Segalanya berarti:

  • semua kontainer berhenti
  • semua jaringan tidak digunakan oleh setidaknya satu wadah
  • semua gambar tanpa setidaknya satu wadah yang terkait dengannya
  • semua build cache
Renatex
sumber
26

docker image prune -a

Hapus semua gambar yang tidak digunakan, tidak hanya yang menggantung. Tambahkan -fopsi untuk memaksa.

Versi buruh pelabuhan lokal: 17.09.0-ce, Git commit: afdb6d4, OS / Arch: darwin / amd64

$ docker image prune -h
Flag shorthand -h has been deprecated, please use --help

Usage:  docker image prune [OPTIONS]

Remove unused images

Options:
  -a, --all             Remove all unused images, not just dangling ones
      --filter filter   Provide filter values (e.g. 'until=<timestamp>')
  -f, --force           Do not prompt for confirmation
      --help            Print usage
Robert Ranjan
sumber
7

Perintah yang mudah dan praktis

Untuk menghapus semua gambar

docker rmi $(docker images -a)

Untuk menghapus kontainer yang dalam kondisi keluar

docker rm $(docker ps -a -f status=exited -q)

Untuk menghapus kontainer yang dalam keadaan dibuat

docker rm $(docker ps -a -f status=created -q)

CATATAN: Hapus semua wadah kemudian hapus gambar

Deep Nirmal
sumber
untuk menghapus semua gambar, harus - "buruh pelabuhan rmi $ (buruh pelabuhan gambar -a -q)". -q mengembalikan hanya id gambar
Jimmy MG Lim
itu berarti telah menghapus gambar-gambar itu. Periksa kembali sekali lagi
Deep Nirmal
3

Untuk menghapus semua gambar:

docker rmi -f $(docker images -a | awk {'print $3'})

Penjelasan:

gambar buruh pelabuhan -a | awk {'print $ 3'}

Perintah ini akan mengembalikan semua id gambar dan kemudian digunakan untuk menghapus gambar menggunakan id-nya.

PalFS
sumber
3

Hapus tanpa memanggil buruh pelabuhan :

rm -rf /var/lib/docker

Ini tidak disarankan jika Anda dapat menjalankan buruh pelabuhan secara normal, tetapi jika karena alasan apa pun Anda tidak bisa atau tidak mau, ini akan berhasil.

VasiliNovikov
sumber
2

Anda dapat mencoba seperti ini:

docker system prune
Bablu Ahmed
sumber
Dalam kasus saya ini akan menghapus volume yang masih saya gunakan. Jangan gunakan ini jika Anda tidak tahu apa fungsinya
Zach Smith
2

Untuk menghapus semua gambar:

docker rmi $(docker images -a -q)

di mana -a adalah semua, dan -q hanya mengembalikan id gambar

Untuk menghapus gambar yang tidak digunakan, dan wadah:

docker system prune

berhati-hatilah seolah-olah Anda menggunakan gerombolan buruh pelabuhan, dan mesin lokal Anda bergabung dengan gerombolan jarak jauh (sebagai manajer / pekerja), lokal Anda akan menjadi repo yang digunakan. mengeksekusi ini dengan demikian menghapus gambar yang digunakan.

Jimmy MG Lim
sumber
2
docker rmi $(docker images -q) --force
simencore
sumber
2
Anda harus menambahkan beberapa penjelasan ketika meninggalkan jawaban di sebuah pos, sehingga orang lain yang menemukannya nanti dapat memahaminya.
Morphyish
1

Menambahkan ke jawaban yang diterima techtabu, Jika Anda menggunakan buruh pelabuhan di windows, Anda dapat menggunakan perintah berikut

for /F "delims=" %A in ('docker ps -a -q') do docker rm %A

di sini, perintah docker ps -a -qmencantumkan semua gambar dan daftar ini diteruskan docker rmsatu per satu

lihat ini untuk detail lebih lanjut tentang cara format perintah ini bekerja di windows cmd.

corvo
sumber
1

Cara lain dengan xargs

docker image ls -q | xargs -I {} docker image rm -f {}
Bahtera
sumber
0

Untuk menghapus semua gambar Docker lokal, ikuti 2 langkah ::

langkah 1: gambar buruh pelabuhan (daftarkan semua gambar buruh pelabuhan dengan id)

     example :
     REPOSITORY    TAG    IMAGE ID            CREATED             SIZE
     pradip564/my  latest 31e522c6cfe4        3 months ago        915MB

langkah 2: gambar buruh pelabuhan rm 31e522c6cfe4 (ID GAMBAR)

      OUTPUT : image deleted
Debasis Das
sumber