lệnh duy nhất để dừng và loại bỏ container docker


138

Có lệnh nào có thể kết hợp lệnh docker stopdocker rmlệnh với nhau không? Mỗi lần tôi muốn xóa một container đang chạy, tôi cần thực hiện 2 lệnh liên tục, tôi tự hỏi liệu có một lệnh kết hợp có thể đơn giản hóa quá trình này không.

docker stop CONTAINER_ID
docker rm CONTATINER_ID

2
Nó phụ thuộc vào container: ctl.io/developers/blog/post/ từ
VonC

Câu trả lời:


236

Bạn có thể dùng :

docker rm -f CONTAINER_ID

Nó sẽ loại bỏ container ngay cả khi nó vẫn đang chạy.

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

Bạn cũng có thể chạy container của bạn với --rmtùy chọn, nó sẽ tự động bị xóa khi dừng.

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

Chỉnh sửa: Điều này rm -fcó thể nguy hiểm cho dữ liệu của bạn và phù hợp nhất cho các thùng chứa thử nghiệm hoặc phát triển. Nhận xét của @ Bernard về chủ đề này là đáng đọc.


15
Hãy cẩn thận. docker rm -fgửi tín hiệu SIGKILL đến container. Điều này có thể không để cho container thời gian lưu chính xác trạng thái của nó. Đối với các container không trạng thái, người ta thực sự nên sử dụng docker stoptheo sau docker rm. Điều này sẽ gửi tín hiệu SIGTERM theo mặc định cho các container tối đa 10 giây để thực hiện tắt máy trước khi trình nền của docker cuối cùng gửi SIGKILL.
Bernard

3
tôi tìm thấy tùy chọn --rm thích hợp nhất cho các container sống ngắn.
Prashant

30
docker stop CONTAINER_ID | xargs docker rm

Ý tưởng thông minh. Tôi thích nó vì nó cũng có thể được sử dụng cho các lệnh khác, nơi bạn muốn truyền một đối số trên hai lệnh mà không lặp lại chúng hoặc sử dụng một biến.
Sư tử

16

Bạn có thể dừng và loại bỏ container bằng một lệnh duy nhất $_cung cấp cho bạn tiếng vang cuối cùng

docker stop CONTAINER && docker rm $_

7

Trong trường hợp của tôi để loại bỏ tất cả các container đang chạy, tôi đã sử dụng

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


2

Hủy bỏ tất cả các container: docker ps -aq | xargs docker rm -f


Được phép từ chối lỗi. Đã thêm sudo. sudo docker ps -aq | sudo xargs docker rm -f
Hussain K

2

Điều này sẽ dừng và xóa tất cả các hình ảnh bao gồm cả các container đang chạy như chúng ta đang sử dụng -f

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

1

Sử dụng lệnh ps docker với cờ -a để xác định tên hoặc ID của các thùng chứa bạn muốn xóa

docker ps -a

Để xóa: $ docker rm ID_or_Name ID_or_Name

Hủy bỏ một container khi thoát:

Nếu bạn biết khi bạn đang tạo một thùng chứa mà bạn sẽ không muốn giữ nó xung quanh một khi bạn đã hoàn tất, bạn có thể chạy docker run --rm để tự động xóa nó khi nó thoát.

Chạy và xóa: docker run --rm image_name

Loại bỏ tất cả các container đã thoát:

Bạn có thể xác định vị trí các container bằng docker ps -a và lọc chúng theo trạng thái của chúng: đã tạo, khởi động lại, chạy, tạm dừng hoặc thoát. Để xem lại danh sách các container đã thoát, sử dụng cờ -f để lọc dựa trên trạng thái. Khi bạn đã xác minh, bạn muốn xóa các thùng chứa đó, sử dụng -q để chuyển ID cho lệnh rm docker.

Danh sách:

docker ps -a -f status=exited

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

Xóa các thùng chứa bằng nhiều bộ lọc :

Bộ lọc Docker có thể được kết hợp bằng cách lặp lại cờ bộ lọc với một giá trị bổ sung. Điều này dẫn đến một danh sách các container đáp ứng một trong hai điều kiện. Ví dụ: nếu bạn muốn xóa tất cả các vùng chứa được đánh dấu là Đã tạo (trạng thái có thể dẫn đến khi bạn chạy một vùng chứa có lệnh không hợp lệ) hoặc Đã thoát, bạn có thể sử dụng hai bộ lọc:

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

Dừng và loại bỏ tất cả các container:

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

0

Để loại bỏ một container

docker rm -f CONTAINER_ID

Để loại bỏ tất cả các container

docker rm -f `docker container ps -qa`

0

Để loại bỏ tất cả các container đã dừng docker system prune

Để dừng container trực tiếp, docker stop CONTAINER_IDđợi 10 giây và nó gọidocker kill CONTAINER_ID

Hoặc với docker kill CONTAINER_ID, bạn có thể dừng ngay container

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.