Android

Làm cách nào để loại bỏ các docker container, hình ảnh, khối lượng và mạng

Docker Container Tutorial - How to build a Docker Container & Image

Docker Container Tutorial - How to build a Docker Container & Image

Mục lục:

Anonim

Docker cho phép bạn nhanh chóng xây dựng, kiểm tra và triển khai các ứng dụng dưới dạng các thùng chứa di động, tự cung cấp, có thể chạy hầu như mọi nơi.

Docker không loại bỏ các đối tượng không sử dụng như thùng chứa, hình ảnh, khối lượng và mạng trừ khi bạn nói rõ ràng làm như vậy. Khi bạn làm việc với Docker, bạn có thể dễ dàng tích lũy một số lượng lớn các đối tượng không sử dụng, tiêu tốn dung lượng đĩa đáng kể và làm lộn xộn đầu ra được tạo ra bởi các lệnh Docker.

Hướng dẫn này đóng vai trò là một trang cheat gian lận, để giúp người dùng Docker giữ cho hệ thống của họ được tổ chức và giải phóng không gian đĩa bằng cách loại bỏ các container, hình ảnh, khối lượng và mạng Docker không sử dụng.

Loại bỏ tất cả các đối tượng không sử dụng

Lệnh docker system prune sẽ loại bỏ tất cả các container bị dừng, tất cả các hình ảnh lơ lửng và tất cả các mạng không sử dụng:

docker system prune

Bạn sẽ được nhắc tiếp tục, sử dụng cờ -f hoặc --force để bỏ qua lời nhắc.

WARNING! This will remove: - all stopped containers - all networks not used by at least one container - all dangling images - all build cache Are you sure you want to continue?

docker system prune --volumes

WARNING! This will remove: - all stopped containers - all networks not used by at least one container - all volumes not used by at least one container - all dangling images - all build cache Are you sure you want to continue? y

Loại bỏ các Docker Container

Các container Docker không được tự động loại bỏ khi bạn dừng chúng trừ khi bạn khởi động container bằng cờ --rm .

Loại bỏ một hoặc nhiều container

Để xóa một hoặc nhiều hình ảnh Docker, hãy sử dụng lệnh docker container rm theo sau là ID của các container bạn muốn xóa.

Bạn có thể lấy danh sách tất cả các container bằng cách chuyển cờ -a đến docker container ls của docker container ls :

docker container ls -a

Đầu ra sẽ trông giống như thế này:

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES cc3f2ff51cab centos "/bin/bash" 2 months ago Created competent_nightingale cd20b396a061 solita/ubuntu-systemd "/bin/bash -c 'exec …" 2 months ago Exited (137) 2 months ago systemd fb62432cf3c1 ubuntu "/bin/bash" 3 months ago Exited (130) 3 months ago jolly_mirzakhani

Khi bạn biết CONTAINER ID của các thùng chứa bạn muốn xóa, hãy chuyển nó đến lệnh docker container rm . Ví dụ: để loại bỏ hai container đầu tiên được liệt kê trong đầu ra ở trên:

docker container rm cc3f2ff51cab cd20b396a061

Error response from daemon: You cannot remove a running container fc983ebf4771d42a8bd0029df061cb74dc12cb174530b2036987575b83442b47. Stop the container before attempting removal or force remove.

Loại bỏ tất cả các container đã dừng

Trước khi thực hiện lệnh gỡ bỏ, bạn có thể nhận được một danh sách tất cả các container không chạy (đã dừng) sẽ bị xóa bằng lệnh sau:

docker container ls -a --filter status=exited --filter status=created

Để loại bỏ tất cả các container bị dừng, sử dụng lệnh docker container prune :

docker container prune

Bạn sẽ được nhắc tiếp tục, sử dụng cờ -f hoặc --force để bỏ qua lời nhắc.

WARNING! This will remove all stopped containers. Are you sure you want to continue? y

Loại bỏ các container bằng bộ lọc

Lệnh docker container prune cho phép bạn loại bỏ các container dựa trên điều kiện bằng cách sử dụng cờ lọc - bộ lọc.

Tại thời điểm viết bài viết này, các bộ lọc hiện được hỗ trợ là until label . Bạn có thể sử dụng nhiều bộ lọc bằng cách sử dụng nhiều cờ - bộ lọc.

Ví dụ: để xóa tất cả các hình ảnh được tạo hơn 12 giờ trước, hãy chạy:

docker container prune --filter "until=12h"

Dừng và loại bỏ tất cả các container

Bạn có thể lấy danh sách tất cả các container Docker trên hệ thống của mình bằng docker container ls -aq .

Để dừng tất cả các container đang chạy, sử dụng lệnh docker container stop theo sau là danh sách tất cả các ID container.

docker container stop $(docker container ls -aq)

Khi tất cả các container bị dừng, bạn có thể loại bỏ chúng bằng lệnh docker container rm theo sau là danh sách ID container.

docker container rm $(docker container ls -aq)

Xóa hình ảnh Docker

Xóa một hoặc nhiều hình ảnh

Để xóa một hoặc nhiều hình ảnh Docker, hãy sử dụng docker images ls để tìm ID của hình ảnh bạn muốn xóa.

docker image ls

Đầu ra sẽ trông giống như thế này:

REPOSITORY TAG IMAGE ID CREATED SIZE centos latest 75835a67d134 7 days ago 200MB ubuntu latest 2a4cca5ac898 2 months ago 111MB linuxize/fedora latest a45d6dca3361 3 months ago 311MB java 8-jre e44d62cf8862 3 months ago 311MB

