คำสั่งเดียวเพื่อหยุดและลบคอนเทนเนอร์นักเทียบท่า


144

มีคำสั่งใดบ้างที่สามารถรวมdocker stopและdocker rmคำสั่งเข้าด้วยกัน ทุกครั้งที่ฉันต้องการลบคอนเทนเนอร์ที่กำลังทำงานอยู่ฉันต้องดำเนินการ 2 คำสั่งตามลำดับฉันสงสัยว่ามีคำสั่งรวมที่ทำให้กระบวนการนี้ง่ายขึ้นหรือไม่

docker stop CONTAINER_ID
docker rm CONTATINER_ID

2
ขึ้นอยู่กับคอนเทนเนอร์: ctl.io/developers/blog/post/…
VonC

คำตอบ:


252

คุณสามารถใช้ได้ :

docker rm -f CONTAINER_ID

มันจะนำคอนเทนเนอร์ออกแม้ว่าจะยังทำงานอยู่ก็ตาม

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

คุณยังสามารถเรียกใช้คอนเทนเนอร์ของคุณด้วย--rmตัวเลือกซึ่งจะถูกลบออกโดยอัตโนมัติเมื่อหยุด

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

แก้ไข:rm -fอาจเป็นอันตรายสำหรับข้อมูลของคุณและเหมาะที่สุดสำหรับการทดสอบหรือการพัฒนาภาชนะบรรจุ ความคิดเห็นของ @ เบอร์นาร์ดในเรื่องนี้น่าอ่าน


17
ระวัง. docker rm -fส่งสัญญาณ SIGKILL ไปยังคอนเทนเนอร์ ซึ่งอาจทำให้คอนเทนเนอร์มีเวลาบันทึกสถานะได้อย่างถูกต้อง สำหรับบรรจุไร้สัญชาติที่ไม่ใช่หนึ่งควรใช้จริงๆตามมาด้วยdocker stop docker rmสิ่งนี้จะส่งสัญญาณ SIGTERM ซึ่งโดยค่าเริ่มต้นจะให้เวลาสูงสุด 10 วินาทีในการปิดระบบก่อนที่ Docker daemon จะส่ง SIGKILL ในที่สุด
Bernard

3
ฉันพบว่าตัวเลือก --rm เหมาะสมที่สุดสำหรับคอนเทนเนอร์ที่มีอายุสั้น
PKV

32
docker stop CONTAINER_ID | xargs docker rm

ความคิดที่ชาญฉลาด ฉันชอบมันเนื่องจากสามารถใช้กับคำสั่งอื่น ๆ ได้เช่นกันโดยที่คุณต้องการส่งผ่านอาร์กิวเมนต์บนสองคำสั่งโดยไม่ต้องทำซ้ำหรือใช้ตัวแปร
สิงโต

17

คุณสามารถหยุดและลบคอนเทนเนอร์ได้ด้วยคำสั่งเดียวที่$_ให้เสียงสะท้อนสุดท้ายแก่คุณ

docker stop CONTAINER && docker rm $_

7

ในกรณีของฉันที่จะลบคอนเทนเนอร์ที่กำลังทำงานอยู่ทั้งหมดฉันใช้

docker rm -f $(docker ps -a -q); docker rmi $(docker images -q)

แม้ว่าจะค่อนข้างชัดเจน แต่ก็ควรระบุว่าควรลบภาพด้วย (และไม่ใช่ส่วนหนึ่งของคำถาม)
EndlosSchleife


2

ลบคอนเทนเนอร์ทั้งหมด: docker ps -aq | xargs docker rm -f


ข้อผิดพลาดถูกปฏิเสธการอนุญาต เพิ่ม sudo sudo docker ps -aq | sudo xargs docker rm -f
Hussain K

2

การดำเนินการนี้จะหยุดและลบภาพทั้งหมดรวมถึงคอนเทนเนอร์ที่กำลังทำงานอยู่ขณะที่เราใช้ -f

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

1

ใช้คำสั่ง docker ps พร้อมแฟล็ก -a เพื่อค้นหาชื่อหรือ ID ของคอนเทนเนอร์ที่คุณต้องการลบ

docker ps -a

ในการลบ: $ docker rm ID_or_Name ID_or_Name

นำภาชนะออกเมื่อออก:

หากคุณรู้ว่าคุณกำลังสร้างคอนเทนเนอร์ที่คุณไม่ต้องการเก็บไว้เมื่อทำเสร็จแล้วคุณสามารถเรียกใช้ docker run --rm เพื่อลบโดยอัตโนมัติเมื่อออกจาก

เรียกใช้และลบ: docker run --rm image_name

ลบคอนเทนเนอร์ที่ออกทั้งหมด:

คุณสามารถค้นหาคอนเทนเนอร์โดยใช้นักเทียบท่า ps -a และกรองตามสถานะ: สร้าง, รีสตาร์ท, ทำงาน, หยุดชั่วคราวหรือออก หากต้องการตรวจสอบรายการคอนเทนเนอร์ที่ออกให้ใช้แฟล็ก -f เพื่อกรองตามสถานะ เมื่อคุณตรวจสอบแล้วคุณต้องการลบคอนเทนเนอร์เหล่านั้นโดยใช้ -q เพื่อส่ง ID ไปยังคำสั่ง docker rm

รายการ:

docker ps -a -f status=exited

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

ลบคอนเทนเนอร์โดยใช้ตัวกรองมากกว่าหนึ่งตัว :

ตัวกรอง Docker สามารถรวมกันได้โดยการทำซ้ำแฟล็กตัวกรองด้วยค่าเพิ่มเติม ผลลัพธ์นี้เป็นรายการคอนเทนเนอร์ที่ตรงตามเงื่อนไขอย่างใดอย่างหนึ่ง ตัวอย่างเช่นหากคุณต้องการลบคอนเทนเนอร์ทั้งหมดที่ทำเครื่องหมายว่าสร้างแล้ว (สถานะที่อาจเกิดขึ้นเมื่อคุณเรียกใช้คอนเทนเนอร์ด้วยคำสั่งที่ไม่ถูกต้อง) หรือออกคุณสามารถใช้สองตัวกรอง:

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

หยุดและลบคอนเทนเนอร์ทั้งหมด:

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

0

สำหรับการถอดภาชนะเดียว

docker rm -f CONTAINER_ID

สำหรับการถอดคอนเทนเนอร์ทั้งหมด

docker rm -f `docker container ps -qa`

0

เพื่อลบคอนเทนเนอร์ที่หยุดทั้งหมด docker system prune

หากต้องการหยุดคอนเทนเนอร์ที่ใช้งานจริงให้docker stop CONTAINER_IDรอ 10 วินาทีแล้วเรียกdocker kill CONTAINER_ID

หรือด้วยdocker kill CONTAINER_IDคุณสามารถหยุดภาชนะได้ทันที


0

ลบคอนเทนเนอร์ทั้งหมดด้วย xargs

docker ps -a -q | xargs docker rm 

สำหรับการหยุดทั้งหมด

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

นำภาชนะเดียวออก

docker rm -f <container_id>
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.