Diun (Docker Image Update Notifier) là công cụ giúp bạn kiểm tra xem các Docker images của bạn có bản cập nhật mới hay không và tự động gửi thông báo qua các kênh như Telegram, Email, Slack… Công cụ hoạt động bằng cách so sánh digest (mã định danh duy nhất) của image hiện tại với image mới nhất trên registry Docker, GitHub, và các nguồn khác. Nếu digest thay đổi, có nghĩa là có bản cập nhật, Diun sẽ gửi thông báo để bạn biết.
Cách hoạt động của Diun khá đơn giản: Diun theo dõi các images Docker trên hệ thống và khi phát hiện có bản cập nhật, nó sẽ gửi thông báo cho bạn. Diun khá nhẹ khi không kiểm tra, chỉ tốn khoảng 20MB-30MB RAM và 0.01% CPU, dùng tầm 0.7% CPU khi đang kiểm tra, đôi khi nó có thể đạt tới 3% CPU, hơi lạ vì các tác vụ của Diun tương đối nhẹ.
Mặc dù Diun chỉ thông báo khi có bản cập nhật và không thực hiện thêm các hành động gì khác, tính năng này khá phù hợp nếu bạn chỉ cần nhận thông báo khi có phiên bản mới. Nếu bạn muốn tự động cập nhật Docker images khi có phiên bản mới, bạn có thể thử các công cụ khác như Watchtower.
- Trong trường hợp bạn muốn tự cập nhập khi có phiên bản mới, có thể sử dụng các tool chuyên dụng hơn, dạng Watchtower
Cài đặt
- Cài Docker Compose (nếu chưa có)
Ở bài này mình sẽ cài Diun trên thèng server thèng bibica.net, với thông báo dùng qua Telegram
Do đang cài đặt mọi thứ bên trong thư mục home
, nên mình tạo thêm 1 thư mục diun
bên trong, có backup thư mục home
là tự copy đầy đủ diun
mkdir /home/diun && cd /home/diun && nano compose.yml
- Nội dung bên trong
services: # Định nghĩa các dịch vụ sẽ chạy trong Docker Compose diun: # Tên dịch vụ Diun image: crazymax/diun:latest # Sử dụng image mới nhất của Diun từ Docker Hub container_name: diun # Đặt tên cho container là 'diun' command: serve # Lệnh để Diun bắt đầu chạy và theo dõi các container Docker volumes: # Liên kết các thư mục trên máy chủ với container - ./data:/data # Gắn thư mục ./data của máy chủ vào thư mục /data trong container để lưu trữ dữ liệu - /var/run/docker.sock:/var/run/docker.sock # Gắn Docker socket vào container để Diun có thể truy cập Docker daemon environment: # Cấu hình các biến môi trường cho container - TZ=Asia/Ho_Chi_Minh # Đặt múi giờ của container là 'Asia/Ho_Chi_Minh' - DIUN_PROVIDERS_DOCKER_WATCHBYDEFAULT=true # Tự động theo dõi tất cả các container Docker mà không cần nhãn 'diun.enable=true' - DIUN_WATCH_WORKERS=20 # Sử dụng 20 worker để kiểm tra các cập nhật image - DIUN_WATCH_SCHEDULE=* * * * * # Lịch quét Diun mỗi phút (theo cú pháp cron) - DIUN_WATCH_JITTER=1s # Thiết lập độ trễ ngẫu nhiên (jitter) 1 giây giữa các worker để tránh tải quá cao - DIUN_NOTIF_TELEGRAM_TOKEN=<your-telegram-bot-token> # Token API của bot Telegram để gửi thông báo - DIUN_NOTIF_TELEGRAM_CHATIDS=<your-telegram-chat-id> # ID chat Telegram nơi Diun sẽ gửi thông báo restart: always # Container sẽ tự động khởi động lại nếu bị dừng hoặc gặp sự cố
2 giá trị duy nhất cần sửa lại là DIUN_NOTIF_TELEGRAM_TOKEN
và DIUN_NOTIF_TELEGRAM_CHATIDS
Cấu hình bên trên, mặc định kiểm tra tất cả images đang có trên hệ thống, không cần phải thao tác thêm gì nữa
- Khởi chạy
docker compose up -d --build --remove-orphans --force-recreate
- Kiểm tra log
Để kiểm tra log của Diun, sử dụng lệnh sau:
docker logs diun
Tue, 28 Jan 2025 13:55:45 +07 INF Starting Diun version=v4.29.0 Tue, 28 Jan 2025 13:55:45 +07 INF Configuration loaded from 7 environment variable(s) Tue, 28 Jan 2025 13:55:45 +07 INF Cron triggered Tue, 28 Jan 2025 13:55:45 +07 INF Found 12 image(s) to analyze provider=docker Tue, 28 Jan 2025 13:55:46 +07 INF Jobs completed added=0 failed=0 skipped=0 unchanged=12 updated=0 Tue, 28 Jan 2025 13:55:46 +07 INF Cron initialized with schedule * * * * * Tue, 28 Jan 2025 13:55:46 +07 INF Next run in 14 seconds 284 milliseconds (2025-01-28 13:56:00.367249131 +0700 +07)
- Kiểm tra thông báo Telegram
Kiểm tra xem Diun có gửi thông báo thử qua Telegram không bằng lệnh:
docker exec -it diun diun notif test
Docker tag docker.io/diun/testnotif:latest which you subscribed to through file provider is available on docker.io registry (triggered by 820f6b4893c0 host).
Theo dõi cập nhật
Diun sẽ kiểm tra các Docker images mỗi phút (theo cấu hình trong DIUN_WATCH_SCHEDULE
) và sẽ gửi thông báo qua Telegram khi phát hiện có bản cập nhật. Khi thử nghiệm tự cập nhật các Docker images trên bibica.net, sau khi cập nhật xong, Diun sẽ gửi thông báo ngay lập tức.
Kết Luận
Diun hoạt động hiệu quả và dễ dàng để triển khai, nó cung cấp tính năng theo dõi và gửi thông báo khi có bản cập nhật Docker images mà không yêu cầu can thiệp thủ công. Tuy nhiên, nếu bạn cần tự động cập nhật Docker images, các công cụ khác như Watchtower có thể là lựa chọn tốt hơn.
Chính sách bình luận: Chúng tôi rất trân trọng các bình luận của bạn và cảm ơn thời gian bạn dành để chia sẻ ý tưởng và phản hồi.
Ghi chú: Những bình luận được xác định là spam hoặc chỉ mang tính quảng cáo sẽ bị xóa.
• Để cải thiện trải nghiệm bình luận, chúng tôi khuyến khích bạn tạo một tài khoản Gravatar. Thêm avatar vào tài khoản Gravatar sẽ giúp bình luận của bạn dễ nhận diện hơn đối với các thành viên khác.
• ✂️ Sao chép và 📋 Dán Emoji 💪 giúp bình luận thêm sinh động và thú vị!