2016-05-12 19 views
12

question này giải thích cách ngăn các vùng chứa Docker bắt đầu từ một hình ảnh.Dừng vùng chứa đế lót bằng tên hình ảnh và không báo lỗi nếu không có vùng chứa nào đang chạy

Nhưng nếu không có vùng chứa đang hoạt động, tôi gặp lỗi điểm dừng trình yêu cầu tối thiểu một đối số. Điều đó có nghĩa là tôi không thể chạy lệnh này trong một tập lệnh .sh dài mà không bị đứt.

Làm cách nào để thay đổi các lệnh này hoạt động ngay cả khi không tìm thấy kết quả nào?

docker stop $(docker ps -q --filter ancestor="imagname") 
docker rm `docker ps -aq` && 

(Tôi đang tìm kiếm một câu trả lời Docker tinh khiết nếu có thể, không phải là một thử nghiệm bash, như tôi đang chạy kịch bản của tôi qua ssh vì vậy tôi không nghĩ rằng tôi có quyền truy cập để kiểm tra kịch bản bình thường)

+1

Tìm thấy câu trả lời trong nhận xét của kampde về bài đăng trên blog này: http://blog.yohanliyanage.com/2015/05/docker-clean-up-after-yourself/. Chỉ cần sử dụng xargs với r để bỏ qua các đường ống rỗng: ** docker ps -q --filter ancestor = "imageName" | xargs -r docker stop ** – Richard

+1

Bạn nên đăng giải pháp của mình làm câu trả lời và chấp nhận nó. –

Trả lời

16

Đưa này trong trường hợp chúng ta có thể giúp đỡ người khác:

Để dừng container sử dụng hình ảnh cụ thể:

docker ps -q --filter ancestor="imagename" | xargs -r docker stop 

Để tháo container đã thoát:

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

Để loại bỏ hình ảnh không sử dụng:

docker rmi $(docker images -f "dangling=true" -q) 

Nếu bạn đang sử dụng một Docker> 1.9:

docker volume rm $(docker volume ls -qf dangling=true) 

Nếu bạn đang sử dụng Docker < = 1,9, sử dụng này để thay thế:

docker run -v /var/run/docker.sock:/var/run/docker.sock -v /var/lib/docker:/var/lib/docker --rm martin/docker-cleanup-volumes 

Docker 1,13 Cập nhật:

Để loại bỏ hình ảnh không sử dụng:

docker image prune 

Để tháo container không sử dụng:

docker container prune 

Để loại bỏ khối lượng sử dụng:

docker volume prune 

Để loại bỏ mạng không sử dụng :

docker network prune 

Để loại bỏ tất cả các thành phần không sử dụng:

docker system prune 

QUAN TRỌNG: Hãy chắc chắn rằng bạn hiểu được các lệnh và dữ liệu quan trọng trước khi thực hiện sao lưu này trong sản xuất.

+1

cập nhật tốt đẹp cho docker v 1.13 +1 – rocksteady

Các vấn đề liên quan