Cập nhật tháng 9 năm 2016: Docker 1.13: PR 26108 và cam kết 86de7c0 giới thiệu một vài lệnh mới để giúp tạo thuận lợi cho việc hiển thị bao nhiêu không gian dữ liệu của trình nền docker trên đĩa và cho phép dễ dàng dọn sạch phần thừa "không cần thiết".
docker system prune
sẽ xóa TẤT CẢ dữ liệu lơ lửng (tức là theo thứ tự: container bị dừng, khối lượng không có container và hình ảnh không có container). Ngay cả dữ liệu không sử dụng, với -a
tùy chọn.
Bạn cũng có:
Đối với hình ảnh không sử dụng , sử dụng docker image prune -a
(để loại bỏ hình ảnh lơ lửng và không được chỉnh sửa).
Cảnh báo: ' không sử dụng ' có nghĩa là "hình ảnh không được tham chiếu bởi bất kỳ container nào": hãy cẩn thận trước khi sử dụng -a
.
Như được minh họa trong câu trả lời của AL , sẽ loại bỏ tất cả các hình ảnh không sử dụng, không chỉ những hình ảnh lơ lửng ... có thể là một chút quá nhiều.docker system prune --all
Kết hợp docker xxx prune
với --filter
tùy chọn có thể là một cách tuyệt vời để hạn chế việc cắt tỉa ( docker SDK API tối thiểu 1.28, vì vậy docker 17.04+ )
Các bộ lọc hiện được hỗ trợ là:
until (<timestamp>)
- chỉ xóa các thùng chứa, hình ảnh và mạng được tạo trước dấu thời gian đã cho
label
( label=<key>
, label=<key>=<value>
, label!=<key>
, Hoặc label!=<key>=<value>
) - chỉ loại bỏ các thùng chứa, hình ảnh, mạng, và khối lượng với (hoặc không , trong trường hợp label!=...
được sử dụng) các nhãn theo quy định.
Xem " Hình ảnh tỉa " cho một ví dụ.
Câu trả lời gốc (tháng 9 năm 2016)
Tôi thường làm:
docker rmi $(docker images --filter "dangling=true" -q --no-trunc)
Tôi có một bí danh để xóa những [hình ảnh lơ lửng] 13 :drmi
Bộ dangling=true
lọc tìm thấy hình ảnh không sử dụng
Bằng cách đó, mọi hình ảnh trung gian không còn được tham chiếu bởi hình ảnh được gắn nhãn sẽ bị xóa.
Tôi làm tương tự đầu tiên cho các quy trình đã thoát (container)
alias drmae='docker rm $(docker ps -qa --no-trunc --filter "status=exited")'
Như haridsv chỉ ra trong các ý kiến :
Về mặt kỹ thuật, trước tiên bạn nên dọn sạch các thùng chứa trước khi làm sạch hình ảnh, vì điều này sẽ bắt được nhiều hình ảnh lơ lửng hơn và ít lỗi hơn .
Jess Frazelle (jfrazelle) có chức năng bashrc :
dcleanup(){
docker rm -v $(docker ps --filter status=exited -q 2>/dev/null) 2>/dev/null
docker rmi $(docker images --filter dangling=true -q 2>/dev/null) 2>/dev/null
}
Để xóa hình ảnh cũ và không chỉ là hình ảnh "không được ước tính", bạn có thể xem xét docker-gc
:
Một container Docker đơn giản và tập lệnh thu gom rác hình ảnh.
- Các container đã thoát hơn một giờ trước được gỡ bỏ.
- Hình ảnh không thuộc về bất kỳ container nào còn lại sau đó sẽ bị xóa.
"dangling=true"
thực sự có nghĩa là gì?