Saya menjalankan Docker di bawah Vagrant di bawah OS X 10.8.4 (Mountain Lion), dan setiap kali saya mencoba menghapus gambar yang disimpan, saya mendapatkan kesalahan:
$ docker rmi some-image-id
2013/07/15 hh:mm:ss unexpected JSON input
Menurut rmi
bantuan itu, sintaks yang tepat adalah docker rmi IMAGE [IMAGE...]
, dan saya tidak yakin apa yang harus saya lakukan.
Bagaimana saya bisa menghapus gambar?
$ docker version
Client version: 0.4.8
Server version: 0.4.8
Go version: go1.1
$docker info
Containers: 1
Images: 3
Menariknya, ketika saya berlari docker ps
, tidak ada wadah yang muncul sama sekali. Running docker images
menunjukkan empat (4) base
gambar dan satu (1) node
gambar.
docker info
menunjukkan jumlah gambar yang sebenarnya, Anda dapat mencoba./docker images -a -q | sort | uniq | wc -l
hasilnya harus sama (-a untuk semua gambar, -q hanya untuk id).docker ps
hanya menunjukkan wadah aktif, yang dapat Anda lakukandocker ps -a
untuk mendaftar semua wadah-D
opsi dan klien juga?docker -d -D& ; docker -D rmi <id>
. Bisakah kamu juga mencobaCID=$(docker run -d ubuntu bash); ID=$(docker commit $CID); docker rmi $ID
?Jawaban:
Coba
docker rmi node
. Itu seharusnya bekerja.Melihat semua wadah yang dibuat sesederhana
docker ps -a
.Untuk menghapus semua wadah yang ada (bukan gambar!) Jalankan
docker rm $(docker ps -aq)
sumber
docker ps -aq | Foreach-Object { docker stop $_; docker rm $_; }
Berikut ini adalah beberapa cara untuk menghapus gambar / kontainer buruh pelabuhan:
Hapus satu gambar
Hapus semua gambar
Bunuh kontainer dan keluarkan:
Catatan: Ganti
kill
denganstop
untuk shutdown yang anggunHapus semua gambar kecuali "gambar saya"
Gunakan grep untuk menghapus semua kecuali
my-image
danubuntu
Atau (tanpa awk)
docker rmi $(docker images --quiet | grep -v $(docker images --quiet ubuntu:my-image))
sumber
docker rmi $(docker images -qf "dangling=true")
docker rm $(docker kill $(docker ps -a -q))
docker rmi $(docker images --quiet | grep -v $(docker images --quiet ubuntu:my-image))
Hapus semua kontainer buruh pelabuhan
Hapus semua gambar buruh pelabuhan
sumber
docker rmi $(docker images | grep "^<none>" | awk "{print $3}")
sudo docker rmi -f $(sudo docker images | grep "<none>" | awk "{print \$3}")
dan kemudian menghapus tag rilis langsung tahun 2015 (mis.live-20150121223
) yang bisa kita lakukansudo docker rmi -f $(sudo docker images | grep live-2015 | awk "{print \$3}")
Untuk menghapus gambar dari Docker menggunakan ID gambar:
Dapatkan daftar semua Gambar
Identifikasi ID gambar dari gambar yang ingin Anda hapus, misalnya:
Terakhir hapus gambar menggunakan ID gambar (hanya tiga digit pertama yang diperlukan)
sumber
Gambar:
Wadah:
sumber
Perbarui, seperti yang dikomentari oleh VonC di Cara menghapus wadah Docker lama .
Dengan Docker 1.13 (Q4 2016), Anda sekarang memiliki:
docker system prune
akan menghapus SEMUA data yang tidak digunakan (yaitu, dalam urutan: wadah dihentikan, volume tanpa wadah dan gambar tanpa wadah).Lihat PR 26108 dan komit 86de7c0 , yang memperkenalkan beberapa perintah baru untuk membantu memfasilitasi memvisualisasikan berapa banyak ruang yang diambil data daemon Docker pada disk dan memungkinkan untuk dengan mudah membersihkan kelebihan "yang tidak dibutuhkan".
sumber
Menghapus Kontainer
Untuk menghapus wadah tertentu
Untuk gambar tunggal
Untuk banyak gambar
Hapus wadah yang keluar
Hapus semua wadah
Menghapus Gambar
Hapus gambar tertentu
untuk gambar tunggal
untuk banyak gambar
Hapus gambar yang menggantung Gambar yang menggantung
adalah lapisan yang tidak memiliki hubungan dengan gambar yang ditandai karena gambar Docker terdiri dari beberapa gambar.
Hapus semua gambar Docker
Menghapus Volume
Untuk daftar volume, jalankan
docker volume ls
Hapus volume tertentu
Hapus volume yang menggantung
Hapus wadah dan volumenya
sumber
CONTAINER_ID
?docker rm container_name
docker rmi image_name
sumber
Temukan ID kontainer,
sumber
daf644660736
? Bagaimana itu terkait dengan yang sebelumnya?Pertama-tama, kita harus berhenti dan menghapus wadah Docker yang dilampirkan dengan gambar Docker yang akan kita hapus.
Jadi untuk itu, pertama
docker stop container-id
- Untuk menghentikan wadah yang sedang berjalandocker rm container-id
- Untuk menghapus / menghapus wadahkemudian,
docker rmi image-id
- Untuk menghapus / menghapus gambarsumber
Untuk versi 1.13 dan lebih tinggi:
Perbandingan:
docker image rm
dandocker rmi
,yang
[OPTIONS]
tampaknya tidak memiliki perbedaan.Dari: Memperkenalkan Docker 1.13
sumber
Docker menyediakan beberapa perintah untuk dihapus
images
.Contoh:
Jadi Anda dapat menghapus gambar filter seperti ini:
sumber
Hapus semuanya menggunakan
Langkah 1: Bunuh semua kontainer
Langkah 2: RM mereka terlebih dahulu
Langkah 3: Hapus gambar menggunakan paksa
Gunakan langkah 1 jika Anda mendapatkan kesalahan dengan mengatakan itu tidak dapat dihapus karena ketergantungan anak
sumber
Jika Anda ingin secara otomatis / berkala membersihkan wadah yang keluar dan menghapus gambar dan volume yang tidak digunakan oleh wadah yang sedang berjalan, Anda dapat mengunduh gambar
meltwater/docker-cleanup
.Saya menggunakan ini pada produksi karena kami menyebarkan beberapa kali sehari di beberapa server, dan saya tidak ingin pergi ke setiap server untuk membersihkan (itu akan merepotkan).
Lari saja:
Ini akan berjalan setiap 30 menit (atau berapa lama Anda mengaturnya menggunakan opsi DELAY_TIME = 1800) dan membersihkan wadah dan gambar yang keluar.
Lebih detail: https://github.com/meltwater/docker-cleanup/blob/master/README.md
sumber
Berikut ini adalah skrip shell untuk menghapus gambar yang diberi tag (bernama) dan wadahnya. Simpan sebagai docker-rmi dan jalankan menggunakan 'docker-rmi my-image-name'
sumber
xargs -r
membuatnya berfungsi dalam wadah yang tidak cocok.Kenapa tidak ada yang menyebutkan
docker-compose
! Saya baru saja menggunakannya selama satu minggu, dan saya tidak bisa bertahan tanpanya. Yang Anda butuhkan hanyalah menulis yml yang hanya membutuhkan beberapa menit belajar, dan kemudian Anda siap untuk mulai. Itu dapat mem-boot gambar, wadah (yang diperlukan dalam layanan yang disebut) dan memungkinkan Anda meninjau log seperti yang Anda gunakan dengan perintah asli buruh pelabuhan. Cobalah:Sebelum saya menggunakan docker-compose, saya menulis skrip shell saya sendiri, kemudian saya harus menyesuaikan skrip kapan pun diperlukan terutama ketika arsitektur aplikasi berubah. Sekarang saya tidak perlu melakukan ini lagi, berkat komposisi buruh pelabuhan.
sumber
docker-compose
adalah alat orkestrasi dan sering tidak praktis untuk digunakan dalam proyek sederhana.docker
Solusi mandiri (tidak memerlukan penggunaandocker-compose.yml
konfigurasi yang sering kali sulit ) lebih disukai dalam konteks pertanyaan ini. Selain itu, sudah ada banyak, banyak jawaban bagus di sini.Bagi saya yang berikut ini berfungsi dengan baik:
Lalu, lanjutkan dan hapus gambar dengan menjalankan beberapa seperti ini:
sumber
Daftar gambar:
Hapus gambar:
Hapus dengan paksa:
sumber
Dalam kasus saya masalahnya adalah bahwa saya memiliki gambar belakangnya dengan nama yang sama solusinya adalah dengan menambahkan tag setelah nama atau id
ex:
sumber