Hotline : 07 088 44444
Thích
Chia sẻ

Remove Docker Image, Container và Volume nhanh chóng

22/04/2021

Docker là công cụ giúp dễ dàng đóng gói các ứng dụng và dịch vụ. Nhưng vẫn cần dọn dẹp thường xuyên để tiết kiệm dung lượng đĩa. Dưới đây là hướng dẫn remove Docker image, container và volume.

Docker Cheat Sheet

Giới thiệu về Docker

Docker giúp bạn dễ dàng gói các ứng dụng và dịch vụ trong container để có thể chạy ở bất cứ đâu. Tuy nhiên, khi làm việc với Docker, bạn cũng có thể tích lũy quá nhiều image, container, data volume. Việc này làm lộn xộn đầu ra và tốn nhiều dung lượng đĩa.

Docker cung cấp cho bạn tất cả công cụ cần để dọn dẹp hệ thống từ command line. Cheat Sheet này sẽ hướng dẫn giải phóng dung lượng đĩa, giữ cho hệ thống được gọn gàng bằng cách remove Docker image, container và volume.

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

remove-docker
Docker

Xóa tất cả dangling image, container, volume và network không sử dụng

Docker cung cấp một lệnh để dọn sạch tất cả tài nguyên – dangling image, container, volume và network (không được liên kết với container):

docker system prune

Để remove thêm bất kỳ container đã ngưng hoạt động, hoặc các image không cần sử dụng, thêm flag -a vào lệnh:

docker system prune -a

Remove Docker Image

Xóa một hoặc một số image nhất định

Dùng lệnh docker images với flag -a để định vị ID của image bạn muốn remove. Nó sẽ hiển thị mọi image, kể cả các lớp image trung gian. Sau khi xác định được image muốn xóa, hãy truyền ID hoặc tag của chúng đến docker rmi:

List:

docker images -a

Remove:

docker rmi Image Image

Xóa dangling image

Docker image bao gồm nhiều lớp khác nhau. Danling image là các lớp không có liên hệ gì với các image được tag. Chúng không có mục đích gì nữa, và tiêu tốn dung lượng đĩa. Các dangling image có thể được định vị bằng cách thêm filter flag –f với giá trị dangling=true vào lệnh docker images. Khi bạn chắc chắn muốn xóa chung, bạn có thể dùng lệnh docker image prune.

Lưu ý: Nếu bạn build một image mà không có tag, image sẽ hiện trong danh sách dangling image vì nó không được liên kết với image được tag. Bạn có thể tránh trường hợp này bằng cách bổ sung tag khi build image. Hoặc bạn có thể gắn retroactively tag bằng lệnh dockter tag.

List:

docker images -f dangling=true

Remove:

docker image prune

Xóa image theo mẫu

Bạn có thể tìm được tất cả image theo mẫu cụ thể bằng tổ hợp docker imagesgrep. Sau đó, bạn có thể xóa chúng bằng awk và pass ID đến docker rmi. Lưu ý thằng các tiện ích này không được bổ sung với Docker, và không có sẵn trên tất cả hệ thống:

List:

docker images -a |  grep "pattern"

Remove:

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

Xóa tất cả image

Tất 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. Sau khi chắc chắn bạn muốn xóa hết, hãy thêm flag -q để pass ID image vào docker rmi:

List:

docker images -a

Remove:

docker rmi $(docker images -a -q)

Remove Docker Container

Xóa một hoặc một số container nhất định

Dùng lệnh docker ps với flag -a để định vị tên hoặc ID của container bạn muốn xóa:

List:

docker ps -a

Remove:

docker rm ID_or_Name ID_or_Name

Xóa một container khi thoát

Khi tạo một container, nếu bạn biết mình không muốn giữ nó sau khi công việc hoàn tất, bạn có thể chạy docker run --rm để tự động xóa khi thoát container.

Run and Remove:

docker run --rm image_name

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

Bạn có thể định vị các container bằng docker ps -a và lọc chúng theo trạng thái: được tạo, đang khởi tạo, đang chạy, đã tạm dừng, đã thoát. Để xem danh sách tất cả container đã thoát, dùng flag -f để lọc theo trạng thái. Sau khi xác thực bạn muốn xóa các container này, dùng -q để pass các ID vào lệnh docker rm.

