Cách loại bỏ hình ảnh Docker, container và khối lượng

Giới thiệu

Docker giúp dễ dàng bọc các ứng dụng và dịch vụ của bạn trong các thùng chứa để bạn có thể chạy chúng ở bất cứ đâu. Khi bạn làm việc với Docker, tuy nhiên, thật dễ dàng để tích lũy một số lượng hình ảnh, thùng chứa và dữ liệu không sử dụng quá mức làm lộn xộn đầu ra và tiêu thụ không gian đĩa.

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 mình từ dòng lệnh. Hướng dẫn theo phong cách gian lận này cung cấp một tham chiếu nhanh đến các lệnh hữu ích để giải phóng không gian đĩa và giữ cho hệ thống của bạn được tổ chức bằng cách loại bỏ hình ảnh, thùng chứa và khối lượng của 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 Tấm cheat với đoạn trích đường lệnh khép kín.
  • 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.

LƯU Ý: Cú pháp thay thế lệnh, Lệnh $ ( Lệnh ) , được sử dụng trong các lệnh có sẵn trong nhiều vỏ phổ biến, chẳng hạn như Bash, ZSH và Windows PowerShell. The command substitution syntax, command $(command), used in the commands is available in many popular shells, such as bash, zsh, and Windows Powershell.

Thanh lọc tất cả hình ảnh không sử dụng hoặc lơ lửng, container, khối lượng và mạng

Docker cung cấp một lệnh duy nhất sẽ dọn sạch mọi tài nguyên - hình ảnh, container, khối lượng và mạng - đó là lơ lửng (không được gắn thẻ hoặc liên kết với một container): dangling (not tagged or associated with a container):

  • hệ thống docker prune.

Để loại bỏ thêm bất kỳ thùng chứa nào và tất cả các hình ảnh không được sử dụng (không chỉ là hình ảnh lơ lửng), thêm -a Cờ vào lệnh: < / a >.-a flag to the command:

  • hệ thống docker prune -a

Xóa hình ảnh Docker

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

Sử dụng hình ảnh Docker Lệnh với -a Cờ để xác định vị trí ID của hình ảnh bạn muốn xóa. Điều này sẽ cho bạn thấy mọi hình ảnh, bao gồm các lớp hình ảnh trung gian. Khi bạn đã đặt các hình ảnh bạn muốn xóa, bạn có thể chuyển ID hoặc thẻ của họ docker rmi : docker images command with the -a flag to locate the ID of the images you want to remove. This will show you every image, including intermediate image layers. When youve located the images you want to delete, you can pass their ID or tag to docker rmi:

List:

  • hình ảnh docker -a.

Remove:

  • Docker rmi Hình ảnh Hình ảnh

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

hình ảnh docker bao gồm nhiều lớp. Hình ảnh treo lủng lẳng 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ục đích và tiêu thụ không gian đĩa. Chúng có thể được đặt bằng cách thêm cờ bộ lọc -f with a value of dangling=true to the docker images command. When youre sure you want to delete them, you can use the docker image prune command:

Lưu ý: Nếu bạn xây dựng một hình ảnh mà không gắn thẻ, hình ảnh sẽ xuất hiện trong danh sách các hình ảnh treo lủng 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 tình huống này bằng cách cung cấp một thẻ khi bạn xây dựng và bạn có thể ký thẻ hồi tố với thẻ Docker .

List:

  • hình ảnh docker -f lơ lửng = đúng

Remove:

  • hình ảnh docker prune.

Loại bỏ hình ảnh theo một mẫu

bạn có thể tìm thấy tất cả các hình ảnh phù hợp với một mẫu bằng cách sử dụng kết hợp hình ảnh docker và grep . Khi bạn hài lòng, bạn có thể xóa chúng bằng cách sử dụng awk để truyền id tới docker rmi . Lưu ý rằng các tiện ích này không được cung cấp bởi docker và không nhất thiết phải có sẵn trên tất cả các hệ thống: docker images and grep. Once youre satisfied, you can delete them by using awk to pass the IDs to docker rmi. Note that these utilities are not supplied by Docker and are not necessarily available on all systems:

List:

  • hình ảnh docker -a | grep " Mẫu " "

Remove:

  • hình ảnh docker -a | grep " Mẫu " | awk '{in $ 3}' | Xargs Docker RMI.

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

Tất cả các hình ảnh Docker trên một hệ thống có thể được liệt kê bằng cách thêm -a vào Hình ảnh Docker Lệnh . Khi bạn chắc chắn rằng bạn muốn xóa tất cả chúng, bạn có thể thêm -q cờ để truyền id hình ảnh thành Docker RMI : -a to the docker images command. Once youre sure you want to delete them all, you can add the -q flag to pass the image ID to docker rmi:

List:

  • hình ảnh docker -a.

Remove:

  • Docker RMI $ (hình ảnh docker -a -q)

Loại bỏ container.

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

Sử dụng Docker PS Lệnh với -a Cờ để xác định vị trí tên hoặc ID của các thùng chứa bạn muốn xóa: docker ps command with the -a flag to locate the name or ID of the containers you want to remove:

List:

  • Docker PS -A.

Remove:

  • Docker RM id_or_name id_or_name

Loại bỏ một thùng chứa 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 chạy --rm để tự động xóa nó khi thoát: docker run --rm to automatically delete it when it exits:

Chạy và xóa:

  • Docker chạy --RM image_name

Loại bỏ tất cả các container thoát ra

