Docker Engine 29, 10 Kasım 2025'te yayımlanan 29.0.0 ile başlayan ve kırıcı değişiklikler içeren bir ana sürümdür. En önemli değişiklikler şunlardır: yeni kurulumlarda containerd imaj deposu varsayılan oldu, daemon'ın kabul ettiği en düşük API sürümü yükseltildi, cgroup v1 kullanımdan kaldırılmış (deprecated) ilan edildi, Docker Content Trust CLI'den çıkarıldı, docker image ls yeni görünüme geçti ve nftables desteği deneysel olarak geldi. Belgelerdeki son sürüm, 3 Kasım 2026 tarihli 29.9.3'tür.
Bu yazıda 29.0.0'ın kırıcı değişikliklerini ve varsayılan davranış değişikliklerini, ardından 29.1 ile 29.9 arasındaki ara sürümlerde gelen yenilikleri ve güvenlik düzeltmelerini sunucu yöneticisinin bakış açısıyla özetliyoruz. Kaynak, Docker'ın resmî Engine 29 sürüm notlarıdır; Go SDK ve API tip değişiklikleri gibi yalnızca Engine üzerine kod yazanları ilgilendiren maddeleri kısa tuttuk.
Yükseltmeden önce: 29.0.0 uyarısı
Sürüm notları 29.0.0 için açık bir uyarıyla başlar: bu sürüm birkaç kırıcı değişiklik ve kullanımdan kaldırma içerir, yükseltmeden önce notları dikkatle okuyun. Bir üretim sunucusunu 28.x'ten 29.x'e taşımadan önce aşağıdaki maddeleri kendi kurulumunuzla karşılaştırmanız ve mümkünse önce bir test sunucusunda denemeniz bu uyarının pratik karşılığıdır. Paket deposundan kurulum ve güncelleme adımları Docker Ubuntu kurulumu ve Debian, Fedora, RHEL ve CentOS kurulumu yazılarında.
29.0.0 kırıcı değişiklikleri

| Değişiklik | Kimi etkiler | Ne yapmalı |
|---|---|---|
| Daemon en az API v1.44 (Docker 25.0 ve sonrası) istiyor | Eski istemciler ve eski SDK kullanan araçlar | İstemcileri güncelleyin; 29.3.0 ile alt sınır v1.40'a indirildi |
| cgroup v1 kullanımdan kaldırıldı | cgroup v1 ile çalışan sunucular | Destek en az Mayıs 2029'a kadar sürüyor, cgroup v2'ye geçişi planlayın |
| Docker Content Trust CLI'den kaldırıldı | docker trust ve DCT kullanan iş akışları | Ayrı bir eklenti olarak derlenebiliyor |
| Debian armhf paketleri ARMv7 hedefliyor | ARMv6 cihazlar | ARMv6 cihazlarda bu paketler çalışmaz |
| Resmî Raspbian 32 bit paketleri yok | Raspberry Pi OS 32 bit kurulumları | 64 bit için Debian arm64, 32 bit ARMv7 için Debian armhf |
| Go modülü github.com/docker/docker kullanımdan kaldırıldı | Go modülü kullananlar ve paketleyiciler | github.com/moby/moby/client ve api modüllerine geçin |
API sınırı en sık karşılaşılabilecek sorundur: Docker 25.0'dan eski bir istemci veya bir aracın içine gömülü eski bir Docker kütüphanesi 29.0 daemon'ına bağlanamayabilir. Sürüm notları 29.3.0 ile bu alt sınırın v1.44'ten v1.40'a (Docker 19.03) indirildiğini yazar; bu yüzden 29.3.0 ve sonrası eski istemcilere daha toleranslıdır. Etiketleme tarafında da bir değişiklik var: v29'dan itibaren sürümler docker- önekiyle etiketleniyor (örneğin docker-v29.0.0); notlar bunun yalnızca Go modülü kullanıcılarını ve paket bakımcılarını etkilediğini vurgular.
cgroup v1 hakkında: rootless modda kaynak limitleri zaten yalnızca cgroup v2 ve systemd ile çalışır, rootful kurulumlar için de geçiş artık bir plan meselesidir. Ayrıntılar için Docker CPU ve bellek limiti ve Docker rootless mod yazılarına bakabilirsiniz.
29.0.0 varsayılan davranış değişiklikleri