Khi bạn đã định vị được những hình ảnh bạn muốn xóa, hãy chuyển IMAGE ID của họ cho lệnh docker image rm . Ví dụ: để xóa hai hình ảnh đầu tiên được liệt kê trong đầu ra ở trên:

docker image rm 75835a67d134 2a4cca5ac898

Error response from daemon: conflict: unable to remove repository reference "centos" (must force) - container cd20b396a061 is using its referenced image 75835a67d134

Xóa hình ảnh lơ lửng

Docker cung cấp một lệnh docker image prune có thể được sử dụng để loại bỏ hình ảnh lơ lửng và không sử dụng.

Hình ảnh lơ lửng là hình ảnh không được gắn thẻ và không được sử dụng bởi bất kỳ container nào. Để loại bỏ hình ảnh lơ lửng:

docker image prune

Bạn sẽ được nhắc tiếp tục, sử dụng cờ -f hoặc --force để bỏ qua lời nhắc.

WARNING! This will remove all dangling images. Are you sure you want to continue? y Khi xóa hình ảnh lơ lửng, nếu hình ảnh do bạn tạo không được gắn thẻ, chúng cũng sẽ bị xóa.

Xóa tất cả các hình ảnh không sử dụng

Để xóa tất cả các hình ảnh không được tham chiếu bởi bất kỳ vùng chứa hiện có nào, không chỉ các hình ảnh lơ lửng, hãy sử dụng lệnh prune với cờ -a :

docker image prune -a

WARNING! This will remove all images without at least one container associated to them. Are you sure you want to continue? y

Xóa ảnh bằng các bộ lọc

Với lệnh docker image prune , bạn cũng có thể xóa hình ảnh dựa trên một điều kiện nhất định bằng cách sử dụng cờ lọc - bộ lọc.

Tại thời điểm viết bài viết này, các bộ lọc hiện được hỗ trợ là until label . Bạn có thể sử dụng nhiều bộ lọc bằng cách sử dụng nhiều cờ - bộ lọc.

Ví dụ: để xóa tất cả các hình ảnh được tạo ra hơn 12 giờ trước, bạn sẽ chạy:

docker image prune -a --filter "until=12h"

Loại bỏ các tập tin Docker

Xóa một hoặc nhiều tập

Để xóa một hoặc nhiều khối Docker, hãy sử dụng docker volume ls để tìm ID của các ổ bạn muốn loại bỏ.

docker volume ls

Đầu ra sẽ trông giống như thế này:

DRIVER VOLUME NAME local 4e12af8913af888ba67243dec78419bf18adddc3c7a4b2345754b6db64293163 local terano

Khi bạn đã tìm thấy VOLUME NAME của các ổ đĩa bạn muốn xóa, hãy chuyển chúng vào lệnh docker volume rm . Ví dụ: để loại bỏ âm lượng đầu tiên được liệt kê trong đầu ra ở trên, hãy chạy:

docker volume rm 4e12af8913af888ba67243dec78419bf18adddc3c7a4b2345754b6db64293163

Error response from daemon: remove 4e12af8913af888ba67243dec78419bf18adddc3c7a4b2345754b6db64293163: volume is in use -

Xóa tất cả khối lượng không sử dụng

Để loại bỏ tất cả các khối lượng không sử dụng, sử dụng lệnh docker image prune :

docker volume prune

Bạn sẽ được nhắc tiếp tục, sử dụng cờ -f hoặc --force để bỏ qua lời nhắc.

WARNING! This will remove all local volumes not used by at least one container. Are you sure you want to continue?

Xóa mạng Docker

Xóa một hoặc nhiều mạng

Để xóa một hoặc nhiều mạng Docker, hãy sử dụng docker network ls để tìm ID của các mạng bạn muốn xóa.

docker network ls

Đầu ra sẽ trông giống như thế này:

NETWORK ID NAME DRIVER SCOPE 107b8ac977e3 bridge bridge local ab998267377d host host local c520032c3d31 my-bridge-network bridge local 9bc81b63f740 none null local

Khi bạn đã định vị được các mạng mà bạn muốn xóa, hãy chuyển NETWORK ID của họ cho lệnh docker network rm . Ví dụ: để xóa mạng với tên my-bridge-network run:

docker network rm c520032c3d31

Error response from daemon: network my-bridge-network id 6f5293268bb91ad2498b38b0bca970083af87237784017be24ea208d2233c5aa has active endpoints

Xóa tất cả các mạng không sử dụng

Sử dụng lệnh docker network prune để loại bỏ tất cả các mạng không sử dụng.

docker network prune

Bạn sẽ được nhắc tiếp tục, sử dụng cờ -f hoặc --force để bỏ qua lời nhắc.

WARNING! This will remove all networks not used by at least one container. Are you sure you want to continue?

Xóa mạng bằng các bộ lọc

Với lệnh docker network prune bạn có thể loại bỏ các mạng dựa trên điều kiện bằng cách sử dụng cờ lọc - bộ lọc.

Tại thời điểm viết bài viết này, các bộ lọc hiện được hỗ trợ là until label . Bạn có thể sử dụng nhiều bộ lọc bằng cách sử dụng nhiều cờ - bộ lọc.

Ví dụ: để xóa tất cả các mạng được tạo hơn 12 giờ trước, hãy chạy:

docker network prune -a --filter "until=12h"

Phần kết luận

Trong hướng dẫn này, chúng tôi đã chỉ cho bạn một số lệnh phổ biến để loại bỏ các container, hình ảnh, khối lượng và mạng Docker.

Bạn cũng nên kiểm tra tài liệu Docker chính thức.

bến tàu