Tối ưu hóa bản cập nhật Docker của bạn với thủ thuật này

Tác giả Starlink, T.Tư 05, 2025, 12:52:44 CHIỀU

« Chủ đề trước - Chủ đề tiếp »

0 Thành viên và 3 Khách đang xem chủ đề.

Bạn vẫn còn cập nhật thủ công các container Docker của mình chứ?

    Các container Docker không tự động cập nhật.
    Watchtower theo dõi các container Docker, kiểm tra các bản cập nhật dựa trên lịch trình cụ thể.
    Với Watchtower, bạn có thể tự động cập nhật container của mình hoặc chỉ cần nhận thông báo về các bản cập nhật có sẵn.


Tôi thích Docker, nhưng tôi ghét việc container phải được cập nhật thủ công. Vì vậy, tôi đã tìm ra giải pháp: Watchtower. Container Docker đơn giản này đã hoàn toàn hợp lý hóa thiết lập của tôi và tôi sẽ không triển khai máy chủ Docker nào khác mà không có nó.

1. Docker Container không tự cập nhật

Tôi thích mọi thứ về Docker container, ngoại trừ thực tế là không có phương pháp cập nhật đơn giản nào trong hầu hết các trình quản lý Docker. Mặc dù Unraid cung cấp một hệ thống cập nhật Docker tuyệt vời, nhưng bạn thường phải tạo lại container để cập nhật, ngay cả với thứ gì đó như Portainer.

Không có dữ liệu nào bị mất trong quá trình tái tạo này và thành thật mà nói, đây là một việc đơn giản. Tuy nhiên, việc biết liệu một container có bản cập nhật hay không, cộng với việc cập nhật nhiều container cùng một lúc, có thể hơi phức tạp.

Thành thật mà nói, tôi hơi ngạc nhiên về điều này. Cho đến tháng trước hoặc lâu hơn, tôi vẫn luôn sử dụng Unraid để quản lý các container Docker của mình. Unraid có giao diện tuyệt vời để biết container có bản cập nhật hay không và để áp dụng bản cập nhật đó. Trên thực tế, trong Unraid, bạn có thể nhấp vào từng container để cập nhật chúng hoặc nhấp vào một nút và cập nhật tất cả cùng một lúc.

Nhưng khi chuyển sang Portainer, tôi nhận ra rằng đây là tính năng của Unraid, không phải là tính năng mà Docker tự làm. Vào thời điểm đó, tôi quyết định rằng mình phải tìm ra cách tốt hơn để xử lý việc cập nhật các container Docker của mình. Một cách tự động hơn và không cần động tay vào việc tạo lại từng container theo cách thủ công.

2. Watchtower theo dõi các bản cập nhật Docker

Khi tôi bắt đầu tìm kiếm một hệ thống cập nhật tự động cho Docker, Watchtower là phần mềm đầu tiên tôi tìm thấy. Đó cũng là nơi tôi dừng lại tìm kiếm, vì nó thực hiện mọi thứ tôi cần và hơn thế nữa.

Watchtower là một container Docker chạy trong thiết lập Docker của bạn. Bằng cách kết nối với socket Docker, nó có thể thấy những container bạn có và biết phải làm gì từ đó. Việc triển khai Watchtower cực kỳ đơn giản.

Nếu không có đối số bổ sung, vùng chứa Watchtower sẽ chạy một lần rồi dừng lại. Tuy nhiên, có nhiều biến môi trường có thể được thiết lập. Một trong những biến chính mà tôi sử dụng là WATCHTOWER_DISABLE_CONTAINERS, trong đó bạn cung cấp tên vùng chứa làm biến. Về cơ bản, điều này sẽ yêu cầu Watchtower bỏ qua các vùng chứa đó.

Nếu bạn có các container quan trọng mà không muốn tự động cập nhật và có khả năng bị hỏng, thì bạn sẽ muốn đảm bảo rằng chúng nằm trong biến WATCHTOWER_DISABLE_CONTAINERS.

Tôi cũng có các biến môi trường WATCHTOWER_SCHEDULE và TZ được thiết lập để xử lý việc lập lịch khi Watchtower chạy. Nó sử dụng lịch Chron và tôi đã thiết lập để chạy vào sáng sớm hàng ngày, khi không ai thường sử dụng bất kỳ dịch vụ hoặc trang web nào mà tôi lưu trữ trong thiết lập Docker của mình. Tuy nhiên, bạn có thể thiết lập để kiểm tra một lần một ngày, nhiều lần một ngày, một lần một tuần, một lần một tháng. Thực sự tùy thuộc vào bạn.

3. Tự động cập nhật hoặc chỉ thông báo, sự lựa chọn là của bạn

Watchtower có thể cấu hình khá tốt. Bạn không chỉ có thể cho biết khi nào chạy và bỏ qua những container nào mà còn có thể xác định xem nó có cập nhật những container đó hay không.

Watchtower có thể tích hợp với Discord và Slack, cho phép bạn thiết lập thông báo về những gì nó đang làm. Điều này có nghĩa là bạn có thể để nó chỉ cho bạn biết khi nào một container có bản cập nhật, nhưng không làm gì với nó. Mặt khác, bạn có thể để nó thực hiện cập nhật đầy đủ các container và cho bạn biết khi nào hoàn tất. Hoặc, giống như tôi, và chỉ cập nhật nó nhưng không bao giờ biết điều gì đang xảy ra trừ khi bạn kiểm tra nhật ký.

Vậy bạn nên thiết lập nó để tự động cập nhật hay chỉ thông báo? Vâng, tôi có hầu hết các container tự động cập nhật: những container mà tôi không thấy trước sẽ bị hỏng và tương đối dễ để tôi sửa nếu chúng bị hỏng. Các dịch vụ khác có thể bị hỏng thảm khốc với bản cập nhật tự động.

Bạn phải xác định mức độ tự động hóa mà bạn muốn sử dụng ở đây. Tuy nhiên, điều tuyệt vời với Watchtower là nó có thể cấu hình cực cao, do đó bạn có thể quyết định từng trường hợp cụ thể xem container có được xử lý tự động hay không.

Watchtower cho phép bạn chọn container nào mà nó hoạt động thông qua biến WATCHTOWER_DISABLE_CONTAINERS hoặc thông qua nhãn. Với nhãn, bạn có thể truyền một biến cho chính container, hoặc bật hoặc tắt nó cho Watchtower. Mặc dù tôi chưa sử dụng chức năng này của Watchtower, nhưng thật tuyệt khi thấy rằng bạn có thể đặt cờ trong các container khác của mình thay vì phải đặt trong Watchtower. Sau đó, bạn chỉ cần thay đổi cờ đó trong tương lai nếu bạn muốn thay đổi chức năng của Watchtower.