Di Ubuntu 14.04 (Trusty Tahr) saya sedang mencari cara untuk menghentikan wadah yang sedang berjalan dan satu-satunya informasi yang saya miliki adalah nama gambar yang digunakan dalam perintah run Docker.
Apakah ada perintah untuk menemukan semua wadah yang cocok yang cocok dengan nama gambar itu dan menghentikannya?
docker
ubuntu
docker-image
Collin Estes
sumber
sumber
ps -a
. Wadah yang dihapus ... yah, sudah dihapus, tidak ada lagi.Jawaban sebelumnya tidak berhasil untuk saya, tetapi ini berhasil:
sumber
Anda bisa memulai wadah pengaturan nama wadah:
Gambar yang sama dapat digunakan untuk memutar banyak wadah, jadi ini adalah cara yang baik untuk memulai wadah. Maka Anda bisa menggunakan nama wadah ini untuk berhenti, melampirkan ... wadah:
sumber
sudo docker build . -t <img-name> && sudo docker stop <container-name> || true && sudo docker run -d --rm --name <container-name> <img-name>
Kode ini akan menghentikan semua wadah dengan gambar centos: 6 . Saya tidak dapat menemukan solusi yang lebih mudah untuk itu.
Atau bahkan lebih pendek:
sumber
Dua cara untuk berhenti menjalankan wadah:
Anda bisa menjalankan wadah menggunakan perintah berikut:
Tautan berikut untuk informasi lebih lanjut:
sumber
$docker
? Atau$
dari prompt shell?Untuk Docker versi 18.09.0 saya menemukan bahwa flag format tidak diperlukan
sumber
Hentikan kontainer buruh pelabuhan dengan nama gambar:
Hentikan kontainer buruh pelabuhan dengan nama gambar dan tag:
Jika Anda membuat gambar, Anda dapat menambahkan label ke sana dan memfilter wadah yang berjalan berdasarkan label
Metode yang tidak dapat diandalkan
tidak selalu berhasil
memfilter menurut nama wadah, bukan nama gambar
bermasalah karena nama gambar dapat muncul di kolom lain untuk gambar lainnya
sumber
Saya membuat
/usr/local/bin/docker.stop
yang mengambil nama gambar (menganggap Anda hanya memiliki satu berjalan).sumber
Saya mencoba untuk membungkus perintah Docker saya dalam tugas menelan dan menyadari bahwa Anda dapat melakukan hal berikut:
Ini mungkin tidak berfungsi untuk skenario di mana Anda memiliki beberapa wadah dengan nama yang sama (jika itu mungkin), tetapi untuk kasus penggunaan saya itu sempurna.
sumber
Dalam kasus saya
--filter ancestor=<image-name>
tidak berfungsi, jadi perintah berikut membersihkan wadah Docker untuk saya:sumber
daftar semua wadah dengan info dan ID
sumber
Menambahkan di atas jawaban luar biasa @VonC, berikut adalah fungsi ZSH yang dapat Anda tambahkan ke file .zshrc Anda:
Kemudian di baris perintah Anda, cukup lakukan
dockstop myImageName
dan itu akan berhenti dan menghapus semua kontainer yang dimulai dari gambar bernama myImageName.sumber
Ini sudah cukup.
sumber
gunakan: buruh pelabuhan kontainer hentikan $ (kontainer buruh pelabuhan ls -q --filter leluhur = mongo)
sumber
Jika Anda ingin memilih
AWK
pendekatan yang sederhana , inilah pilihan saya:$(docker ps | awk '{ if($2 == "<your image name>") { print $NF}}')
- mencetak nama wadah buruh pelabuhan berdasarkan pada gambar inputdocker ps
- daftar semua wadahawk '{ if($2 == "<your-image-name>") { print $NF}}'
- Kolom parsed keduadocker ps
memberi nama gambar. Membandingkannya dengan nama gambar Anda akan mengeksekusiprint $NF
yang mencetak nama wadah.docker rm -f
menghapus wadahMisalnya, menghapus semua wadah gambar ubuntu yang berjalan, dapat dilakukan hanya dengan:
PS: Ingatlah untuk memasukkan tag gambar dalam AWK, karena itu adalah pembanding yang sama.
sumber
Anda dapat menggunakan
ps
perintah untuk melihat wadah yang sedang berjalan:Dari sana Anda akan melihat nama wadah Anda bersama dengan ID wadah yang Anda cari. Berikut informasi lebih lanjut tentang
docker ps
.sumber