Hướng dẫn cài đặt và sử dụng Diun – Docker Image Update Notifier

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.

Hướng dẫn cài đặt và sử dụng Diun – Docker Image Update Notifier

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_TOKENDIUN_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.

Hướng dẫn cài đặt và sử dụng Diun – Docker Image Update Notifier

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.


Related Posts

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ị!