Giới thiệu về Watchtower #
Watchtower là một ứng dụng giúp người dùng có thể giám sát các Docker container đang họat động và cập nhật các base image của container với phiên bản mới nhất một cách tự động. Nếu ứng dụng này phát hiện image có sự thay đổi, ứng dụng này sẽ tự động restart container với image phiên bản mới nhất với các option tương tự lúc khởi tạo.
Watchtower được đóng gói như Docker container nên việc cài đặt chỉ đơn giản pull image containsrrr/watchtower từ Docker Hub về host và sử dụng. Nếu server đang sử dụng kiến trúc dựa trên ARM, người dùng có thể pull image containsrrr/watchtower:armhf-<tag> từ Docker Hub để sử dụng. Vì Watchtower cần tương tác với Docker API để giám sát các container đang hoạt động, người dùng cần mount “/var/run/docker.sock” vào container khi khởi chạy.
Cài đặt Watchtower #
Để khởi tạo Watchtower, người dùng thực hiện câu lệnh sau:
docker run -d --name watchtower -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower
Mặc định mỗi 5 phút ứng dụng này sẽ tự động kiểm tra và so sánh các image đang sử dụng cho các container so với thông tin được lưu trữ trên Image registry. Nếu có sự thay đổi, Watchtower sẽ tự động pull image về host và restart container bằng image mới nhất với các option tương tự lúc khởi tạo container ban đầu.
Giám sát những container được chỉ định #
Mặc định, Watchtower sẽ giám sát toàn bộ các container đang hoạt động trên host. Người dùng có thể yêu cầu Watchtower chỉ giám sát những container được chỉ định. Cú pháp:
docker run -d --name watchtower -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower \
<tên container 1> <tên container 2> .... <tên container n>
Ví dụ: Bạn cần giám sát và cập nhật phiên bản image mới nhất cho 2 container nginx và redis. Cú pháp:
docker run -d --name watchtower -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower nginx redis
Thiết lập thời gian kiểm tra của Watchtower #
Mặc định Watchtower sẽ kiểm tra và cập nhât image cho các container sau mỗi 5 phút. Người dùng có thể thay đổi thời gian kiểm tra của container với 2 kiểu sau:
- Khoảng cách giữa các lần kiểm tra (“-i” hoặc “–interval”), tính theo đơn vị giây, mặc định là 300 giây. Cú pháp:
docker run -d --name watchtower -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower -i <số giây>
- Thời gian kiểm tra theo dạng cron job (“–schedule” hoặc “-s”, bao gồm 6 trường: giây – phút – giờ – ngày – tháng – ngày trong tuần theo giờ UTC). Ví dụ: yêu cầu Watchtower kiểm tra image của các container vào lúc 6h00 vào mỗi chủ nhật hằng tuần. Cú pháp:
docker run -d --name watchtower -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower -s "0 0 6 * * 0"
Giám sát trên remote host #
Để có thể giám sát container trên remote host, remote host cần phải expose port của Docker API để tạo kết nối và thực hiện các tác vụ pull và cập nhật image cho container. Cú pháp
docker run -d --name watchtower -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower --host (hoặc -h) "tcp://hostname:port"
Ví dụ:
docker run -d --name watchtower -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower --host "tcp://lab.tel4vn.edu.vn:2735"
Nguồn tham khảo:
Trung tâm đào tạo Viễn thông và Công nghệ thông tin TEL4VN (TEL4VN) chuyên đào tạo các khóa học về DevOps như: Docker, Kubernetes, Ansible, Jenkins, Linux…….Ngoài ra, TEL4VN còn là Trung tâm đào tạo duy nhất về VoIP mã nguồn mở. 🌐Website: https://tel4vn.edu.vn/ |