Thứ năm, 06/08/2020 | 00:00 GMT+7

Cách loại bỏ image Docker, container và khối lượng

Docker giúp bạn dễ dàng gói các ứng dụng và dịch vụ của bạn trong các containers để bạn có thể chạy chúng ở mọi nơi. Tuy nhiên, khi bạn làm việc với Docker, bạn cũng dễ dàng tích lũy quá nhiều hình ảnh, containers và data volumes không sử dụng làm lộn xộn kết quả và tiêu tốn dung lượng đĩa.

Một tờ Docker Cheat

Docker cung cấp cho bạn tất cả các công cụ bạn cần để dọn dẹp hệ thống của bạn khỏi dòng lệnh. Hướng dẫn kiểu ghi chú này cung cấp tham chiếu nhanh đến các lệnh hữu ích để giải phóng dung lượng đĩa và giữ cho hệ thống của bạn được tổ chức bằng cách xóa các hình ảnh, containers và dung lượng Docker không sử dụng.

Cách sử dụng Hướng dẫn này:

  • Hướng dẫn này ở định dạng ghi chú với các đoạn dòng lệnh độc lập
  • Chuyển đến bất kỳ phần nào có liên quan đến nhiệm vụ bạn đang cố gắng hoàn thành.

Cú pháp thay thế lệnh, command $( command ) , được sử dụng trong các lệnh có sẵn trong nhiều shell phổ biến như bash, zsh và Windows Powershell.

Xóa tất cả hình ảnh, containers , dung lượng và mạng không sử dụng hoặc nguy hiểm

Docker cung cấp một lệnh duy nhất sẽ dọn dẹp mọi tài nguyên - hình ảnh, containers , dung lượng và mạng - đang treo lơ lửng (không được liên kết với containers ):

  • docker system prune

Ngoài ra, để xóa mọi containers đã dừng và tất cả hình ảnh không sử dụng (không chỉ hình ảnh treo lơ lửng), hãy thêm cờ -a vào lệnh:

  • docker system prune -a

Xóa Docker image

Xóa một hoặc nhiều hình ảnh cụ thể

Sử dụng lệnh docker images với cờ -a để định vị ID của ảnh bạn muốn xóa. Điều này sẽ hiển thị cho bạn mọi hình ảnh, bao gồm các lớp hình ảnh trung gian. Khi bạn đã định vị được hình ảnh muốn xóa, bạn có thể chuyển ID hoặc thẻ của chúng vào docker rmi :

Danh sách:

  • docker images -a

Tẩy:

  • docker rmi Image Image

Xóa hình ảnh lủng lẳng

Docker image bao gồm nhiều lớp. Hình ảnh nguy hiểm là các lớp không có mối quan hệ với bất kỳ hình ảnh được gắn thẻ nào. Chúng không còn phục vụ một mục đích và tiêu tốn dung lượng đĩa. Chúng có thể được định vị bằng cách thêm cờ bộ lọc, -f với giá trị là dangling=true vào lệnh docker images . Khi bạn chắc chắn muốn xóa chúng, bạn có thể sử dụng lệnh docker image prune :

Lưu ý: Nếu bạn xây dựng hình ảnh mà không gắn thẻ nó, hình ảnh đó sẽ xuất hiện trong danh sách hình ảnh treo lơ lửng vì nó không có liên kết với hình ảnh được gắn thẻ. Bạn có thể tránh trường hợp này bằng cách cung cấp một thẻ khi bạn tạo và bạn có thể gắn thẻ một hình ảnh trở về trước bằng lệnh thẻ docker .

Danh sách:

  • docker images -f dangling=true

Tẩy:

  • docker image prune

Xóa hình ảnh theo một mẫu

Bạn có thể tìm thấy tất cả các hình ảnh trùng với một mẫu bằng cách sử dụng kết hợp docker imagesgrep . Sau khi hài lòng, bạn có thể xóa chúng bằng cách sử dụng awk để chuyển ID vào docker rmi . Lưu ý các tiện ích này không do Docker cung cấp và không nhất thiết phải có sẵn trên tất cả các hệ thống:

Danh sách:

  • docker images -a | grep "pattern"

Tẩy:

  • docker images -a | grep "pattern" | awk '{print $3}' | xargs docker rmi

Xóa tất cả hình ảnh

Tất cả các Docker image trên một hệ thống có thể được liệt kê bằng cách thêm -a vào lệnh docker images . Khi bạn chắc chắn muốn xóa tất cả, bạn có thể thêm cờ -q để chuyển ID hình ảnh vào docker rmi :

Danh sách:

  • docker images -a

Tẩy:

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

Loại bỏ containers

Xóa một hoặc nhiều containers cụ thể

Sử dụng lệnh docker ps với cờ -a để định vị tên hoặc ID của các containers bạn muốn loại bỏ:

Danh sách:

  • docker ps -a

Tẩy:

  • docker rm ID_or_Name ID_or_Name

Loại bỏ một containers khi thoát

Nếu bạn biết khi nào bạn đang tạo một containers mà bạn sẽ không muốn giữ nó lại sau khi hoàn tất, bạn có thể docker run --rm để tự động xóa nó khi nó thoát.

Chạy và Xóa:

  • docker run --rm image_name

