Docker container có thể giúp làm việc với các ứng dụng và dịch vụ dễ dàng hơn, bất kể chúng có phức tạp đến đâu. Nhưng bạn có thể muốn quản lý định kỳ các tài nguyên Docker đã tích lũy của mình. Docker áp dụng phương pháp bảo thủ đối với “thu gom rác”, có thể khiến bạn có các tài nguyên Docker chưa sử dụng nằm xung quanh, đặc biệt là trong môi trường phát triển.

Tìm hiểu trong hướng dẫn này cách dọn dẹp tài nguyên Docker của bạn. Tại đây, bạn có thể xem cách xóa hình ảnh, vùng chứa và khối lượng, cũng như các tài nguyên không sử dụng nói chung.

Trước khi bạn bắt đầu

1.Làm quen với hướng dẫn Bắt đầu sử dụng Nền tảng Linode của chúng tôi và hoàn tất các bước để thiết lập tên máy chủ và múi giờ cho phiên bản của bạn.

2.Hướng dẫn này sử dụng sudobất cứ nơi nào có thể. Hoàn thành các phần trong hướng dẫn Thiết lập và Bảo mật Phiên bản Máy tính của chúng tôi để tạo tài khoản người dùng chuẩn, tăng cường quyền truy cập SSH và xóa các dịch vụ mạng không cần thiết.

3.Cập nhật hệ thống của bạn.

Trên Debian và Ubuntu , hãy sử dụng lệnh sau:

sudo apt update && sudo apt upgrade

Trên AlmaLinux , CentOS (phiên bản 8 trở lên) hoặc Fedora , hãy sử dụng lệnh sau:

sudo dnf upgrade

4.Thực hiện theo các bước trong hướng dẫn Cài đặt và Sử dụng Docker của chúng tôi để cài đặt, thiết lập và chạy phiên bản Docker. Bạn có thể sử dụng menu thả xuống ở đầu trang để chọn bản phân phối Linux phù hợp với hệ thống của bạn.

Ngoài ra, hướng dẫn này giả định rằng bạn đã đăng nhập với tư cách là người dùng không phải root trong dockernhóm người dùng. Bạn có thể tìm hiểu cách thêm người dùng không phải root vào nhóm này trong hướng dẫn ở trên. Nếu không, nếu người dùng của bạn không nằm trong nhóm docker, bạn cần bắt đầu mỗi lệnh được đưa ra trong hướng dẫn này bằng sudo.

Ghi chú: Các bước trong hướng dẫn này được viết cho người dùng không phải root. Các lệnh yêu cầu quyền nâng cao được thêm tiền tố sudo. Nếu bạn không quen với sudolệnh này, hãy xem hướng dẫn Người dùng và Nhóm Linux .

Làm thế nào để loại bỏ tất cả các tài nguyên còn lơ lửng hoặc không sử dụng

Để bắt đầu, Docker cung cấp phương tiện xóa tất cả các tài nguyên không sử dụng cùng một lúc. Trước khi tiếp tục, hãy hiểu rằng Docker phân biệt hai loại hình ảnh không sử dụng. Đầu tiên, hình ảnh lơ lửng là hình ảnh không được gắn thẻ hoặc liên kết với một vùng chứa. Thứ hai, hình ảnh không sử dụng là hình ảnh không liên kết với một vùng chứa.

Với suy nghĩ đó, sau đây là những cách Docker loại bỏ các tài nguyên không sử dụng và tồn đọng:

Để xóa tất cả các vùng chứa và mạng không sử dụng cũng như tất cả các hình ảnh còn sót lại, hãy sử dụng lệnh sau:

docker system prune

Để xóa tất cả hình ảnh không sử dụng thay vì chỉ xóa những hình ảnh còn sót lại, hãy sử dụng lệnh sau:

docker system prune -a

Để mở rộng lệnh trên để xóa thêm tất cả các ổ đĩa chưa sử dụng, hãy sử dụng lệnh sau

docker system prune --volumes

Cách xóa hình ảnh

Trong phần này, hãy tìm hiểu các lệnh để xóa hình ảnh, từ từng hình ảnh đến hình ảnh không sử dụng và đến toàn bộ hình ảnh.

Có thể hữu ích ở đây khi lấy danh sách các hình ảnh hiện có trên phiên bản Docker của bạn. Đặc biệt là vì một số lệnh này sử dụng tên và/hoặc ID hình ảnh. Bạn có thể lấy danh sách hình ảnh bằng lệnh sau:

docker image ls -a

Xóa hình ảnh theo tên

Để xóa một hình ảnh riêng lẻ dựa trên ID của nó, hãy sử dụng lệnh như bên dưới. Thay thế feb5d9fea6a5bằng ID của hình ảnh bạn muốn xóa bằng lệnh sau:

docker rmi feb5d9fea6a5

Lệnh này không có tác dụng với các hình ảnh được liên kết với một container, ngay cả khi container đó đã dừng.

Để xóa hình ảnh được liên kết với một vùng chứa, bạn cần thêm tùy -fchọn xóa bắt buộc.

docker rmi -f feb5d9fea6a5

Bạn cũng có thể xóa hình ảnh theo kho lưu trữ và tên thẻ. Điều này dẫn đến hình ảnh không được gắn thẻ.

docker rmi hello-world:latest

Lệnh trên tự nó không xóa hoàn toàn hình ảnh. Để đảm bảo rằng hình ảnh được xóa hoàn toàn, bạn cần xóa tất cả các thẻ liên quan đến hình ảnh đó. Vì vậy, nếu bạn anotherTagcũng có hình ảnh trên được gắn thẻ, bạn cần chạy rmilại lệnh cho hello-world:anotherTag.

Lệnh này rmicũng có thể sử dụng nhiều đối số. Điều này có nghĩa là bạn có thể xóa nhiều hình ảnh cùng lúc dựa trên ID hoặc kho lưu trữ và thẻ của chúng.

docker rmi feb5d9fea6a5 dfce7257b7ba

Xóa hình ảnh không sử dụng

Hình ảnh không được gắn thẻ và không liên kết với ít nhất một vùng chứa được gọi là hình ảnh lơ lửng . Bạn có thể lấy danh sách các hình ảnh này bằng lệnh sau:

docker image ls --filter dangling=true

Thay vì xóa từng hình ảnh riêng lẻ, bạn có thể thực hiện việc này chỉ bằng một lệnh:

docker image prune

Hình ảnh không liên quan đến vùng chứa nhưng có thể hoặc không được gắn thẻ được coi là không sử dụng thay vì treo lơ lửng. Bạn có thể mở rộng lệnh trên để xóa những hình ảnh này bằng lệnh sau:

docker image prune -a

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

Docker không có lệnh tích hợp để xóa tất cả hình ảnh. Thay vào đó, bạn có thể sử dụng $toán tử dòng lệnh để cung cấp cho Docker danh sách hình ảnh bằng lệnh sau:

docker rmi $(docker image ls -q)

Tại đây, $toán tử giải quyết lệnh docker image lsđể cung cấp danh sách hình ảnh cho rmilệnh. -qTùy chọn này yêu cầu Docker chỉ cung cấp danh sách ID hình ảnh.

Cách Tháo Container

Phần này hướng dẫn bạn cách xóa container khỏi phiên bản Docker của bạn. Nó cung cấp cho bạn các lệnh để xóa container theo ID hoặc tên, để xóa container đã dừng và thậm chí để xóa tất cả container cho phiên bản của bạn.

Trong suốt quá trình, bạn có thể thấy hữu ích khi có thể lấy danh sách các container Docker của mình, đặc biệt là khi làm việc với ID và tên container. Sử dụng lệnh sau để thực hiện:

docker ps

Tuy nhiên, lệnh trên không bao gồm các container đã dừng. Để có danh sách bao gồm các container đã dừng, hãy sử dụng lệnh sau:

docker ps -a

Xóa Container theo Tên

Có thể xóa từng container theo ID hoặc theo tên. Để xóa một container dựa trên ID của nó, hãy sử dụng lệnh như thế này, thay thế 8e7fc32ab606bằng ID thực tế của container.

docker rm 8e7fc32ab606

Lệnh tương tự có thể được sử dụng để xóa một container dựa trên tên của nó. Trong ví dụ này, hãy thay thế reverent_huglebằng tên của container mà bạn đang xóa.

docker rm reverent_hugle

Tương tự như docker rmilệnh được đề cập trong phần hình ảnh ở trên, lệnh này hỗ trợ nhiều đối số.

docker rm 8e7fc32ab606 f56b33a151f2

Xóa các Container đã dừng

Docker đi kèm lệnh tiện lợi để xóa tất cả các container đã dừng bằng lệnh sau:

docker container prune

Mặt khác, Docker không có lệnh sẵn sàng để chỉ xóa các container đã thoát. Giống như khi xóa tất cả các hình ảnh ở trên, bạn cần sử dụng toán $tử dòng lệnh để lấy danh sách các container và đưa vào Docker.

docker rm $(docker ps --filter status=exited -q)

Trên thực tế, bạn có thể sử dụng cấu trúc này để loại bỏ bất kỳ tập hợp vùng chứa nào dựa trên một tập hợp điều kiện lọc nhất định.

Xóa tất cả các container

Bạn có thể xóa tất cả các container bằng phương pháp tương tự như trên, với $toán tử dòng lệnh sử dụng lệnh sau:

docker rm $(docker ps -a -q)

Giải $quyết docker pslệnh thành một danh sách được đưa vào rmlệnh. Nhớ lại từ trên rằng -atùy chọn này làm cho pslệnh hiển thị tất cả các container, ngay cả những container đã dừng. -qTùy chọn này làm cho danh sách chỉ là ID, điều này là cần thiết để rmphân tích cú pháp lệnh.

Cách xóa khối lượng

Trong phần này, hãy xem cách bạn có thể xóa các ổ đĩa Docker, dù là riêng lẻ, theo nhóm hay toàn bộ.

Để theo dõi các ổ đĩa của bạn và để lấy tên ổ đĩa, hãy sử dụng lệnh này. Lệnh này cung cấp cho bạn danh sách các ổ đĩa Docker hiện tại của bạn.

docker volume ls

Xóa các tập theo tên

Có thể xóa từng ổ đĩa được đặt tên bằng cách sử dụng tên ổ đĩa, như trong:

docker volume rm example-volume

Nhiều volume được đặt tên trong quá trình tạo ra chúng. Tuy nhiên, bạn có thể gặp phải một số tình huống mà bạn có các volume không có tên. Xem phần bên dưới để biết các bước xóa các volume không có tên này.

Xóa các khối lượng treo

Ngược lại với hình ảnh, các khối lượng được coi là lơ lửng đơn giản khi chúng không được tham chiếu bởi bất kỳ vùng chứa nào. Bạn có thể lấy danh sách các khối lượng lơ lửng hiện tại bằng lệnh sau:

docker volume ls --filter dangling=true

Sau đó, để xóa các ổ đĩa không sử dụng này, hãy sử dụng lệnh bên dưới:

docker volume prune

Xóa các ổ đĩa không có tên

Một số ổ đĩa không có tên. Thay vào đó, chúng được quản lý thông qua các vùng chứa liên quan.

Những ổ đĩa không tên này có thể được xóa khi bạn xóa các container liên quan của chúng. Điều này được thực hiện bằng lệnh được hiển thị ở trên để xóa container theo ID/tên. Chỉ cần thêm tùy -vchọn để xóa các ổ đĩa không tên liên quan cùng với container.

docker rm -v reverent_hugle

Phần kết luận

Trong hướng dẫn này, bạn có mọi thứ cần thiết để xóa các tài nguyên không sử dụng và không mong muốn khỏi phiên bản Docker của mình. Sử dụng các công cụ này, bạn có thể quản lý hiệu quả hơn các tài nguyên Docker của mình và ngăn các tài nguyên bị treo không tích tụ.

Bạn còn thắc mắc hoặc muốn được trợ giúp để bắt đầu? Hãy liên hệ với nhóm Hỗ trợ của chúng tôi .

Thông tin thêm

Bạn có thể muốn tham khảo các nguồn sau để biết thêm thông tin về chủ đề này. Mặc dù chúng tôi cung cấp với hy vọng rằng chúng sẽ hữu ích, nhưng xin lưu ý rằng chúng tôi không thể đảm bảo tính chính xác hoặc tính kịp thời của các tài liệu được lưu trữ bên ngoài.

Nguồn: https://www.linode.com/docs/guides/remove-docker-resources/