Sahneyi düşünün. Bir homelab compose stack altı aydır sorunsuz bir şekilde çalışıyor. Jellyfin, Paperless, Immich, Postgres, her zamanki şeyler. Cumartesi sabahı docker compose pull && docker compose up -d çalıştırıyoruz, her zamanki beş saniyelik hiçbir değişikliği bekliyoruz. Postgres başlamayı reddediyor. Loglar diskteki veri dizininin daha eski bir major sürümle başlatıldığını ve yeni sürüm tarafından okunamadığını söylüyor. :latest‘e sabitleme bizi buna getirir. :latest tag’i bir sürüm değildir, bu bakıcı istediği zaman hareket ettirdiği bir işarettir ve Postgres 16 yerine Postgres 17’yi gösterdiği gün hafta sonunuz kaybolur. Aşağıda 2026’da hala güvendiğimiz Docker image sürümlerini sabitleme için en iyi uygulamalar yer almaktadır. Tam otomasyondan basit bildirimlere kadar.
:latest neden bir tuzak, bir paragrafta
İki host bir hafta arayla aynı :latest çeker ve farklı derlemeler çalıştırmayı bitirirler. Altı ay önce yapılan bir CI işi bugün yeniden derlenir ve kimsenin changelog’unu okumadığı breaking upstream değişiklikleri çeker. Geri almak bir hazine avı çünkü Docker Hub tag geçmişleri kaybolur. Çözüm sıkıcı ve işe yarar: kasıtlı olarak seçtiğiniz semver tag’ini sabitleyin (postgres:16.4), ya da daha iyisi image digest’ini sabitleyin (postgres@sha256:...) böylece her seferde tam aynı baytları alırsınız. Aşağıdaki araçlar ya bu sabitlemeyi otomatik olarak yapırlar ya da mevcut sablitlerimizi izler ve ne zaman güvenli bir şekilde yükselteceğini söylerler.
Docker version-pinning tool’da ne arayacaksınız
Bir tane seçerken beş şey önemlidir:
- Format kapsamı. Zaten kullandığınız her şeyi ayrıştırabilmesi gerekir. Compose temeldir. Kubernetes manifestleri, Helm grafikleri, Swarm stack’leri, Dockerfile’lar ve GitHub Actions iş akışları tümü geçerlidir.
- Semver ve digest farkındalığı. İyi bir araç
1.2.3‘ün1.2.2‘den minor bir artış olduğunu anlar, digest-kilitli varyantlar sunar ve Postgres’in major sürüm artışını yamayı gibi ele almaz. - Değişiklik günlüğü yüzeylemesi. Bir güncelleme önerdiğinde, sürüm notlarına bağlantı vermelidir, böylece birleştirmeden önce “veritabanı biçimini bozma” satırını görebiliriz.
- Auto-PR vs notify-only. Bazı araçlar diff içeren bir pull request açarken, diğerleri sohbetimizi ping yapar. Her ikisi de geçerlidir. Sessiz gözetimsiz güncellemeler yalnızca istediğimiz zaman yeniden oluşturabileceğimiz durum bilgisiz konteynerler için kabul edilebilir.
- CI entegrasyonu. Zaten çalıştırdığımız herhangi bir şeye uymalıdır: GitHub Actions, GitLab CI, Gitea veya kendi barındırılan runner. Giriş yapmayı unuttuğumuz ek pano yok.
Karşılaştırma tablosu
| Araç | En iyi şekilde | Otomatik güncellemeler | Yalnızca bildirim | Kurulum |
|---|---|---|---|---|
| Renovate | Git tarafından desteklenen compose veya K8s repo’ları | Evet (PR yoluyla) | Evet | Orta |
| Watchtower | Durum bilgisiz homelab konteynerler | Evet (canlı çekme) | Evet | Çok kolay |
| Diun | Herhangi bir kayıt için uyarı yalnızca | Hayır | Evet | Kolay |
| What’s up Docker | Web UI + homelablar için bildirimler | İsteğe bağlı | Evet | Kolay |
| Portainer | Grafik arayüzü tercih eden takımlar | Stack başına manuel | Evet | Kolay |
| Dependabot | Compose dosyalı genel GitHub repo’ları | Evet (PR yoluyla) | Hayır | Sıfır |
| Trivy | Güvenlik öncelikli sürüm denetimleri | Hayır | Evet (rapor) | Kolay |
| Podman Desktop | Podman ve K8s-komşu iş akışları | Manuel | Evet | Kolay |
Araçlar
1. Renovate
Renovate burada en yakın cevap. docker-compose.yaml, Dockerfile, Kustomize overlay’leri veya Helm grafikleri içeren bir repo’ya işaret edin ve bir image her yeni tag aldığında bir pull request açacaktır. Digest sabitlemeyi anlar, böylece postgres:16.4@sha256:... sabitleyebilir ve Renovate her iki parçayı senkronize tutar. Gruplama kuralları yamalarımızı bir PR’de gruplandırmamıza izin verirken major sürümleri ayrı tutar, bu çoğumuzun değişiklikleri incelemek istediği şeyle eşleşir. Kendi barındırılan veya Mend’in ücretsiz hosted uygulamasında, aynı motordur. Öğrenme eğrisi gerçektir (yapılandırma dosyası birçok düğmeli JSON5’tir) ancak çalışmaya başladığında, homelab’ı en güvenilir şekilde dürüst tutan araçtır.
İndir: Website
2. Watchtower
Watchtower klasiktir. Compose dosyasına bırakın, hangi konteynerları izleyeceğini söyleyin ve yeni image’ları çekip konteyner yerinde yeniden oluşturacaktır. Bu durum bilgisiz hizmetler için (ters proxy, geçici araç) bir süper güçtür ve durum bilgili olanlar (veritabanı, şeması olan herhangi bir şey) için bir pusu tuzağıdır. Watchtower’ı 2026’da çalıştırmanın doğru yolu, etiket beyaz listesi, bildirimler açık ve kalıcı verileri olan hiçbir şeyin listesinde olmadığı katı bir kuraldır. Bu şekilde kullanıldığında, hala homelab’ın can sıkıcı %80’ini gözetim olmadan taze tutmanın en hızlı yoludur.
İndir: Website
3. Diun (Docker Image Update Notifier)
Diun bir şey yapar. Image’ları izler (Docker etiketlerinden, bir compose dosyasından, bir Swarm hizmetinden, bir Kubernetes kümesinden, bir statik YAML listesinden) ve yeni bir etiket veya digest göründüğünde bildirim gönderir. Çekme yok, yeniden başlatma yok, sadece Discord, Slack, Gotify, Ntfy, Matrix, e-posta veya webhook’ta bir mesaj. Döngüde kalmak isteyen ancak her zaman kendileri ne zaman güncelleneceğine karar veren homelablar için Diun varsayılan seçimdir. Tek bir Go ikili dosyası, yapılandırma kısa bir YAML dosyasıdır ve hiçbir şeyi unutmaz.
İndir: Website
4. What’s up Docker (WUD)
WUD “izle ve bildir” niş için modern halefdir. İzlediği her konteyner’i, mevcut etiketi, kullanılabilir en yeni etiketi ve mümkün olduğu yerlerde bir diff bağlantısını gösteren bir web arayüzü vardır. Sıradan bildirim arka uçlarının yanı sıra Home Assistant, Apprise ve MQTT’yi destekler, bu da akıllı ev panosuna güzel bir şekilde uyum sağladığı anlamına gelir. Docker, Kubernetes veya HTTP webhook yoluyla güncellemeleri tetikleyebilir, böylece zaten kullandığınız herhangi bir yayın işlem hattına bağlayabilirsiniz. Diun’u sevip ama bakılacak bir ekran isteyenler için WUD yükseltmedir.
İndir: Website
5. Portainer
Portainer, Docker ve Kubernetes için bir grafik arayüzüdür ve stack görünümü, çalıştırdığımız image etiketini kullanılabilir olanın yanında gösterir. Bizim için pull request açmaz veya digest sablonları yazamaz, ancak sabitlemeyi görünür ve güncelleme düğmesini açık hale getirir, bu da homelab’ı koruyan kişinin kurulumu yapan kişi olmadığı durumlarda önemlidir. Community Edition ücretsiz ve çoğu self-hosting gereksinimlerini kapsar. Business Edition, takımlar için RBAC ve çok kümeli yönetim ekler.
İndir: Website
6. Dependabot
Compose dosyalarımız genel veya GitHub tarafından barındırılan bir repo’da yaşıyorsa, Dependabot ücretsiz ve neredeyse hiç kurulum gerektirmez. Etkinleştirin, package-ecosystem: docker ile iki satırlık dependabot.yml ekleyin ve ağaçtaki herhangi bir FROM image:tag yeni etiket aldığında bir pull request açacaktır. Renovate’den daha dar (gruplandırma yok, digest senkronizasyonu yok, daha az ekosistem) ancak zaten GitHub PR’lerinde yaşayan bir takım için bu en az dirençli yoldur. Renovate özelliklerde kazanır, Dependabot uyuşmazlıkta kazanır.
İndir: Website
7. Trivy
Trivy bir güvenlik açığı tarayıcıdır, bir updater değildir, ancak sürümleri sabitleme nedenimizin yarısı hangi CVE’lere maruz kaldığımızı bilmek olduğu için bu listeye aittir. Trivy’yi çalışan bir konteyner’a, compose dosyasına veya Kubernetes namespace’ine işaret edin ve kesin image etiketi’ne karşı her bilinen CVE’yi yazdıracaktır. Çıkış, bir sablonun kötü yaşlandığını gösterir ve mükemmel Renovate’le eşleşir: Trivy bize hangi image’ın güncellenmesi gerektiğini ve neden söyler, Renovate bunu yapan PR açar. CLI, CI adımı veya Kubernetes operatörü olarak çalışır, tümü aynı ikili dosyadan.
İndir: Website
8. Podman Desktop
Podman’a geçen (veya macOS’ta daha hafif bir çalışma zamanı aracılığıyla Docker çalıştıran) herkes için Podman Desktop, Portainer’in Docker için yaptığı aynı alanı kapsar. Yerel konteynerler’i mevcut image etiketleriyle listeler, güncellemeleri gösterir ve Kubernetes manifestlerini native olarak konuşur, bu da homelab’ı k3s’ye yarı yolda olduğunuzda faydalıdır. Scheduler değildir ve sabitleme konusunda görüş sahibi değildir ancak mevcut sabitlemeyi bariz kılar ve yerel ve kayıt arasındaki fark bir tıklamanın ötesidir. Ücretsiz, açık kaynak ve çoklu platform.
İndir: Website
Doğru olanı nasıl seçersiniz
Cevap neredeyse her zaman bir değil, bu ikisinden biridir.
- Git tarafından desteklenen compose veya Kubernetes repo’su için: Renovate. Dockerfile, compose, Helm, Kustomize ve Actions iş akışlarını bir yapılandırmada işler ve digest sablonlarını güncel tutar.
- Sadece uyarı istediğimiz ve kendimiz karar verdiğimiz bir homelab için: Diun veya What’s up Docker. Pano istiyorsak WUD, tek ikili dosya ve bildirim istiyorsak Diun.
- Zaten genel compose dosyalı GitHub’da olan takımlar için: Dependabot. İki satır YAML, sıfır maliyet, PR’ler diğer her şey gibi aynı inceleme kuyruğunda iner.
- Gözetimsiz otomatik güncellemeler için: Watchtower, ancak yalnızca katı etiket beyaz listesi ve bildirimler açık olan durum bilgisiz hizmetler için. Asla bir veritabanına işaret etmeyin.
- Güvenlik öncelikli sabitleme için: Denetim için Trivy, PR’ler için Renovate. Trivy bize sablonun tehlikeli olduğunu söyler, Renovate düzeltmeyi önerir.
- GUI-first takımlar için: Docker için Portainer, Podman için Podman Desktop. İkisi de güncellemeleri otomatikleştirmez, ikisi de sabitlemeyi görünür kılar.
Bir bildirimci veya PR bot’u bir denetçi ile eşleştirin ve “altı ay boyunca temiz çalışan ve sonra patladı” compose stack’i sorunu yaşanmayı durdurur.
FAQ
Neden :latest'e sabitleme kötüdür?
Çünkü :latest bir sürüm değildir. Bu, image bakıcısının yeni bir derleme yayınladığında değiştirdiği bir işarettir. Bir hafta arayla image:latest çeken iki sunucu farklı ikili dosyalar çalıştırmaktadır ve aylar sonra yeniden derleme sessizce breaking upstream değişikliğini çekebilir. :1.24.2 gibi belirli bir etiketi veya :sha256:... gibi digest’i sabitleme, aynı girişin her zaman aynı çalışan konteyner’i ürettiğini gösterir.
Docker image'larını digest'e sabitlemeliyim mi?
Üretime veya durum bilgili verilere dokunan herhangi bir şey için evet. Digest, belirli bir image’ın değişmez içerik hashasıdır, bu nedenle postgres:16.4@sha256:abc... bakıcı daha sonra 16.4 etiketini farklı bir derlemey ile yeniden yayınlasa bile her zaman tam aynı baytları çeker. Renovate ve What’s up Docker her ikisi de digest sablonlarını anlar ve bunları bizim için güncel tutar, bu da yaygın itiraz olan “digest’leri elle saklamak can sıkıcıdır” i kaldırır.
Docker için Renovate ve Dependabot arasındaki fark nedir?
İkisi de bir image yeni etiket aldığında pull request açar. Renovate daha fazla biçimi işler (Compose, Helm, Kustomize, Kubernetes manifestleri, GitHub Actions, Dockerfile), digest sabitlemeyi destekler ve güncellemeleri gruplandırmamıza izin verir, böylece yamalar bir araya gelirken majörler ayrı kalır. Dependabot GitHub’da etkinleştirmek daha basit, güvenlik sekmesi ile native olarak entegre olur ve ortak Dockerfile ve compose durumlarını kapsar. Meşgul bir repo’da Renovate ekstra yapılandırma değerdir; kişisel bir repo’da Dependabot iki dakikalık kazanç.
Watchtower konteynerlerimi kırabilir mi?
Evet ve durum bilgili hizmete işaret ettiğimiz zaman bunu yapar. Image major sürüme atlıyorsa ve şema göçü tek yönlüyse, Watchtower mutlu bir şekilde çeker, konteyner’i yeniden başlatır ve bizi başlamayacak bir veritabanıyla bırakır. Düzeltme, etiket filtresini kullanmaktır, böylece yalnızca açık com.centurylinklabs.watchtower.enable=true etiketini taşıyan konteynerler’i dokun ve asla bu etiketi veri sahip olan herhangi bir şeye koymayın.
Renovate, kendi barındırılan homelab'lar için ücretsiz midir?
Evet. Renovate CLI ve Docker image’ı açık kaynak ve kendi barındırılan Gitea veya GitLab örnekleri dahil olmak üzere herhangi bir repo’ya karşı çalıştırmak için ücretsizdir. Mend, başlatıcı’yı kendimiz çalıştırmak zorunda kalmaması için genel GitHub repo’ları için ücretsiz bir barındırılan uygulama da sunar. SLA destekli barındırma isteyenler için ücretli katmanlar vardır, ancak homelab buna asla ihtiyaç duymaz.
Hem bildirimci hem de tarayıcıya ihtiyacım var mı?
Bunlar farklı soruları cevaplar. Bir bildirimci veya PR bot (Renovate, Diun, WUD, Dependabot) bize “yeni sürüm var” der. Tarayıcı (Trivy) bize “çalıştırdığımız sürümün bilinen CVE’leri var” der. Bir sablonun güncel ve hala savunmasız olması veya eski ve hala güvenli olması mümkündür. Her birini çalıştırmak her iki açıyı da çok az örtüşme olmadan kapsar.