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 images
và grep
. 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 ps
và grep . Khi thấy ổn rằng bạn có danh sách muốn xóa, bạn có thể sử dụng awk
và xargs
để 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 rm
và docker 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ông có tê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 rm
và docker 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 .
Các tin liên quan
Cách truy cập từ xa các ứng dụng GUI bằng Docker và Caddy trên Ubuntu 20.042020-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