Xóa tất cả các containers đã thoát

Bạn có thể định vị các containers bằng cách sử dụ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, đang chạy, tạm dừng hoặc đã thoát. Để xem lại danh sách các containers đã thoát, hãy 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 containers đó, hãy sử dụng -q để chuyển các ID vào lệnh docker rm .

Danh sách:

  • docker ps -a -f status=exited

Tẩy:

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

Xóa các containers 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 danh sách các containers đá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 containers được đánh dấu là Đã tạo (trạng thái có thể dẫn đến khi bạn chạy containers bằng lệnh không hợp lệ) hoặc Đã thoát , bạn có thể sử dụng hai bộ lọc:

Danh sách:

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

Tẩy:

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

Loại bỏ các containers theo một mẫu

Bạn có thể tìm thấy tất cả các containers phù hợp với một mẫu bằng cách sử dụng kết hợp giữa docker psgrep . Khi thấy ổn rằng bạn có danh sách muốn xóa, bạn có thể sử dụng awkxargs để cung cấp ID cho docker rm . Lưu ý những tiện ích này không do Docker cung cấp và không nhất thiết phải có trên tất cả các hệ thống:

Danh sách:

  • docker ps -a | grep "pattern

Tẩy:

  • docker ps -a | grep "pattern" | awk '{print $1}' | xargs docker rm

Dừng và xóa tất cả các containers

Bạn có thể xem lại các containers trên hệ thống của bạn bằng docker ps . Thêm cờ -a sẽ hiển thị tất cả các containers . Khi bạn chắc chắn muốn xóa chúng, bạn có thể thêm cờ -q để cung cấp ID cho các lệnh docker stop docker rmdocker rm :

Danh sách:

  • docker ps -a

Tẩy:

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

Xóa tập

Xóa một hoặc nhiều dung lượng cụ thể - Docker 1.9 trở lên

Sử dụng lệnh docker volume ls để xác định tên volume hoặc các tên bạn muốn xóa. Sau đó, bạn có thể xóa một hoặc nhiều ổ đĩa bằng lệnh docker volume rm :

Danh sách:

  • docker volume ls

Tẩy:

  • docker volume rm volume_name volume_name

Loại bỏ dung lượng treo lơ lửng - Docker 1.9 trở lên

Vì quan điểm của các tập là tồn tại độc lập với các containers , khi một containers bị xóa, một tập sẽ không tự động bị xóa cùng một lúc. Khi một ổ đĩa tồn tại và không còn được kết nối với bất kỳ containers nào, nó được gọi là một ổ đĩa treo. Để xác định vị trí của chúng để xác nhận bạn muốn loại bỏ chúng, bạn có thể sử dụng lệnh docker volume ls với một bộ lọc để giới hạn kết quả ở những volume lủng lẳng. Khi thấy ổn với danh sách, bạn có thể xóa tất cả chúng bằng cách docker volume prune :

Danh sách:

  • docker volume ls -f dangling=true

Tẩy:

  • docker volume prune

Loại bỏ một containers và dung lượng của nó

Nếu bạn đã tạo một tập chưa có tên, nó có thể bị xóa cùng lúc với containers có cờ -v . Lưu ý điều này chỉ hoạt động với các tập khôngtên . Khi containers được gỡ bỏ thành công, ID của nó sẽ được hiển thị. Lưu ý không có tham chiếu nào liên quan đến việc xóa tập. Nếu nó không được đặt tên, nó sẽ âm thầm bị xóa khỏi hệ thống. Nếu nó được đặt tên, nó âm thầm tồn tại.

Tẩy:

  • docker rm -v container_name

Kết luận

Hướng dẫn này bao gồm một số lệnh phổ biến được sử dụng để xóa hình ảnh, containers và ổ đĩa bằng Docker. Có nhiều kết hợp và cờ khác được dùng với mỗi. Để có hướng dẫn toàn diện về những thứ có sẵn, hãy xem tài liệu Docker để biết sơ lược docker system prune , docker rmi , docker rmdocker volume rm . Nếu có các nhiệm vụ dọn dẹp phổ biến mà bạn muốn xem trong hướng dẫn, vui lòng hỏi hoặc đưa ra đề xuất trong phần comment .


Tags:

Các tin trước

Cách truy cập từ xa các ứng dụng GUI bằng Docker và Caddy trên Ubuntu 20.04 2020-08-04
Cách mở rộng và bảo mật một ứng dụng Django với Docker, Nginx và Let's Encrypt 2020-07-10
Cách tạo ứng dụng Node.js với Docker trên Ubuntu 20.04 2020-06-30
Cách cài đặt Docker Compose trên Ubuntu 20.04 [Quickstart] 2020-06-11
Cách cài đặt và thiết lập Laravel với Docker Compose trên Ubuntu 20.04 2020-06-09
Cách cài đặt và sử dụng Docker trên Ubuntu 20.04 2020-06-09
Cách cài đặt và sử dụng Docker Compose trên Ubuntu 20.04 2020-06-05
Cách chia sẻ dữ liệu giữa các container Docker 2020-05-21
Cách sử dụng Traefik 1.7.21 làm Reverse Proxy cho Docker Containers trên CentOS 7 2020-05-12
Cách cài đặt Drupal với Docker Compose 2020-04-25