Docker là một công cụ hữu ích cho việc phát triển phần mềm, nhưng nó có thể nhanh chóng tiêu thụ hết dung lượng đĩa nếu không được quản lý cẩn thận. Khi các container, images, volumes, và networks không còn được sử dụng nữa nhưng vẫn còn tồn tại trong hệ thống, chúng có thể gây ra sự cạn kiệt về tài nguyên. Bài viết này sẽ hướng dẫn bạn cách dọn dẹp hiệu quả các tài nguyên không cần thiết trong Docker.

1. Xác định nguyên nhân gây ngốn dung lượng

Trước tiên, bạn cần xác định xem dung lượng đang bị chiếm giữ bởi những thành phần nào của Docker. Sử dụng lệnh sau để xem dung lượng mà Docker đang sử dụng:

1
docker system df

2. Xóa các Container đã ngừng hoạt động

Các container đã dừng hoạt động nhưng vẫn còn trong hệ thống có thể chiếm dụng một lượng lớn không gian. Để xóa chúng, bạn có thể sử dụng lệnh:

1
docker container prune

Lệnh này sẽ yêu cầu xác nhận trước khi xóa tất cả các container đã ngừng hoạt động.

3. Xóa các Images không sử dụng

Images không sử dụng là nguồn phổ biến của việc chiếm dụng dung lượng. Để xóa các images không còn liên kết với container nào, bạn có thể sử dụng:

1
docker image prune -a

Lệnh này sẽ xóa tất cả các images không được gắn với bất kỳ container nào.

4. Dọn dẹp volumes và networks

Các volumes và networks không sử dụng cũng nên được dọn dẹp để giải phóng không gian. Sử dụng các lệnh sau:

1
2
docker volume prune
docker network prune

Lệnh dưới sẽ xóa tất cả các volume không còn được sử dụng bởi bất kỳ container nào.

1
docker volume rm $(docker volume ls -q --filter dangling=true)

5. Tự động hóa quá trình dọn dẹp

Bạn có thể tự động hóa quá trình dọn dẹp bằng cách thiết lập một cron job hoặc sử dụng một script để thực hiện các lệnh dọn dẹp định kỳ.

6. Xoá các Docker không sử dụng hoặc đang treo

Docker cung cấp 1 command duy nhất để xóa những thứ không cần thiết. Bạn có thể thử. Nhưng nếu 1 ngày bạn chạy lệnh này rồi mà thấy đĩa cứng vẫn bị ngốn dung lượng một cách bí ẩn, hãy thử dùng các lệnh ở trên.

1
docker system prune

Lệnh này sẽ xoá các tài nguyên không sử dụng như containers, images, volumes và networks. Tuy nhiên, nó chỉ xoá các tài nguyên “đứng độc lập” hoặc không được kết nối đến bất kỳ container nào đang chạy. Nó không xoá các tài nguyên “đang treo” mà container đang tham chiếu.

1
docker system prune -a

Lệnh này sẽ thực hiện các công việc như “docker system prune” nhưng sẽ xoá cả các tài nguyên “đang treo” (dangling resources) nữa. Các tài nguyên “đang treo” là những tài nguyên không được tham chiếu bởi bất kỳ container nào đang chạy. Bằng cách sử dụng cờ “-a”, Docker sẽ xoá tất cả các tài nguyên không được sử dụng, bao gồm cả tài nguyên “đang treo”.

Kết luận

Quản lý tài nguyên Docker một cách hiệu quả sẽ giúp bạn duy trì hệ thống hoạt động trơn tru và tránh lãng phí tài nguyên. Bằng cách theo dõi và dọn dẹp các tài nguyên không cần thiết, bạn có thể đảm bảo rằng Docker của mình luôn hoạt động hiệu quả và không gây ra sự cố v