containerd imaj deposu yeni kurulumlarda varsayılan
Yeni kurulumlarda imajlar artık klasik depolama sürücüleri yerine containerd imaj deposunda tutulur. Bu, mevcut kurulumlar için otomatik bir geçiş anlamına gelmez; değişiklik yalnızca yeni kurulumlar için geçerlidir. userns-remap ile yapılandırılmış daemon'lar bu değişikliğin dışındadır ve containerd imaj deposu bu modda geçici olarak kullanılamaz. Ara sürümlerde containerd deposuyla ilgili birçok düzeltme geldi; örneğin 29.9.0 ile lazy-pull daemon özelliği eklendi ve bilinen uzak snapshotter'lar (nydus, overlaybd, soci, stargz) için varsayılan olarak açık. Konunun tamamı Docker containerd image store yazısında.
docker image ls yeni görünüm
docker image ls artık varsayılan olarak --tree görünümünün daraltılmış hali olan yeni görünümü kullanır ve --all verilmedikçe etiketsiz imajları göstermez. --tree görünümü imajları oluşturulma tarihi yerine ada göre alfabetik sıralar. Ara sürümlerde bu görünüme ait düzeltmeler de var: 29.0.1 ile çıktı yönlendirildiğinde (örneğin grep için) ad sütunu kısaltılmıyor ve NO_COLOR ortam değişkeni dikkate alınıyor, 29.0.4 ile imaj adları kısaltılmıyor. Çıktıyı ayrıştıran betikleriniz varsa sütun biçimine güvenmek yerine --format kullanmak daha dayanıklıdır; bu konu Docker format ve filter yazısında.
Deneysel nftables desteği
Daemon'ın firewall-backend seçeneği nftables yapılarak iptables yerine nftables kullanılabilir. Belgeler bu desteğin deneysel olduğunu ve seçeneklerin, davranışın ve uygulamanın ileride değişebileceğini söyler. Overlay ağ kuralları henüz iptables'tan taşınmadığı için daemon Swarm modunda çalışırken nftables açılamaz. Bir diğer önemli fark: nftables modunda Docker ana makinede IP yönlendirmeyi (forwarding) kendisi açmaz; bir bridge ağı yönlendirmeye ihtiyaç duyuyor ve yönlendirme kapalıysa daemon başlangıcı veya ağ oluşturma hata verir. Ya yönlendirmeyi açıp Docker dışı arayüzler arasında istenmeyen yönlendirmeyi engelleyen kurallar eklersiniz ya da --ip-forward=false ile kontrolü kapatırsınız, ancak port yönlendirme dahil bazı bridge işlevleri çalışmayabilir.
{
"firewall-backend": "nftables"
}Linux'ta docker info artık mümkünse güvenlik duvarı arka ucunu da raporluyor. Docker'ın paket filtreleme kuralları ve UFW ile ilişkisi Docker iptables ve UFW yazısında.
Container'larda açık dosya sınırı 1024'e indi
29.0.0 ile containerd 2.1.5'e güncellendi ve containerd artık container'lar için systemd'nin varsayılan LimitNOFILE değerini kullanıyor. Sonuç olarak container'lardaki açık dosya tanımlayıcısı sınırı (ulimit -n) 1048576'dan 1024'e iniyor. Notlar bunun Engine 25.0'da derleme container'ları için yapılan değişikliği tüm container'lara genişlettiğini ve sınır sonsuz olduğunda davranışını ulimit'e göre ayarlayan programların aşırı bellek tüketmesini önlediğini açıklar. Çok sayıda bağlantı açan bir veritabanı veya proxy çalıştırıyorsanız bu değişiklik doğrudan sizi ilgilendirir. Daha yüksek sınır gerekiyorsa docker run ile --ulimit kullanabilir ya da daemon.json içinde varsayılan verebilirsiniz:
{
"default-ulimits": {
"nofile": {
"Name": "nofile",
"Soft": 1048576,
"Hard": 1048576
}
}
}Ağ tarafındaki diğer değişiklikler
- Legacy link ortam değişkenleri: Eski
--linközelliğinin container'a eklediği ortam değişkenleri artık otomatik eklenmiyor. DaemonDOCKER_KEEP_DEPRECATED_LEGACY_LINKS_ENV_VARS=1ile başlatılırsa geri gelir, ancak bu kaçış yolu ileride kaldırılacak. 29.6.0 ile varsayılan bridge'e bağlı ve link tanımlı bir container oluşturulduğunda Engine bir kullanım dışı uyarısı döndürüyor. - macvlan ve IPvlan-l2: IPAM yapılandırmasında açıkça
--gatewayverilmedikçe varsayılan ağ geçidi yapılandırılmıyor. Ayrıntılar macvlan ve ipvlan yazısında. - iptables zincirleri: Bridge ağlarının iptables kuralları güncellendi,
DOCKER-ISOLATION-STAGE-1veDOCKER-ISOLATION-STAGE-2zincirleri kaldırıldı. - Yeni daemon seçeneği:
--bridge-accept-fwmarkile belirli bir güvenlik duvarı işaretini taşıyan paketler bridge ağlarının "drop" kurallarını aşarak kabul edilir. - Container başlangıç sırası: Daemon açılışında ağ yığınını başka container'larla paylaşan container'lar, o yığına ihtiyaç duyanlardan önce yeniden başlatılıyor.
Kaldırılan veya gizlenen CLI seçenekleri
docker run ve docker create için --kernel-memory seçeneği gizlendi ve artık daemon ile çekirdek tarafından desteklenmediği için kullanıldığında uyarı veriyor. --mount için kullanımdan kaldırılmış bind-nonrecursive seçeneği kaldırıldı. docker commit için --pause bayrağı --no-pause lehine kullanımdan kaldırıldı. JSON biçimli docker image ls çıktısından VirtualSize alanı çıkarıldı. API v1.44 öncesine (Docker v24.0 ve öncesi) yönelik uyumluluk kodu kaldırıldı. Pre-Docker 1.10 eski imajları yükleme desteği de sona erdi.
29.1 ile 29.9 arasındaki yenilikler
Ara sürümler çoğunlukla düzeltme ve güvenlik güncellemesi içerse de birkaçı yeni özellik getirdi. Sunucu tarafında öne çıkanlar şunlardır:
| Sürüm | Öne çıkan değişiklik |
|---|---|
| 29.1.0 | Kullanıcının değiştirdiği /etc/resolv.conf container yeniden başlatmalarında üzerine yazılmıyor |
| 29.2.0 | Deneysel NRI desteği; imaj inspect çıktısında Identity alanı; dockerd --validate sistem gereksinimlerini de denetliyor; anonim salt okunur volume kısıtı kaldırıldı |
| 29.3.0 | --mount için bind-create-src seçeneği; en düşük API v1.40; systemd 253 Type=notify-reload desteği |
| 29.4.2 ve 29.4.3 | CVE-2026-31431 için seccomp ve ardından AppArmor ve SELinux tabanlı sertleştirme |
| 29.5.0 | Rootless için varsayılan gvisor-tap-vsock ağ sürücüsü; desteklenen çekirdeklerde özel zaman ad alanı; local log sürücüsüne label, env ve tag; docker ps --format için .HealthStatus |
| 29.6.0 | İmaj attestation uç noktası; docker login --password ile - değeri standart girdiden okuma; ip_local_reserved_ports içindeki portlar dinamik atamada kullanılmıyor |
| 29.7.0 | Deneysel embedded-containerd; image mount türü artık deneysel değil; default-stop-timeout daemon seçeneği |
| 29.8.0 | docker run --umask; awslogs için ek öznitelikler; varsayılan AppArmor profil şablonu ayarı; ps için annotation filtresi |
| 29.9.0 | containerd deposu için lazy-pull; ICC kapalı bridge ağlarında IPv6 komşu keşfi; Swarm portlarına IPv6 erişimi destekleniyor |
29.4.2 satırı ayrıca dikkat ister. Bu sürüm "Copy Fail" olarak anılan CVE-2026-31431'e karşı varsayılan seccomp profilinde AF_ALG soketlerini ve socketcall(2) çağrısını engelledi. Bilinen sorun olarak bu sertleştirmenin 32 bit programları ve i386 imajlarını, SteamCMD ve bazı Wine tabanlı iş yükleri dahil, bozabileceği yazıldı. Notlar geçici çözüm için --security-opt seccomp=unconfined kullanmamanızı ve seccomp/v0.2.0 profilini kullanmamanızı açıkça uyarır; gerekiyorsa yalnızca ihtiyaç duyan container'lar için moby/profiles deposundaki seccomp/v0.2.1 profili önerilir. 29.4.3 ise socketcall engelini kaldırıp yerine AF_ALG'yi LSM katmanında engelleyen AppArmor ve SELinux kuralları getirdi; SELinux tarafındaki önlem için daemon'ın selinux-enabled: true ile yapılandırılması gerekir ve bu seçenek varsayılan olarak açık değildir. Profili daemon varsayılanı yapmak için notlardaki ayar şudur:
{
"seccomp-profile": "/etc/docker/seccomp-profile-v0.2.1.json"
}29.7.0'daki default-stop-timeout açıkça zaman aşımı verilmemiş container'ların durdurma süresini daemon düzeyinde ayarlar. 29.8.0'da gelen bir değişiklik de kurulumları etkileyebilir: sistemde yapılandırılmış bir containerd servisi yoksa ve containerd kurulu değilse dockerd artık gömülü containerd'yi kullanıyor. Log tarafında 29.5.0 ile local sürücüsünün öznitelik desteği, 29.4.1 ile {{.ImageID}} etiket şablonundaki digest algoritmasının kırpılması gibi düzeltmeler var; log yapılandırması için Docker log boyutu sınırlama yazısına bakabilirsiniz.
Güvenlik düzeltmeleri: neden güncel kalmalısınız?

