ขี้เกียจอัพเดท Docker Container เอง มาติดตั้ง watchtower บน Synology NAS กันเถอะ!
เมื่อถึงจุดหนึ่งที่คุณติดตั้งอะไรต่าง ๆ นา ๆ ใน Docker แล้วก็เริ่มขี้เกียจมานั่งอัพเดท Container เอง เพราะมันเยอะ เสียเวลาชีวิต watchtower จะช่วยคุณได้ครับ
โดย watchtower จะทำการหาอัพเดท image ล่าสุดให้ ถ้ามี version ที่ใหม่กว่าของเรามันก็จะหยุด ลบ และติดตั้ง image ใหม่ให้ โดยอิงจากค่าที่เราตั้งมันไว้ตอนแรก โดยที่เราไม่ต้องทำอะไรกับมันเลย ลงแล้วก็ปล่อยเบลอ ลืม ๆ ไปซะ
ขั้นตอนติดตั้ง
- ขั้นแรกต้องลง Docker ไว้แล้ว ซึ่งก็น่าจะลงกันไว้หมดแล้วไม่งั้นคงไม่มาหาเครื่องทุ่นแรงอย่าง watchtower
- ไปที่
Control Panel > Task Schedulerเลือกจาก dropdownCreate > Scheduled Task > User-defined script
- tab General ตั้งชื่อ task เป็นอะไรก็ได้ไม่มีผลอะไร ส่วน user ให้เลือกเป็น root
- tab Schedule เราต้องการลงแค่ครั้งเดียว เลือกเป็น Do not repeat วันที่อะไรไม่ต้องไปยุ่ง
- tab Task Settings เลือกส่ง email แจ้งเตือนมาหาเรา แล้วก็ใส่เมลล์ตัวเองลงไป
- copy code ไปใส่ในช่องตามรูปด้านล่าง แล้วกด OK
docker run -d --name=watchtower \
-v /var/run/docker.sock:/var/run/docker.sock \
--restart=always \
containrrr/watchtower --cleanup
หลังจากนั้นให้เลือก task นี้แล้วกด Run หรือ คลิ๊กขวาที่ task นี้แล้ว Run ได้เลยครับ ถ้าไม่มีอะไรผิดพลาด watchtower มันจะไปโผล่ใน Docker tab Container เอง โดยตัวมันเองจะเช็คอัพเดททุก 24 ชั่วโมงครับ
Source https://containrrr.dev/watchtower/usage-overview/
Arguments
สำหรับคนที่ไม่สนจะตั้งค่าอะไร ก็ปล่อยให้มันทำงานไปได้เลย ส่วนนี้จะแนะนำ setting ที่น่าสนใจบางตัวเพิ่มเติม เผื่อใครอยากปรับแต่งให้เหมาะกับเรามากขึ้น
เลือกอัพเดทเฉพาะ Container
ในบางครั้งเราก็ไม่อยากให้ watchtower อัพเดททุกอย่างที่ติดตั้ง อาจจะเนื่องโปรแกรมยังไม่เสถียร อัพเดทแล้วพังบ่อย เราก็สามารถมาตั้งค่าเพิ่มได้ ใน docker run (ลบ container เดิมทิ้งแล้ว ใส่ใหม่เลย)
ดูบรรทัดที่ 5 จะเห็นว่า เราจะใส่ชื่อ container ที่ต้องการให้ watchtower เช็คเพื่ออัพเดท มีกี่อันก็เคาะช่องว่างไล่ไป
$ docker run -d \
--name watchtower \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower --cleanup \
pihole Komga
Setting อื่น ๆ ที่น่าสนใจ
แบ่งเป็น 2 ส่วน คือ
watchtower จะลบ image เก่าทิ้งหลังจากอัพเดทแล้ว
--interval 300 WATCHTOWER_POLL_INTERVAL 300
ตั้งเวลาวินาทีว่าจะให้ watchtower เช็คบ่อยแค่ไหน ในตัวอย่างคือ 300 วินาที หรือ 5 นาที ส่วนค่า default คือ 86400 (24 ช.ม.)
--schedule "0 0 4 * * *" WATCHTOWER_SCHEDULE 0 0 4 * * * แทนที่จะตั้งเวลาเป็นวินาที ก็ตั้งเป็นกำหนดการแทน ตัวอย่างคือตี 4 ของทุกวัน ถ้าจะลองตั้งค่าอื่นไปดูได้ใน Cron expression generator
TZ Asia/Bangkok ตั้ง Time Zone บ้านเราก็ใช้เป็น Asia/Bangkok ไว้ใช้คู่กับ WATCHTOWER_SCHEDULE ให้ง่ายก็ใส่ไว้ใน Env ทั้งคู่
WATCHTOWER_POLL_INTERVAL กับ WATCHTOWER_SCHEDULE ให้เลือกใช้อย่างใดอย่างหนึ่ง
Arguments ทั้งหมดดูในจากที่นี่เลย



