Renovate automated Docker image version pinning

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:

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.

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.