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 sudo
bấ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 docker
nhó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 sudo
lệ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ế feb5d9fea6a5
bằ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 -f
chọ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 anotherTag
cũng có hình ảnh trên được gắn thẻ, bạn cần chạy rmi
lại lệnh cho hello-world:anotherTag
.
Lệnh này rmi
cũ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 rmi
lệnh. -q
Tù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ế 8e7fc32ab606
bằ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_hugle
bằng tên của container mà bạn đang xóa.
docker rm reverent_hugle
Tương tự như docker rmi
lệ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 ps
lệnh thành một danh sách được đưa vào rm
lệnh. Nhớ lại từ trên rằng -a
tùy chọn này làm cho ps
lệnh hiển thị tất cả các container, ngay cả những container đã dừng. -q
Tùy chọn này làm cho danh sách chỉ là ID, điều này là cần thiết để rm
phâ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 -v
chọ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.
- freeCodeCamp: Cách xóa hình ảnh và vùng chứa trong Docker
- Linuxize: Cách xóa Docker Container, Images, Volume và Networks
- Tài liệu Docker: hình ảnh docker
Nguồn: https://www.linode.com/docs/guides/remove-docker-resources/