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.



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 }

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


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

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

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


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.


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.


2

Anda dapat mencoba seperti ini:

docker system prune

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.


2
docker rmi $(docker images -q) --force

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.


1

Cara lain dengan xargs

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

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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.