satu perintah untuk menghentikan dan menghapus kontainer buruh pelabuhan

144

Apakah ada perintah yang dapat menggabungkan perintah docker stopdan docker rm? Setiap kali saya ingin menghapus container yang sedang berjalan, saya perlu menjalankan 2 perintah secara berurutan, saya ingin tahu apakah ada perintah gabungan yang dapat menyederhanakan proses ini.

docker stop CONTAINER_ID
docker rm CONTATINER_ID
mainframer
sumber
2
Itu tergantung pada wadahnya: ctl.io/developers/blog/post/…
VonC

Jawaban:

252

Kamu bisa memakai :

docker rm -f CONTAINER_ID

Ini akan menghapus wadah meskipun masih berjalan.

https://docs.docker.com/engine/reference/commandline/rm/

Anda juga dapat menjalankan penampung Anda dengan --rmopsi, itu akan secara otomatis dihapus ketika dihentikan.

https://docs.docker.com/engine/reference/run/#clean-up-rm

Edit: Ini rm -fmungkin berbahaya untuk data Anda dan paling cocok untuk wadah pengujian atau pengembangan. Komentar @ Bernard tentang subjek ini layak dibaca.

vmonteco.dll
sumber
17
Hati-hati. docker rm -fmengirimkan sinyal SIGKILL ke container. Ini mungkin tidak membiarkan waktu penampung untuk menyimpan statusnya dengan benar. Untuk wadah non stateless, seseorang harus benar-benar menggunakan docker stopdiikuti oleh docker rm. Ini mengirimkan sinyal SIGTERM yang secara default memberi kontainer maksimal 10 detik untuk melakukan shutdown sebelum daemon buruh pelabuhan akhirnya mengirim SIGKILL.
Bernard
3
saya menemukan opsi --rm paling sesuai untuk kontainer berumur pendek.
PKV
32
docker stop CONTAINER_ID | xargs docker rm
ortex
sumber
Ide yang cerdas. Saya suka karena dapat digunakan untuk perintah lain juga, di mana Anda ingin menyampaikan argumen pada dua perintah tanpa mengulanginya atau menggunakan variabel.
Singa
17

Anda dapat menghentikan dan menghapus wadah dengan satu perintah yang $_memberi Anda gema terakhir

docker stop CONTAINER && docker rm $_
Axel Monroy
sumber
7

Dalam kasus saya untuk menghapus semua kontainer yang berjalan, saya menggunakan

docker rm -f $(docker ps -a -q); docker rmi $(docker images -q)
pengguna9869932
sumber
Meskipun cukup jelas, ini juga menghapus gambar harus dinyatakan (dan bukan bagian dari pertanyaan).
EndlosSchleife
2

Hapus semua wadah: docker ps -aq | xargs docker rm -f

Andriy Tolstoy
sumber
Mendapat kesalahan izin ditolak. Menambahkan sudo. sudo docker ps -aq | sudo xargs docker rm -f
Hussain K
2

Ini akan menghentikan dan menghapus semua gambar termasuk menjalankan kontainer seperti yang kita gunakan -f

docker rmi -f $(docker images -a -q)
Pranoy Gn
sumber
1

Gunakan perintah docker ps dengan -a flag untuk menemukan nama atau ID container yang ingin Anda hapus

docker ps -a

Untuk menghapus: $ docker rm ID_or_Name ID_or_Name

Hapus wadah saat keluar:

Jika Anda tahu saat Anda membuat container yang tidak ingin Anda simpan setelah selesai, Anda dapat menjalankan docker run --rm untuk secara otomatis menghapusnya saat keluar.

Jalankan dan Hapus: docker run --rm image_name

Hapus semua kontainer yang keluar:

Anda dapat menemukan container menggunakan docker ps -a dan memfilternya berdasarkan statusnya: dibuat, dimulai ulang, dijalankan, dijeda, atau keluar. Untuk meninjau daftar penampung yang keluar, gunakan tanda -f untuk memfilter berdasarkan status. Ketika Anda telah memverifikasi Anda ingin menghapus kontainer tersebut, menggunakan -q untuk meneruskan ID ke perintah docker rm.

Daftar:

docker ps -a -f status=exited

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

Hapus wadah menggunakan lebih dari satu filter :

Filter Docker dapat digabungkan dengan mengulangi bendera filter dengan nilai tambahan. Ini menghasilkan daftar kontainer yang memenuhi salah satu kondisi. Misalnya, jika Anda ingin menghapus semua penampung yang ditandai sebagai Dibuat (keadaan yang dapat terjadi saat Anda menjalankan penampung dengan perintah yang tidak valid) atau Keluar, Anda dapat menggunakan dua filter:

docker ps -a -f status=exited -f status=created

Hentikan dan Hapus semua wadah:

docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)
Prakash AWS
sumber
0

Untuk menghapus satu wadah

docker rm -f CONTAINER_ID

Untuk menghapus semua wadah

docker rm -f `docker container ps -qa`
Abhinav Mehta
sumber
0

Untuk menghapus semua kontainer yang dihentikan docker system prune

Untuk menghentikan container hidup, docker stop CONTAINER_IDtunggu 10 detik dan ia memanggildocker kill CONTAINER_ID

Atau dengan docker kill CONTAINER_ID, Anda bisa langsung menghentikan penampungnya

Nuriddin Kudratov
sumber
0

keluarkan semua wadah dengan xargs

docker ps -a -q | xargs docker rm 

untuk menghentikan semua

sudo docker ps -a -q |sudo  xargs docker stop 

hapus satu wadah

docker rm -f <container_id>
dılo sürücü
sumber