Khi bạn đã cài đặt hàng loạt container Docker, việc cập nhật chúng có thể trở thành một gánh nặng — bạn cần kiểm tra phiên bản image mới theo cách thủ công rồi tự mình thực hiện các bước cài đặt phức tạp. Watchtower từng là một công cụ tuyệt vời để tự động hóa tất cả các bước này và cập nhật container của tôi, đó là lý do tại sao nó luôn là lựa chọn hàng đầu của tôi để xử lý công việc “bẩn”. Mặc dù tôi yêu thích sự tự động hóa và không còn phải bận tâm về các bản cập nhật nữa, nhưng cách tiếp cận hoàn toàn tự động này gần đây lại bắt đầu trở thành một vấn đề. Và công cụ đã chứng minh là một sự thay thế xứng đáng không ai khác chính là Diun.
Máy chủ NAS tại gia của tôi không chạy cơ sở hạ tầng cực kỳ quan trọng, nhưng tôi rất quan tâm đến thời gian hoạt động. Một vài container đã được cấu hình theo những cách cụ thể, đôi khi có những tinh chỉnh để tùy chỉnh hiệu suất. Và chỉ cần một bản cập nhật không mong muốn cũng có thể làm hỏng mọi thứ, hoặc tệ hơn, âm thầm thay đổi hành vi mong đợi mà tôi chỉ nhận ra vào thời điểm tồi tệ nhất. Việc thay thế Watchtower là để biết khi nào có bản cập nhật mà không thay đổi bất cứ điều gì một cách tự ý. Chẳng phải đó là mục đích của việc chạy Docker container sao? Để nắm quyền kiểm soát các ứng dụng của bạn?
Và rồi một ngày nọ, điều đó đã xảy ra. Một container khởi động lại với một image mới mà Watchtower đã tự động cài đặt, làm hỏng một plugin tôi đã thiết lập thủ công. May mắn thay, tôi không mất dữ liệu nào, nhưng tôi đã mất thời gian khắc phục sự cố và cảm thấy rất bực bội. Đó là điểm mấu chốt để tôi tìm kiếm một giải pháp thay thế tiện lợi không kém nhưng không làm xáo trộn quy trình làm việc, điều này đã dẫn tôi đến với Diun.
Diun: Lựa chọn tối ưu cho quy trình quản lý Docker của tôi
Tại sao Diun lại vượt trội?
Diun (viết tắt của Docker Image Update Notifier) là một công cụ nhẹ nhàng, làm một việc rất tốt: nó thông báo cho tôi khi có bản cập nhật image container mới. Chỉ vậy thôi. Nó không kéo image mới, không tạm dừng container đang chạy hay khởi động lại bất cứ thứ gì. Nó chỉ đơn thuần gửi cho tôi một thông báo.
Điều này nghe có vẻ là một bước lùi, nhưng đó chính xác là kiểu kiểm soát mà tôi cần hiện nay. Thay vì thức dậy với các dịch vụ bị hỏng vì một thứ gì đó đã âm thầm cập nhật qua đêm, tôi nhận được thông báo qua email (hoặc Slack, Telegram, Discord — tùy thuộc vào sở thích của bạn). Sau đó, tôi quyết định có muốn áp dụng bản cập nhật hay không và vào thời điểm nào. Điều này cho phép tôi cài đặt các bản cập nhật trong giờ thấp điểm, chẳng hạn như vào cuối tuần, khi tôi có thời gian để khắc phục mọi thứ nếu cần, chứ không phải giữa một tuần làm việc bận rộn.
Ví dụ email thông báo cập nhật Docker từ Diun
Thiết lập Diun có thể hơi phức tạp một chút trên Synology NAS, nhưng nó đơn giản hơn nhiều trên Raspberry Pi hoặc máy Windows với Docker Compose. Tôi đã cấp quyền truy cập Docker socket cho Diun và thêm một vài nhãn (label) vào các container mà tôi muốn nó theo dõi. Sau đó, mọi thứ chỉ cần hoạt động. Cứ sau vài giờ, nó kiểm tra các registry — Docker Hub, AWS ECR, và các dịch vụ khác — tìm kiếm các tag mới nhất và thông báo cho tôi nếu có điều gì mới. Một điểm cộng lớn là Diun tiêu thụ rất ít tài nguyên, điều này không đáng kể đối với các hệ thống mạnh mẽ, nhưng lại rất quan trọng đối với các triển khai có công suất thấp.
Vì sao Watchtower không còn phù hợp với nhu cầu của tôi?
Thời điểm Watchtower cần được “nghỉ hưu”
Watchtower vẫn hoàn thành tốt nhiệm vụ — đặc biệt nếu bạn chỉ muốn các container của mình luôn được cập nhật mà không cần động tay. Nó theo dõi các tag, kéo các bản cập nhật, dừng container của bạn và khởi động lại chúng với cùng cài đặt. Điều đó rất hữu ích, nhưng sự tiện lợi đi kèm với những đánh đổi. Đối với tôi, điều lớn nhất là các bản cập nhật diễn ra tự động. Đó là tính năng cốt lõi của Watchtower, nhưng kinh nghiệm của tôi cho thấy rủi ro đi kèm với nó.
Ngay cả một sự không tương thích nhỏ, như không tương thích ngược hoặc định phiên bản không chính xác, cũng có thể làm hỏng mọi thứ, tùy thuộc vào cách container của bạn được thiết lập. Một tag image mới không có nghĩa là tương thích ngược. Một số image không tuân thủ đúng định phiên bản ngữ nghĩa (semantic versioning), và ngay cả khi chúng có, mọi thứ vẫn có thể hỏng tùy thuộc vào thiết lập của bạn. Tôi đã từng gặp trường hợp các công cụ tự lưu trữ bị mất theme hoặc plugin sau một bản cập nhật ẩn. Điều đó không phải lúc nào cũng là thảm họa, nhưng nó luôn gây khó chịu.
Đúng là Watchtower về mặt kỹ thuật có hỗ trợ chế độ “chỉ giám sát”. Bạn có thể sử dụng cờ --monitor-only
hoặc đặt biến WATCHTOWER_MONITOR_ONLY=true
. Về lý thuyết, nó chỉ thông báo cho bạn. Nhưng trên thực tế, kết quả không nhất quán, và nhiều người vẫn thấy các bản cập nhật xảy ra, ngay cả khi đã cấu hình đúng. Điều đó không tạo cho tôi nhiều sự tin cậy.
Diun không hoàn hảo, nhưng vẫn là lựa chọn tốt nhất
Những điểm cần lưu ý khi sử dụng Diun
Mặc dù tôi hiện tại rất thích sử dụng Diun, nhưng nó cũng có những hạn chế riêng. Diun không tự cập nhật bất cứ thứ gì theo thiết kế. Điều đó có nghĩa là bạn phải theo dõi email và áp dụng các bản cập nhật thủ công — một sự bất tiện mà tôi chấp nhận được. Nếu bạn quên, bạn có nguy cơ chạy các container lỗi thời. Vì vậy, giờ đây, trách nhiệm thuộc về bạn.
Ngoài ra, Diun chỉ thông báo cho bạn về các tag mới. Nó không hiển thị changelog hay sự khác biệt giữa các phiên bản. Bạn vẫn phải truy cập Docker Hub để xem những gì đã thay đổi. Đó là một bước bổ sung, nhưng vẫn có thể quản lý được. Và nếu bạn đã quen với phong cách “cài đặt và quên” của Watchtower, Diun có thể cảm thấy nhiều công việc hơn lúc đầu. Nó không phức tạp; chỉ hơi khác so với những gì bạn đã quen.
Diun là giải pháp tôi đã chọn
Cho đến hiện tại
Diun đã mang lại cho tôi quyền kiểm soát trở lại đối với NAS của mình. Tôi không còn lo lắng rằng một bản cập nhật ngầm sẽ gây ra thời gian ngừng hoạt động hoặc làm hỏng thứ gì đó đúng lúc tôi cần. Tôi nhận được cảnh báo, tôi xem xét chúng, tôi quyết định phải làm gì. Thay đổi nhỏ trong cách tiếp cận đó đã làm cho thiết lập của tôi cảm thấy ổn định hơn rất nhiều trong những ngày gần đây. Đối với những ai muốn tự động hóa hoàn toàn, Watchtower vẫn là một lựa chọn vững chắc. Nhưng nếu bạn ưu tiên sự dễ đoán và kiểm soát như tôi, Diun sẽ chinh phục bạn. Nếu bạn đang tìm cách nâng cao kỹ năng quản lý Docker container của mình, có rất nhiều tùy chọn ẩn khác để khám phá.
Thiết bị lưu trữ mạng NAS QNAP TS-464 mạnh mẽ
QNAP TS-464
Thương hiệu | QNAP |
---|---|
CPU | Intel Celeron N5095 |
Bộ nhớ | 8GB DDR4 (tối đa 8GB) |
Khoang ổ đĩa | 4 |
Mở rộng | 2x M.2 PCIe 3.0, 1x PCIe Gen 3 x2 |
Cổng kết nối | 2x 2.5 GbE, 2x USB-A 3.2 Gen 2, 2x USB-A 2.0, 1x HDMI |
QNAP TS-464 là một thiết bị NAS bốn khoang ấn tượng với thiết kế nổi bật, thông số kỹ thuật nội bộ mạnh mẽ và hỗ trợ hồng ngoại cho điều khiển từ xa. Nếu bạn đang tìm kiếm một NAS được trang bị tốt nhất để chạy Plex (hoặc các giải pháp media khác) mà không tốn quá nhiều tiền, đây là NAS dành cho bạn.