List:

docker ps -a -f status=exited

Remove:

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

Xóa container sử dụng nhiều hơn một bộ lọc

Các docker filter có thể được kết hợp bằng cách lặp lại các filter flag với một giá trị bổ sung. Nó sẽ trả lại danh sách các container thỏa mãn điều kiện. Ví dụ, bạn muốn xóa tất cả container được đánh dấu là Created (trạng thái có thể do bạn chạy container với lệnh không hợp lệ) hoặc Exited:

List

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

Remove:

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

Xóa các container theo mẫu

Bạn có thể tìm tất cả container phù hợp với một mẫu nào đó bằng cách kết hợp docker ps grep. Sau khi hài lòng với danh sách bạn muốn xóa, bạn có thể sử dụng awkxargs để cung cấp ID cho 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 có sẵn trên tất cả hệ thống:

List:

docker ps -a |  grep "pattern”

Remove:

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

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

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

List:

docker ps -a

Remove:

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

Remove Docker Volume

Xóa một hoặc một số volume nhất định – Docker 1.9 trở đi

Dùng lệnh docker volume ls để định vị tên volume bạn muốn xóa. Sau đó, bạn có thể xóa một hoặc nhiều volume với lệnh docker volume rm:

List:

docker volume ls

Remove:

docker volume rm volume_name volume_name

Xóa dangling volume – Docker 1.9 trở đi

Vì các volume tồn tại độc lập với container, nên khi một container bị xóa, volume không được tự động xóa theo. Khi một volume tồn tại và không được kết nối với bất kỳ container nào, nó được gọi là một dangling volume. Để định vị chúng và xác nhận bạn muốn xóa, hãy dùng lệnh docker volume ls với một filter để giới hạn kết quả còn dangling volume. Sau khi thỏa mãn với danh sách, bạn có thể xóa tất cả chúng với docker volume prune:

List:

docker volume ls -f dangling=true

Remove:

docker volume prune

Xóa một container và volume của nó

Nếu bạn tạo một volume chưa được đặt tên, nó có thể bị xóa cùng lúc với container bằng flag -v. Lưu ý rằng nó chỉ hoạt động với các volume chưa đặt tên. Khi container được xóa thành công, ID của nó sẽ được hiển thị. Ngoài ra, không có tham chiếu nào liên quan đến việc xóa volume. Khi nó không được đặt tên, nó sẽ âm thầm bị xóa khỏi hệ thống. Còn khi đã được đặt tên, nó sẽ tiếp tục tồn tại.

Remove:

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 để remove docker image, container và volume. Ngoài ra, còn có nhiều kết hợp với các flag có thể được sử dụng cho mỗi lệnh.

Nếu bạn có thắc mắc hay có vấn đề cần hỗ trợ, bạn có thể liên hệ trực tiếp với Vietnix thông qua các kênh sau:
  • Hotline: 1800 1093 - 07 088 44444
  • Email: support@vietnix.vn
  • Hoặc chat trực tiếp với Vietnix thông qua biểu tượng Livechat ở góc phải màn hình. Đội ngũ chuyên viên của chúng tôi luôn sẵn sàng tư vấn và hỗ trợ bạn 24/7.
Vietnix hiện đang có chương trình khuyến mãi lớn nhất trong năm, giảm giá TRỌN ĐỜI: Đăng ký dùng thử ngay và Vietnix sẽ hoàn tiền 100% nếu quý khách không hài lòng với chất lượng sản phẩm, dịch vụ!
Mình là Bo - admin của Quản Trị Linux. Mình đã có 10 năm làm việc trong mảng System, Network, Security và đã trải nghiệm qua các chứng chỉ như CCNP, CISSP, CISA, đặc biệt là chống tấn công DDoS. Gần đây mình trải nghiệm thêm Digital Marketing và đã hòan thành chứng chỉ CDMP của PersonVUE. Mình rất thích được chia sẻ và hỗ trợ cho mọi người, nhất là các bạn sinh viên. Hãy kết nối với mình nhé!
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments