Để xóa tất cả các container đã dừng, bạn có thể sử dụng lệnh sau:
$ docker container prune -f
Để xóa tất cả các images không sử dụng, bạn có thể sử dụng lệnh sau:
$ docker image prune -f
Như bạn có thể thấy những image <none> được tạo ra trong quá trình chúng ta chạy CI/CD hoặc build docker image nên sẽ dễ bị đầy ổ đĩa khi sử dụng docker
Để xóa tất cả các images có tag <none> bạn có thể sử dụng lệnh sau (hoặc bạn sử dụng lệnh trên cũng được):
$ docker rmi $(docker images -f "dangling=true" -q)
Nếu bạn muốn cho quá trình này tự động, ví dụ cứ mỗi 00:00 hàng ngày sẽ chạy lệnh để xóa những images không sử dụng, thì bạn có thể sử dụng crontab (Linux/Ubuntu) như sau:
Gõ lệnh sau để mở crontab trong chế độ chỉnh sửa:
$ crontab -e
Trong trình soạn thảo, thêm dòng sau vào cuối để lập lịch xóa các images không sử dụng:0 0 * * * docker image prune -f
Xóa các volume đang không được sử dụng cho container nào:
$ docker volume prune
Những logs của các container sẽ được lưu trữ lại /var/lib/docker/containers/ ở đây tương ứng với mỗi ID của container sẽ có log của container đó.
Bạn sẽ truy cập tiếp vào container ID hiển thị lên và trong đó bạn sẽ thấy một file có đuôi là json.log và bạn có thể xóa nó một cách thủ công.
Khi những logs của các container đang chạy không quan trọng bạn có thể sử dụng crontab để xóa các file logs của container trên server, gõ lệnh sau để mở crontab trong chế độ chỉnh sửa:
$ crontab -e
Trong trình soạn thảo, thêm dòng sau vào cuối để lập lịch xóa tất cả các file logs của các container:0 0 * * * find /var/lib/docker/containers/*/ -name “*-json.log” -type f -delete
Tuy nhiên, đó là những logs không quan trọng vậy nếu chúng ta vẫn muốn lưu log và đảm bảo không bị đầy ổ đĩa khi sử dụng docker thì chúng ta có thể giới hạn tài nguyên lưu log cụ thể như sau:
Tạo một container mới và sử dụng log driver json-file
$ docker run --log-driver=json-file --log-opt max-size=10m --log-opt max-file=5 <image>
Trong đó:
--log-driver=json-file
: Đặt log driver cho container là json-file
.--log-opt max-size=10m
: Giới hạn kích thước tối đa của mỗi tập tin log là 10 megabytes. Bạn có thể thay đổi giá trị theo nhu cầu của mình.--log-opt max-file=5
: Giới hạn số lượng tập tin log tối đa là 5. Khi số lượng tập tin vượt quá giới hạn, các tập tin cũ hơn sẽ bị ghi đè. Bạn có thể thay đổi giá trị theo nhu cầu của mình.Nếu bạn đang chạy một container đang hoạt động, bạn có thể thay đổi cấu hình log driver bằng cách sử dụng lệnh docker update
$ docker update --log-opt max-size=10m --log-opt max-file=5 <container_id>
Hoặc bạn cũng có thể thiết lập cấu hình log mặc định cho tất cả các container trong Docker, bạn có thể chỉnh sửa tệp cấu hình Docker daemon. Bạn có thể thực hiện các bước sau:
1. Mở tệp cấu hình Docker daemon (daemon.json
). Vị trí tệp này có thể khác nhau tùy thuộc vào hệ điều hành của bạn:
/etc/docker/daemon.json
C:\ProgramData\docker\config\daemon.json
/etc/docker/daemon.json
(hoặc thông qua Docker Desktop)2. Nếu tệp daemon.json
không tồn tại, hãy tạo một tệp mới và thêm nội dung sau:{ “log-driver”: “json-file”, “log-opts”: { “max-size”: “10m”, # tối đa 10m/file “max-file”: “5” # giữ lại 5 file } }
3. Lưu và đóng tệp cấu hình.
4. Khởi động lại Docker daemon để áp dụng cấu hình mới:
sudo systemctl restart docker
sudo /etc/init.d/docker restart
Khi build Docker images, Docker sử dụng một cơ chế cache để lưu trữ các bước build trước đó. Các bước build này được lưu trữ dưới dạng các layer của image. Khi thực hiện một lần build mới, Docker sẽ sử dụng lại các layer đã có sẵn trong cache thay vì thực hiện lại các bước đó, giúp tăng tốc độ build và tiết kiệm tài nguyên.
Các layer cache được lưu trữ trong Docker daemon trên máy chủ của bạn. Đường dẫn mặc định cho các layer cache này là:
/var/lib/docker/overlay2
C:\ProgramData\docker\overlay2
/var/lib/docker/overlay2
Lưu ý rằng đường dẫn và cơ chế lưu trữ cache có thể khác nhau tùy thuộc vào phiên bản Docker và cấu hình của bạn. Để xem đường dẫn chính xác của cache layer trên hệ thống của bạn, bạn có thể sử dụng lệnh docker info
và tìm giá trị của khóa Docker Root Dir
.
Tuy nhiên, các layer cache này không nên bị xóa thủ công mà chỉ nên được quản lý bởi Docker. Docker sẽ tự động quản lý cache và dọn dẹp các layer không sử dụng nữa.
Nếu bạn vẫn muốn xóa toàn bộ cache build để tránh đầy ổ đĩa khi sử dụng docker:
$ docker builder prune
Ngoài ra còn có một lệnh (không khuyến nghị) nếu bạn chưa nắm rõ được các tài nguyên mà bạn đang sử dụng bằng docker
$ docker system prune -a -f
Lệnh trên sử dụng để xóa tất cả các tài nguyên không sử dụng và không cần thiết trong Docker. Đây là một lệnh mạnh mẽ và cần được sử dụng cẩn thận, vì nó sẽ xóa hết tất cả các container, networks, images và volumes không sử dụng vậy sẽ tránh bị đầy ổ đĩa khi sử dụng docker.
You need to login in order to like this post: click here
YOU MIGHT ALSO LIKE