Docker इमेज को latest पर पिन करने के बारे में XDA लेख प्रत्येक होमलैब ऑपरेटर को कठोर तरीके से सीख देता है: latest बिना पूछे आगे बढ़ता है, और एक खराब pull आपकी स्टैक को तोड़ सकता है जिसे आप वापस नहीं ला सकते। नीचे दिए गए उपकरण आपको मध्य मार्ग देते हैं: नई इमेज के बारे में सूचित करें, वास्तविक tags पर पिन करें, और एक शेड्यूल पर अपडेट करें जिसे आप नियंत्रित करते हैं। Docker, Podman, Compose, Swarm और Kubernetes के लिए सात विकल्प।
कंटेनर स्वचालित-अपडेटर में क्या देखें
सही विकल्प स्केल पर निर्भर करता है, पसंद पर नहीं। विचार करें:
- सूचित करें बनाम स्वचालित-लागू करें। केवल सूचना उपकरण आपको यह तय करने देते हैं कि कब अपडेट करना है। स्वचालित-लागू उपकरण अपने स्वयं के शेड्यूल पर अपडेट करते हैं।
- Tag नीति। सामूहिक
latestpulls, semver-aware pinning, या Renovate-style PR-based bumps। - Rollback सहायता। एक उपकरण जो पिछली इमेज को रखता है वह अतिरिक्त डिस्क के लायक है।
- सूचना लक्ष्य। Slack, Discord, email, Gotify, ntfy, या कुछ नहीं।
- फ्लीट का आकार। एक होस्ट Watchtower के लिए ठीक है। सौ होस्ट Renovate या Kubernetes ऑपरेटर चाहते हैं।
त्वरित तुलना
| ऐप | सर्वश्रेष्ठ के लिए | Runtime | मुफ़्त | सूचनाएं | स्वचालित-लागू |
|---|---|---|---|---|---|
| Watchtower | एकल होमलैब होस्ट | Docker | हाँ | हाँ | हाँ |
| Diun | केवल सूचित करें, स्वचालित-लागू नहीं | Docker, Podman, Kubernetes | हाँ | हाँ | नहीं |
| Ouroboros | पुराना Watchtower विकल्प | Docker | हाँ | हाँ | हाँ |
| Podman auto-update | मूल Podman systemd | Podman | हाँ | नहीं | हाँ |
| Shepherd | Docker Swarm सेवाएं | Docker Swarm | हाँ | नहीं | हाँ |
| Renovate | GitOps-managed Compose या Kubernetes | कोई भी (git के माध्यम से) | हाँ (open source) | हाँ | PRs के माध्यम से |
| Portainer | GUI के साथ मैनुअल अपडेट | Docker, Swarm, Kubernetes | Free CE | हाँ | हाँ |
1. Watchtower, एकल Docker होस्ट के लिए सर्वश्रेष्ठ डिफ़ॉल्ट
Watchtower एक Docker कंटेनर है जो आपकी अन्य Docker कंटेनर को देखता है। जब एक नया इमेज tag रजिस्ट्री में धकेला जाता है, तो Watchtower इसे खींचता है, समान कॉन्फ़िगरेशन के साथ कंटेनर को फिर से बनाता है, और पुरानी इमेज को साफ करता है। कंटेनर को opt in या out करने के लिए एक label जोड़ें।
यह एक घर Docker होस्ट के लिए डिफ़ॉल्ट स्टार्टर है क्योंकि इसे सेट अप करने के लिए दो-पंक्ति Docker Compose ब्लॉक की आवश्यकता होती है और बिल्कुल एक चीज को अच्छी तरह से करता है।
यह कहाँ कम आता है: Watchtower मान लेता है latest या एक mutable tag। यदि आप 1.2.3 पर पिन करते हैं, तो यह अपने आप 1.2.4 पर नहीं जाएगा। कोई rollback नहीं। अपस्ट्रीम प्रोजेक्ट धीमा हो गया है; forks (WOL-based, security-patched) आम हैं।
कीमत: मुफ़्त और open source (Apache 2.0)।
प्लेटफॉर्म: कोई भी होस्ट जो Docker चलाता है (Windows, macOS, Linux, ARM)।
डाउनलोड: containrrr.dev/watchtower · GitHub
निचली पंक्ति: एक व्यक्तिगत Docker होस्ट के लिए सही पहली पसंद, इस चेतावनी के साथ कि आप इसे production सेवाओं पर निर्देशित नहीं करना चाहिए जिन्हें तोड़ने का जोखिम नहीं उठा सकते।
2. Diun, सर्वश्रेष्ठ सूचित-केवल चुनाव
Diun आपकी रजिस्ट्री में इमेज tags को देखता है और एक सूचना भेजता है जब एक नया digest उपलब्ध हो। यह कभी नहीं खींचता, कभी फिर से नहीं बनाता, कभी आपके कंटेनर को नहीं छूता। आप एक Discord ping या Gotify सूचना प्राप्त करते हैं, और आप अपनी शर्तों पर अपडेट करते हैं।
इसे चुनने का कारण नियंत्रण है। Watchtower की स्वचालित-लागू अधिकांश लोगों की तुलना में तेजी से आगे बढ़ता है; Diun लोगों को loop में रखता है।
यह कहाँ कम आता है: आपको अभी भी docker compose pull && docker compose up -d को हाथ से चलाना होगा।
कीमत: मुफ़्त और open source (MIT)।
प्लेटफॉर्म: Docker, Podman, या Kubernetes cluster के साथ कोई भी होस्ट।
डाउनलोड: crazymax.dev/diun · GitHub
निचली पंक्ति: सही चुनाव जब आप अपडेट के बारे में जानना चाहते हैं लेकिन उन्हें स्वचालित-लागू नहीं करना चाहते।
3. Ouroboros, सर्वश्रेष्ठ पुरानी Watchtower विकल्प
Ouroboros एक Python-based Watchtower विकल्प है जो Watchtower से पहले आता है और समान बुनियादी काम करता है: pull, recreate, prune। कुछ होमलैबर Ouroboros पर रहते हैं क्योंकि इसका config उस चीज़ के करीब है जो उन्होंने साल पहले लिखी थी।
विकास धीमा लेकिन स्थिर है। नए उपयोगकर्ताओं को Watchtower या Diun से शुरुआत करनी चाहिए।
यह कहाँ कम आता है: विकल्प की तुलना में धीमी release cadence। विशेषताओं का सेट मूलतः जमे हुए है।
कीमत: मुफ़्त और open source (MIT)।
प्लेटफॉर्म: कोई भी होस्ट जो Docker चलाता है।
डाउनलोड: GitHub
निचली पंक्ति: ठीक है यदि आप पहले से ही इसे चलाते हैं। अन्यथा Watchtower या Diun।
4. Podman auto-update, सर्वश्रेष्ठ native Podman विकल्प
Podman podman auto-update के साथ आता है, एक subcommand जो प्रत्येक कंटेनर पर एक label पढ़ता है और systemd timer पर ताजी इमेज खींचता है। कोई sidecar कंटेनर नहीं, कोई third-party उपकरण नहीं। यह Quadlet (systemd का Podman generator) के साथ integrate होता है declarative सेवा परिभाषाओं के लिए।
इसे चुनने का कारण यह है कि यदि आप RHEL, Fedora, या आधुनिक Debian पर Podman rootless चलाते हैं, तो स्वचालित-अपडेट path पहले से ही OS में मौजूद है।
यह कहाँ कम आता है: केवल Podman। कोई built-in सूचना नहीं।
कीमत: मुफ़्त और open source (Apache 2.0)।
प्लेटफॉर्म: Linux (Podman)।
डाउनलोड: docs.podman.io पर दस्तावेज
निचली पंक्ति: Podman होस्ट पर native विकल्प। कोई नया उपकरण आवश्यक नहीं।
5. Shepherd, Docker Swarm के लिए सर्वश्रेष्ठ
Shepherd Docker Swarm सेवाओं (standalone कंटेनर नहीं) को देखता है और सेवाओं को roll करता है जब उनके इमेज tag में एक नया digest है। यह Swarm की rolling-update strategy का सम्मान करता है, जिसका अर्थ है कि यह health checks और update parallelism के साथ अच्छी तरह काम करता है।
बहुत कम लोग अभी भी Swarm को बड़े पैमाने पर चलाते हैं, लेकिन जो लोग करते हैं उनके लिए, Shepherd Swarm के मॉडल के लिए निर्मित स्वचालित-अपडेटर है।
यह कहाँ कम आता है: केवल Swarm। Swarm cluster के बाहर कोई उपयोग नहीं।
कीमत: मुफ़्त और open source (MIT)।
प्लेटफॉर्म: Docker Swarm (Linux होस्ट)।
डाउनलोड: GitHub
निचली पंक्ति: Docker Swarm के अंदर सही विकल्प।
6. Renovate, सर्वश्रेष्ठ GitOps दृष्टिकोण
Renovate एक bot है जो आपके git repo में pull requests खोलता है जब एक इमेज tag का अपडेट है। यह Compose files, Kubernetes manifests, Helm charts, Dockerfiles, GitHub Actions, और दर्जनों अन्य targets पर काम करता है। PR में release notes, changelog links, और एक जांच शामिल है कि नया tag वास्तव में मौजूद है।
इसे चुनने का कारण यह है कि अपडेट code changes बन जाते हैं। आप उन्हें review करते हैं, merge करते हैं, और CI अपडेट apply करता है। Rollback एक git revert है। यह वह pattern है जिस पर अधिकांश production teams settled होते हैं।
यह कहाँ कम आता है: Git-based deployment pipeline की आवश्यकता है। एक homelab के लिए fit नहीं है जो CI का उपयोग नहीं करता है।
कीमत: मुफ़्त self-hosted (Apache 2.0)। Managed सेवा (Mend) भी open source और छोटी teams के लिए मुफ़्त है।
प्लेटफॉर्म: GitHub, GitLab, Bitbucket, self-hosted git।
डाउनलोड: renovatebot.com · GitHub
निचली पंक्ति: सही विकल्प जब आपका infra git में परिभाषित है।
7. Portainer, सर्वश्रेष्ठ GUI-based manual अपडेट
Portainer एक Docker/Swarm/Kubernetes management dashboard है। यह प्रत्येक कंटेनर और प्रत्येक इमेज दिखाता है, जब एक नई इमेज उपलब्ध हो तो flag करता है, और आपको दो क्लिक के साथ fresh pull के साथ कंटेनर को recreate करने देता है। Community Edition मुफ़्त है; Business Edition RBAC, image scanning, और अधिक जोड़ता है।
इसे चुनने का कारण यह है कि कुछ अपडेट one-off decisions हैं जो आप एक config file की तुलना में एक UI से करना चाहते हैं।
यह कहाँ कम आता है: पूरी तरह से automated नहीं। आप स्वचालित-अपडेटर हैं; Portainer आपको बस बटन देता है।
कीमत: मुफ़्त Community Edition। Paid Business Edition।
प्लेटफॉर्म: Docker, Swarm, Kubernetes (self-hosted)।
डाउनलोड: portainer.io · GitHub
निचली पंक्ति: click-to-update workflows और mixed fleets के लिए चुनाव।
कैसे चुनें
- एकल Docker होस्ट, homelab: Watchtower।
- वही, लेकिन आप एक heads-up auto-apply नहीं चाहते: Diun।
- आप Podman चलाते हैं:
podman auto-update। - Docker Swarm: Shepherd।
- Kubernetes या Compose git में: Renovate।
- Dashboard पसंद करते हैं: Portainer।
FAQ
क्या यह production के विरुद्ध Watchtower चलाना सुरक्षित है?
careful tag policy के बिना नहीं। इसे :latest पर point करें और यह किसी भी upstream गलती पर आपकी stack को तोड़ सकता है। इसे semver-pinned tags पर point करें और health-check-based rollback जोड़ें। बेहतर: Renovate का उपयोग करें कुछ भी के लिए जिसे तोड़ने का जोखिम नहीं उठा सकते।
मैं latest के बजाय एक real version पर कैसे pin करूं?
अपनी Compose file में image: nginx को image: nginx:1.27.2 से replace करें। Renovate एक PR खोलता है जब 1.27.3 shipped होता है। Watchtower और Diun दोनों pinned tags के लिए भी नए digests देखते हैं यदि tag itself upstream में updated है।
क्या ये उपकरण private registries के साथ काम करते हैं?
हाँ। Watchtower, Diun, और Renovate सभी private registries (ECR, GCR, Harbor, self-hosted) के लिए docker credentials को support करते हैं।
क्या मैं एक bad अपडेट को rollback कर सकता हूं?
Watchtower और Ouroboros पिछली इमेज को tagged नहीं रखते; आपको पिछली इमेज ID या अपनी स्वयं की tagging scheme की आवश्यकता है। Portainer की UI rollback को आसान बनाता है। Renovate rollback git revert है।
कंटेनर कितनी बार auto-update होने चाहिए?
एक homelab के लिए, दिन में एक बार शांत घंटे में ठीक है। Production के लिए, केवल सूचित करें या PR-based (Renovate) को prefer करें ताकि अपडेट review और CI के माध्यम से shipped हों, एक background daemon नहीं।