29.x serisinin neredeyse her ara sürümü güvenlik düzeltmesi içerir. Örnekler sunucu yöneticisi için somuttur:
- 29.5.1:
docker cpkomutunda üç açık kapatıldı. Biri (CVE-2026-41567) kötü niyetli bir container'ın, sıkıştırma çözme programlarının container dosya sistemindePATHüzerinden aranmasını kullanarak ana makinede root yetkisiyle program çalıştırmasına izin veriyordu; diğer ikisi TOCTOU açıklarıydı. - 29.8.2: Kötü niyetli bir DNS yanıtının registry bağlantılarında TLS doğrulamasını atlatabildiği veya HTTP'ye düşürebildiği bir açık (CVE-2026-92543) ve şifreli overlay ağlarına sahte Ethernet çerçevesi enjekte edilebilen bir açık (CVE-2026-92542) düzeltildi; ayrıca birçok BuildKit açığı kapatıldı.
- 29.9.0: Go çalışma zamanı güncellemesiyle daemon'ı HTTP/2 üzerinden çökertebilen veya belleğini tüketebilen açıklar kapatıldı.
- 29.9.2: Go çalışma zamanı, anahtarları ele geçirilmiş sekiz eMudhra ara sertifikasını içeren zincirleri reddediyor. Bu ara sertifikalara dayanan bir registry kullanıyorsanız imaj çekme ve gönderme TLS doğrulamasında başarısız olur ve registry'nin yeni bir sertifika zinciri alması gerekir.
- 29.9.3: Geçerli işçi sertifikasına sahip bir saldırganın lider değişiminden sonra yönetici sertifikası alabildiği bir SwarmKit açığı (CVE-2026-115539), firewalld Docker'ın iptables kurallarını temizledikten sonra Swarm overlay ağlarında şifreleme korumasının kaybolması (CVE-2026-115538) ve BuildKit 0.34.2 ile gelen iki düzeltme.
Swarm kullanıyorsanız 29.9.3'teki düzeltmeler özellikle önemlidir; Swarm'ın ağ ve güvenlik yapısı için Docker Swarm kurulumu yazısına bakabilirsiniz. Rootless kullanıcılar için de RootlessKit art arda güncellendi: 29.5.0 ile v3.0.0, 29.8.0 ile v3.1.0, 29.9.0 ile 3.2.0 ve 29.9.1 ile v3.3.0.
Hangi sürümü çalıştırdığınızı kontrol etmek
İstemci ve daemon sürümünü docker version komutuyla görürsünüz. 29.0.3 ile docker version --format json çıktısındaki BuildTime alanı yeniden RFC3339Nano biçimine döndü, 29.0.1 ile ApiVersion ve MinApiVersion alanlarının biçimi önceki sürümlerle uyumlu hale getirildi. Bu alanlar, istemcinizin daemon'ın kabul ettiği API aralığında olup olmadığını görmek için kullanışlıdır:
docker version
docker version --format jsonYükseltme kontrol listesi
- Sunucunuzun cgroup sürümünü kontrol edin; cgroup v1 kullanıyorsanız v2 geçişini planlayın.
- Docker API'sine bağlanan araçlarınızın (CI ajanları, izleme araçları, yönetim panelleri) desteklediği en düşük API sürümünü kontrol edin.
- Docker Content Trust veya
docker trustkullanan betikleriniz varsa alternatif planlayın. - Çok sayıda dosya veya bağlantı açan container'lar için açık dosya sınırının 1024'e indiğini hesaba katın.
docker image lsçıktısını ayrıştıran betikleri--formatkullanacak şekilde güncelleyin.- macvlan veya IPvlan-l2 ağlarında ağ geçidini açıkça tanımlayın.
- Legacy
--linkortam değişkenlerine dayanan container'ları kullanıcı tanımlı ağlara taşıyın; bunun için bridge network yazısına bakabilirsiniz. - Swarm kullanıyorsanız nftables'ın Swarm modunda açılamadığını unutmayın.
Sık Sorulan Sorular
Engine 29'a yükseltince imajlarım containerd deposuna taşınır mı?
Sürüm notlarına göre containerd imaj deposu yalnızca yeni kurulumlarda varsayılandır. Mevcut bir kurulumu yükseltmek bu varsayılanın uygulanacağı anlamına gelmez. Geçiş yapmak isterseniz ayrıntılar containerd image store yazısında.
cgroup v1 desteği ne zaman tamamen kalkıyor?
Notlar desteğin en az Mayıs 2029'a kadar süreceğini, ancak en kısa sürede cgroup v2'ye geçilmesi gerektiğini söyler. Kesin bir kaldırma sürümü belirtilmez.
Eski bir CI ajanı 29 daemon'ına bağlanamıyor, ne yapmalıyım?
29.0.0 daemon'ı en az API v1.44 istiyordu; 29.3.0 ile alt sınır v1.40'a indirildi. Daemon'ı güncel bir 29.x sürümüne yükseltmek ve ajanın kullandığı Docker istemcisini güncellemek iki tarafı da uyumlu hale getirir.
Compose sürümü de değişti mi?
Bu yazı yalnızca Docker Engine sürüm notlarını kapsar. Compose kendi sürüm çizgisine sahiptir; kurulum ve güncelleme için Docker Compose plugin kurulumu yazısına bakabilirsiniz.
Marka adları sahiplerine aittir. Bu yazı bağımsız bir teknik rehberdir; adı geçen kuruluşlarla bayilik veya ortaklık ilişkisi bulunduğu anlamına gelmez.
İlgili içerikler: Docker öğrenme rehberi · containerd image store · Docker iptables ve UFW · Docker rootless mod · Docker Ubuntu kurulumu · daemon.json yapılandırma