Table of Contents
Tại sao việc tự động dọn dẹp ngăn chặn là thiết yếu cho việc quản lý không gian đĩa
Hộp đựng đĩa cung cấp một môi trường nhỏ, nhất quán cho việc phát triển ứng dụng, thử và triển khai. Tuy nhiên, tiện ích của việc quay nhanh và tách xuống các thùng chứa đến với giá cả: việc rửa đĩa. Qua thời gian, các hình ảnh cuộn lại, dừng lại, tập tin không dùng, và không dùng tích lũy bộ nhớ tạm tích lũy, chiếm không gian đĩa quý. Còn không kiểm soát được, sự bừa bộn này có thể dẫn đến hiệu suất bị hỏng, việc bật lên thậm chí bị hỏng. Việc tự động làm sạch không chỉ kho chứa, mà còn bảo đảm một máy có thể dự trữ, cũng bảo rằng máy có thể dự phòng được, cũng có thể dự phòng được.
Một trạm phát triển duy nhất có thể thu thập Gla byte (FLT: 0) ảnh Docker [FLT: 1] trong vòng vài tuần). Trong môi trường sản xuất, nơi các hộp chứa thường được cập nhật hay thay thế, thang vấn đề nhanh chóng. Rửa tay là lỗi cẩn thận và thường bị bỏ qua. Bằng cách thực hiện một chiến lược cắt tỉa tự động, đã định trước, bạn loại bỏ các tài nguyên phỏng đoán và miễn phí cho những vấn đề quan trọng nhất: các ứng dụng đang chạy.
Hiểu được những tiện nghi của Docker
Docker cung cấp một dãy lệnh để gỡ bỏ dữ liệu không dùng. Điều quan trọng nhất là [FLT: 0], có thể nhắm vào các thùng, ảnh, âm lượng và mạng: hãy phá bỏ các tùy chọn then chốt:
- ) – Gỡ bỏ tất cả các hộp đã dừng lại, tất cả các ảnh h và mạng không dùng.
- ) ) – Thêm vào việc gỡ bỏ mọi ảnh không dùng (không chỉ những ảnh hiện ra), gồm có ảnh không được tham chiếu bởi bất kỳ container nào.
- – cũng có những tập không dùng (theo tập mặc định chưa được gỡ bỏ).
- [FLT: 0] – – tổng hợp mọi cờ: gỡ bỏ không cần xác nhận, tất cả ảnh và tập tin không dùng. Đây là tùy chọn hạt nhân để làm sạch.
Để kiểm soát hạt nhiều hơn, Docker đưa ra những lệnh riêng: , , , và .
Cài đặt Bước & kế cho việc tự động hoá hệ thống
Trên hệ thống Linux, cron vẫn là công cụ cài đặt chương trình đơn giản nhất cho các tác vụ lặp lại. Để tự động dọn dẹp Docker, bạn chỉ cần vài dòng trong bảng điều khiển crontab của bạn.
1. Kiểm tra đường dẫn lệnh Docker
Công việc bảng tạm chạy với môi trường hạn chế. Hãy xác định đường dẫn đầy đủ bằng cách chạy:
which docker
Thường thì điều này trả về . Hãy dùng con đường đó trong lệnh cron của bạn.
2. Sửa bảng điều khiển của bạn
Chạy:
crontab -e
Nếu đây là lần đầu tiên, bạn sẽ được nhắc nhở để chọn một biên tập viên.
0 2 * * * /usr/bin/docker system prune -af --volumes > /dev/null 2>&1
chuyển hướng stdiff và stder để tránh chất đầy hộp thư của bạn đầu ra. Điều chỉnh thời gian biểu khi cần thiết cho hàng tuần).
3. Thử công việc
Trước khi dựa vào cron, hãy tự chạy lệnh để đảm bảo nó hoạt động như mong đợi:
sudo /usr/bin/docker system prune -af --volumes
Nếu bạn đang dùng một cài đặt không gốc Docker, có lẽ bạn cần thêm hoặc chạy công việc cron với tư cách là người dùng trong nhóm .
Tự động hoá nâng cao có kiểu tập tin hệ thống
Trong khi cron là đủ cho nhiều người, những người hẹn giờ có hệ thống định giờ cung cấp giấy tờ tốt hơn, việc xử lý phụ thuộc và sự hợp nhất với phần còn lại của hệ thống init.
1. Tạo một đơn vị dịch vụ
Lưu những điều sau đây là ]:
[Unit]
Description=Docker system prune
Wants=docker.service
After=docker.service
[Service]
Type=oneshot
ExecStart=/usr/bin/docker system prune -af --volumes
User=root
StandardOutput=journal
2. Tạo một đơn vị hẹn giờ
Lưu dạng ]:
[Unit]
Description=Run Docker cleanup daily
[Timer]
OnCalendar=daily
Persistent=true
[Install]
WantedBy=timers.target
3. Bật và khởi động đồng hồ hẹn giờ
sudo systemctl daemon-reload
sudo systemctl enable docker-cleanup.timer
sudo systemctl start docker-cleanup.timer
Kiểm tra với . Cách tiếp cận này ghi nhật ký hệ thống, khiến việc dọn dẹp dễ dàng hơn.
Đang cấu hình bộ lọc dọn dẹp cho chính sách bảo trì
Việc cắt tỉa quá độ là an toàn cho hầu hết các môi trường phát triển, nhưng hệ thống sản xuất có thể đòi hỏi [FLT: 0] chính sách chú ý [FLT: 1].
Lọc theo tuổi
Để xóa bỏ hình ảnh và thùng chứa không dùng trước 24 giờ:
docker system prune -af --filter "until=24h" --volumes
Bộ lọc hoạt động cho cả hai ảnh và hộp. Kết hợp với nhiều lần cho các quy tắc phức tạp hơn.
Tài nguyên riêng mở rộng
Docker không có danh sách có sẵn, nhưng bạn có thể dùng nhãn để ngăn chặn việc gỡ bỏ. Nhãn các hộp hay ảnh quan trọng (v. d., , rồi dùng bộ lọc nhãn tiêu cực (không được hỗ trợ trong [FLT: 32]. Một công cụ làm việc gần nhau [FL: [FLT: 33] với các tập lệnh tự chọn kiểm tra nhãn trước khi bị xoá. Hoặc dùng công cụ như[FL: 0][FL: 1][FL: 1] [FL] [FL] [FL] [FL] [FLT] [FL: T] [FL: T] [L]] [FL] [K] [K]] [K]] [KK]
Theo dõi không gian đĩa và làm sạch hiệu quả
Tự động hóa chỉ tốt như bộ giám sát của bạn. Thiết lập thông báo theo dõi cách sử dụng đĩa sau mỗi lần dọn dẹp. Cách tiếp cận đơn giản bao gồm:
- Chạy trong công việc cron và ghi lại kết quả.
- Sử dụng một công cụ như ]docker-recity-infux để gửi bộ đo mét đến InuxDB hoặc Prometheus.
- Kết hợp với ) ) ) ) hoặc New Relic để hình dung kho lưu trữ Docker theo thời gian.
Nếu việc dọn dẹp của bạn còn lại nhưng việc sử dụng đĩa vẫn cao, hãy điều tra để xem chỗ nào chiếm được. Thủ phạm thường bao gồm việc xây dựng bộ nhớ tạm trong hệ thống CN hay số lượng lớn không bị gỡ bỏ vì các thùng dừng vẫn còn được tham chiếu.
Các thực hành tốt nhất cho môi trường sản xuất
1. luôn dùng phương pháp được điều chỉnh
Bắt đầu với một cuộc chạy thử khô hàng tuần bằng không có cờ (để xem những gì sẽ được gỡ bỏ). Hãy xem lại kết xuất trước khi bật khả năng xoá tự động.
2. Tọa độ với ống dẫn CN/CD
Nếu hệ thống xây dựng tạo ra nhiều hình ảnh tạm thời, hãy sắp xếp thời gian để cắt tỉa sau khi xây hoặc trong thời gian thu nhỏ của cửa sổ, tránh cắt tỉa trong khi đang chạy để ngăn chặn việc vô tình gỡ bỏ những lớp trung gian vẫn còn đang được sử dụng.
3. Dữ liệu chính sao lưu
Các tập chứa cơ sở dữ liệu hoặc người dùng tải lên nên được hỗ trợ trước khi có bất kỳ tập tin nào được cắt tỉa. Hãy dùng công cụ quản lý âm lượng Docker [FLT: 38] với để gắn kết các kho bên ngoài không bị hư hại bởi chất mận.
4. Chạy như người dùng không phải là người dùng của người dùng
Để bảo mật, hãy tránh chạy cron làm việc như người chủ trừ khi cần thiết. Thêm người dùng vào nhóm và chạy công việc mà không cần . Tuy nhiên, hãy chú ý rằng bất cứ người dùng nào trong nhóm có quyền người chủ; đánh giá mức nguy cơ trong môi trường của bạn.
5 Bản ghi các hoạt động dọn dẹp
Chuyển tiếp kết xuất sang tập tin ghi lưu thay vì để kiểm tra:
0 2 * * * /usr/bin/docker system prune -af --volumes >> /var/log/docker-cleanup.log 2>&1
Kiểm tra thường xuyên bản ghi về lỗi hoặc gỡ bỏ bất ngờ.
Những cạm bẫy thông thường và cách tránh chúng
- Đang bỏ qua dữ liệu hộp chứa đang chạy ): cờ gỡ bỏ mọi ảnh không dùng, bao gồm các lớp trung gian cần thiết cho việc xây dựng trong tương lai. Nếu bạn thường xuyên xây dựng, hãy xem xét việc thiết lập bộ lọc hoặc chạy mà không cần .
- Các đa khoa chứa trạng thái quan trọng [FLT: 1]): mặc định, không gỡ bỏ tập tin trừ khi cờ được dùng. Chỉ thêm cờ đó nếu bạn không chắc chắn không giữ dữ liệu bền bỉ.
- ] Mạngwork grivert container intertport ): ]]]] [FLT: mạng không dùng. Nếu mạng tự chọn không còn được tham chiếu bởi bất kỳ vật chứa nào, nó sẽ bị gỡ bỏ, tiềm năng phá vỡ hộp chứa trong tương lai khởi chạy. Hãy nhớ điều này nếu bạn dùng mạng bao gồm trong Swarm.
- Vấn đề môi trường ): Docker có thể không nằm trong đường dẫn mặc định khi cron chạy. Luôn luôn dùng đường dẫn đầy đủ đến nhị phân.
Công cụ và cách tiếp cận khác
Trong khi lệnh địa phương Docker bao gồm hầu hết các nhu cầu, một số công cụ thứ ba của Đảng Cơ sở cung cấp tính năng nâng cao:
- [Biểu đồ / tháp – Automates updateing container đang chạy và có thể làm sạch ảnh cũ sau khi cập nhật.
- Người dẫn trước ) ) – A Web UI for Docker inter ire parts in the clean up.
- [FLT:] [FLT:] [FLT:] [FLT:] [FLT:] [FLT:] [FLT: 1]] [FLT:]] [FLT:]] [FLT: 1]]] [FLT: 1]]] [FLT:]]] [FLT mục tiêu đặc biệt là những mục tiêu xây dựng bộ nhớ tạm, có thể rất lớn trong đường ống CI/CD.
Đối với môi trường của người Kuubenetes, hãy xem xét sử dụng bộ sưu tập rác ) và các công cụ như hoặc ) decheduler ) decheduler ) cho sự làm sạch không có gì cả.
Kết luận
Việc tự động làm sạch container Docker là một thực hành đơn giản nhưng quan trọng để duy trì một máy tính Docker khỏe mạnh, hiệu quả. Dù bạn chọn máy lọc, đồng hồ hẹn giờ hệ thống, hay công cụ dự phòng, chìa khóa để chạy việc cắt tỉa đều đặn với chính sách cân bằng đĩa để giữ mức tiết kiệm chống lại rủi ro gỡ bỏ dữ liệu bạn cần thiết. Bắt đầu giữ bảo mật với bộ lọc và bản ghi, rồi thắt chặt thời gian biểu của bạn khi sự tự tin tăng lên. Bằng cách tích hợp tự động hóa hoạt động, bạn đảm bảo rằng không gian đĩa không bao giờ trở thành chai cổ và thùng chứa được giữ yên, và thực hiện an toàn.