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

29.0.0 kırıcı değişiklikleri: Daemon en az API v1.44 (Docker 25.0 ve sonrası) istiyor, cgroup v1 kullanımdan kaldırıldı, Docker Content Trust CLI'den kaldırıldı, Debian armhf...
DeğişiklikKimi etkilerNe yapmalı
Daemon en az API v1.44 (Docker 25.0 ve sonrası) istiyorEski 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 sunucularDestek 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 hedefliyorARMv6 cihazlarARMv6 cihazlarda bu paketler çalışmaz
Resmî Raspbian 32 bit paketleri yokRaspberry 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 paketleyicilergithub.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

29.0.0 varsayılan davranış değişiklikleri: Legacy link ortam değişkenleri, macvlan ve IPvlan-l2, iptables zincirleri, Yeni daemon seçeneği

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.

json
{
  "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:

json
{
  "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. Daemon DOCKER_KEEP_DEPRECATED_LEGACY_LINKS_ENV_VARS=1 ile 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 --gateway verilmedikç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-1 ve DOCKER-ISOLATION-STAGE-2 zincirleri kaldırıldı.
  • Yeni daemon seçeneği: --bridge-accept-fwmark ile 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.0Kullanıcının değiştirdiği /etc/resolv.conf container yeniden başlatmalarında üzerine yazılmıyor
29.2.0Deneysel 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.3CVE-2026-31431 için seccomp ve ardından AppArmor ve SELinux tabanlı sertleştirme
29.5.0Rootless 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.0Deneysel embedded-containerd; image mount türü artık deneysel değil; default-stop-timeout daemon seçeneği
29.8.0docker run --umask; awslogs için ek öznitelikler; varsayılan AppArmor profil şablonu ayarı; ps için annotation filtresi
29.9.0containerd 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:

json
{
  "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?

Güvenlik düzeltmeleri: neden güncel kalmalısınız? 29.5.1, 29.8.2, 29.9.0, 29.9.2

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 cp komutunda üç açık kapatıldı. Biri (CVE-2026-41567) kötü niyetli bir container'ın, sıkıştırma çözme programlarının container dosya sisteminde PATH ü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:

bash
docker version
docker version --format json

Yü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 trust kullanan 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 --format kullanacak şekilde güncelleyin.
  • macvlan veya IPvlan-l2 ağlarında ağ geçidini açıkça tanımlayın.
  • Legacy --link ortam 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