Bạn có thể định vị các thùng chứa bằng Docker PS -A và lọc chúng theo trạng thái của chúng: Đã tạo < / a> , Khởi động lại , Chạy , < / a> Tạm dừng , hoặc Đã thoát . Để xem lại danh sách thoát container, sử dụng -f Cờ để bộ 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 đó, hãy sử dụng -q để chuyển ID thành Docker RM Lệnh: docker ps -a and filter them by their status: created, restarting, running, paused, or exited. To review the list of exited containers, use the -f flag to filter based on status. When youve verified you want to remove those containers, use -q to pass the IDs to the docker rm command:

List:

  • Docker ps -a -f trạng thái = thoát

Remove:

  • Docker RM $ (Docker PS -A -f Status = Exed -Q)

Xóa các thùng chứa bằng cách sử dụng nhiều bộ lọc

Xóa một hoặc nhiều container cụ thểcreated (a state which can result when you run a container with an invalid command) or exited, you can use two filters:

List:

  • Docker ps -a -f status = thoát -f trạng thái = tạo

Remove:

  • Docker RM $ (Docker PS -A -F Status = Exjited -f Status = PREADED -Q)

Loại bỏ container theo một mẫu

Bạn có thể tìm thấy tất cả các thùng chứa khớp với một mẫu bằng cách sử dụng kết hợp Docker PS và GREP . Khi bạn hài lòng rằng bạn có danh sách bạn muốn xóa, bạn có thể sử dụng awk và xargs để cung cấp ID thành Docker RM . Lưu ý rằng các tiện ích này không được cung cấp bởi docker và không nhất thiết phải có sẵn trên tất cả các hệ thống: docker ps and grep. When youre satisfied that you have the list you want to delete, you can use awk and xargs to supply the ID to docker rm. Note that these utilities are not supplied by Docker and are not necessarily available on all systems:

List:

  • Docker PS -A | grep " Mẫu " "

Remove:

  • Docker PS -A | grep " Mẫu " | awk '{in $ 1}' | Xargs Docker RM.

Dừng và xóa tất cả các thùng chứa

Bạn có thể xem lại các container trên hệ thống của mình với docker ps . Thêm -a Cờ sẽ hiển thị tất cả các thùng chứa. Khi bạn chắc chắn rằng bạn muốn xóa chúng, bạn có thể thêm -q flag to supply the IDs to the docker stop and docker rm commands:

List:

  • Docker PS -A.

Remove:

  • Docker RM
  • 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 chạy --rm để tự động xóa nó khi thoát: Chạy và xóa:

Docker chạy --RM

Loại bỏ tất cả các container thoát ra

Bạn có thể định vị các thùng chứa bằng Docker PS -A và lọc chúng theo trạng thái của chúng: Đã tạo < / a> , Khởi động lại , Chạy , < / a> Tạm dừng , hoặc Đã thoát . Để xem lại danh sách thoát container, sử dụng -f Cờ để bộ 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 đó, hãy sử dụng -q để chuyển ID thành Docker RM Lệnh: Docker Tập LS Lệnh để xác định vị trí tên âm lượng hoặc tên bạn muốn xóa. Sau đó, bạn có thể xóa một hoặc nhiều tập với Docker tập RM Lệnh:

List:

  • Docker ps -a -f trạng thái = thoát

Remove:

  • Docker RM $ (Docker PS -A -f Status = Exed -Q) Volume_name volum_name

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

Vì điểm của khối lượng là tồn tại độc lập với các thùng chứa, khi một thùng chứa được gỡ bỏ, một âm lượng sẽ không tự động bị xóa cùng một lúc. Khi một âm lượng tồn tại và không còn được kết nối với bất kỳ container nào, nó được gọi là lủng lẳng khối lượng . Để xác định chúng để xác nhận bạn muốn xóa chúng, bạn có thể sử dụng lệnh ổ đĩa LS với bộ lọc để giới hạn kết quả với khối lượng lủng lẳng. Khi bạn hài lòng với danh sách, bạn có thể xóa tất cả chúng bằng Docker Volume Prune :

List:

  • Docker tập ls -f lơ lửng = đúng

Remove:

  • Docker khối lượng prune.

Xóa một thùng chứa và khối lượng của nó

Nếu bạn đã tạo một âm lượng không tên, nó có thể bị xóa cùng lúc với bộ chứa với -v Cờ. Lưu ý rằng điều này chỉ hoạt động với không tên Khối lượng. Khi container được gỡ bỏ thành công, ID của nó được hiển thị. Lưu ý rằng không có tài liệu tham khảo nào được thực hiện để loại bỏ âm lượng. Nếu nó không được đặt tên, nó đang âm thầm bị xóa khỏi hệ thống. Nếu nó được đặt tên, nó âm thầm ở lại hiện tại.

Remove:

  • Docker rm -v container_name

Phần kết luận

Hướng dẫn này bao gồm một số các lệnh phổ biến được sử dụng để loại bỏ hình ảnh, thùng chứa và khối lượng với docker. Có nhiều kết hợp và cờ khác có thể được sử dụng với mỗi kết hợp. Để biết hướng dẫn toàn diện về những gì có sẵn, hãy xem Tài liệu Docker cho docker system prune, docker rmi, docker rm, and docker volume rm. If there are common cleanup tasks youd like to see in the guide, please ask or make suggestions in the comments.

Để biết chi tiết về các thành phần khác nhau của thùng chứa Docker, hãy xem hệ sinh thái Docker: Giới thiệu về các thành phần phổ biến.