Docker Engine'i Ubuntu sunucunuza kurmanın resmî ve önerilen yolu, Docker'ın kendi apt deposunu sisteme eklemek ve ardından docker-ce, docker-ce-cli, containerd.io, docker-buildx-plugin ile docker-compose-plugin paketlerini bu depodan kurmaktır. Böylece sonraki sürümler normal apt güncellemeleriyle gelir. Kurulumdan önce dağıtımın kendi resmî olmayan Docker paketlerini kaldırmanız, kurulumdan sonra da servisin çalıştığını ve hello-world imajının açıldığını doğrulamanız gerekir.
Bu yazıda Docker belgelerindeki Ubuntu kurulum sayfasını adım adım, bir VPS yöneticisinin bakış açısıyla açıklıyoruz: hangi Ubuntu sürümlerinin desteklendiği, depo dosyasının her satırının ne yaptığı, belirli bir sürümü nasıl sabitleyeceğiniz, .deb paketiyle elle kurulum, güncelleme ve tamamen kaldırma. Docker'ın ne olduğunu ve neden kullanıldığını Docker ile uygulama deploy yazısında anlattık; diğer dağıtımlar için Debian, Fedora, RHEL ve CentOS kurulumu yazısına bakabilirsiniz.
Kurulumdan önce: güvenlik duvarı uyarısı
Belgeler kuruluma geçmeden önce iki güvenlik duvarı uyumsuzluğunu açıkça uyarı olarak verir. Birincisi, sunucuda ufw veya firewalld kullanıyorsanız Docker ile dışarıya açtığınız container portları bu araçların kurallarını atlar. Yani UFW'de bir portu kapalı tuttuğunuzu düşünürken -p ile yayımladığınız bir container portu internetten erişilebilir olabilir. Bu davranışın ayrıntısını ve DOCKER-USER zinciriyle nasıl kural yazılacağını Docker, iptables ve UFW yazısında, UFW'nin kendisini ise UFW güvenlik duvarı rehberinde bulabilirsiniz.
İkincisi, Docker yalnızca iptables-nft ve iptables-legacy ile uyumludur. Doğrudan nft komutuyla oluşturulmuş güvenlik duvarı kuralları Docker kurulu bir sistemde desteklenmez. Belgelerin önerisi, kullandığınız kural setlerini iptables veya ip6tables ile oluşturmanız ve bunları DOCKER-USER zincirine eklemenizdir. Sunucuya Docker kurmadan önce mevcut güvenlik duvarı düzeninizi bu açıdan gözden geçirmek, kurulumdan sonra sürprizle karşılaşmamanın en kolay yoludur.
Desteklenen Ubuntu sürümleri ve mimariler
Docker Engine için şu Ubuntu sürümlerinden birinin 64 bit kurulumu gerekir: Ubuntu Stonking 26.10, Ubuntu Resolute 26.04 (LTS), Ubuntu Noble 24.04 (LTS) ve Ubuntu Jammy 22.04 (LTS). Ubuntu paketleri x86_64 (amd64), armhf, arm64, s390x ve ppc64le (ppc64el) mimarileriyle uyumludur. Kurulum genel bakış sayfasındaki tabloya göre Ubuntu, listedeki beş mimarinin hepsinin desteklendiği tek dağıtımdır.
Linux Mint gibi Ubuntu türevlerine kurulum resmî olarak desteklenmez; çalışabilir ama Docker bunu test etmez. Kubuntu, Lubuntu veya Xubuntu kullanıyorsanız belgeler Ubuntu talimatlarını izlemenizi ve sürüm adını karşılık gelen Ubuntu sürümüyle değiştirmenizi önerir. Hangi Ubuntu sürümüne karşılık geldiğinizi kendi dağıtımınızın belgelerinden öğrenmeniz gerekir.
Çakışan eski paketleri kaldırın
Ubuntu depolarında Docker'ın resmî olarak yayımlamadığı Docker paketleri bulunur ve bunlar resmî paketlerle çakışabilir. Kurulumdan önce kaldırılması gereken paketler şunlardır: docker.io, docker-compose, docker-compose-v2, docker-doc, docker-buildx ve podman-docker. Ayrıca Docker Engine, containerd ve runc bileşenlerine bağımlıdır ve bunları tek bir containerd.io paketi içinde getirir. Daha önce ayrı ayrı containerd veya runc kurduysanız, Docker ile gelen sürümlerle çakışmaması için onları da kaldırmalısınız.
sudo apt remove $(dpkg --get-selections docker.io docker-compose docker-compose-v2 docker-doc docker-buildx podman-docker containerd runc | cut -f1)Bu komut, listedeki paketlerden sistemde kurulu olanları bulup kaldırır. apt bu paketlerin hiçbirinin kurulu olmadığını bildirebilir; bu bir hata değildir. Önemli bir ayrıntı: /var/lib/docker/ altında duran imajlar, container'lar, volume'lar ve ağlar paket kaldırıldığında otomatik silinmez. Temiz bir başlangıç istiyorsanız yazının sonundaki kaldırma bölümündeki veri silme adımını uygulamanız gerekir.
Kurulum yöntemleri

Belgeler Ubuntu için dört yol sayar. Hangisini seçeceğiniz, sunucuyu nasıl yönettiğinize ve güncellemeleri nasıl almak istediğinize bağlıdır:
| Yöntem | Ne zaman | Güncelleme |
|---|---|---|
| Docker Desktop for Linux | Belgelere göre en kolay ve hızlı başlangıç | Docker Desktop belgelerinde |
| Docker apt deposu | Sunucular için önerilen yol | apt ile, depodan |
| .deb paketini elle kurmak | Depo kullanılamıyorsa | Her sürüm için yeni dosya indirilir |
| Convenience script | Yalnızca test ve geliştirme ortamları | Belgeler üretim için önermez |
Bir VPS üzerinde production iş yükü çalıştıracaksanız mantıklı seçim apt deposudur: kurulum tekrarlanabilir, sürüm sabitlenebilir ve güvenlik güncellemeleri paket yöneticisiyle gelir. Convenience script belgelerde açıkça yalnızca test ve geliştirme ortamları için önerilir.
1. Adım: Docker apt deposunu ekleyin
Yeni bir sunucuya Docker Engine'i ilk kez kurmadan önce Docker'ın apt deposunu tanımlamanız gerekir. Bu işlem bir kez yapılır; sonrasında kurulum ve güncelleme bu depodan sürer:
# Docker'ın resmî GPG anahtarını ekleyin:
sudo apt update
sudo apt install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# Depoyu apt kaynaklarına ekleyin:
sudo tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF
sudo apt updateSatırların görevi şöyledir. ca-certificates ve curl, HTTPS üzerinden anahtar indirmek için gerekir. install -m 0755 -d /etc/apt/keyrings anahtarların duracağı dizini doğru izinle oluşturur. GPG anahtarı docker.asc olarak bu dizine indirilir ve chmod a+r ile herkes tarafından okunabilir yapılır; aksi halde apt imzayı doğrulayamaz.
Depo tanımı /etc/apt/sources.list.d/docker.sources dosyasına yazılır. Suites satırındaki kabuk ifadesi /etc/os-release dosyasını okur; UBUNTU_CODENAME tanımlıysa onu, değilse VERSION_CODENAME değerini kullanır. Böylece sunucunuzun sürüm kod adı (örneğin noble) elle yazılmadan yerine konur. Architectures satırı dpkg --print-architecture çıktısıyla makinenin mimarisini ekler. Signed-By ise bu depodaki paketlerin yalnızca az önce indirdiğiniz anahtarla doğrulanmasını sağlar. Son apt update yeni depodaki paket listesini çeker.
2. Adım: Docker paketlerini kurun

En güncel sürümü kurmak için tek komut yeterlidir:
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin| Paket | İçerik |
|---|---|
| docker-ce | Docker Engine (daemon) |
| docker-ce-cli | docker komut satırı istemcisi |
| containerd.io | containerd ve runc bileşenlerini birlikte getiren paket |
| docker-buildx-plugin | Buildx CLI eklentisi |
| docker-compose-plugin | docker compose komutunu sağlayan Compose eklentisi |
Compose eklentisinin ayrıntıları, docker compose ile eski docker-compose arasındaki fark ve eklentiyi ayrıca kurma yolları Docker Compose plugin kurulumu yazısında. Buildx ve BuildKit tarafını ise BuildKit ve Buildx yazısında ele alıyoruz.
Belirli bir sürümü kurmak
Production sunucularında tüm makinelerde aynı Engine sürümünü çalıştırmak isteyebilirsiniz. Önce depodaki sürümleri listeleyin, sonra istediğiniz sürüm dizesini hem docker-ce hem docker-ce-cli için verin:
apt list --all-versions docker-ce
VERSION_STRING=5:<sürüm>-1~ubuntu.24.04~noble
sudo apt install docker-ce=$VERSION_STRING docker-ce-cli=$VERSION_STRING containerd.io docker-buildx-plugin docker-compose-pluginBelgelerdeki örnekte sürüm dizesi 5: önekiyle başlar, ardından Engine sürümü, -1~ubuntu.24.04~noble gibi Ubuntu sürümüne özgü bir sonek gelir. Siz <sürüm> yerine listede gördüğünüz değeri birebir kopyalamalısınız; sonek sunucunuzun Ubuntu sürümüne göre değişir. Engine ile CLI'yi aynı sürüm dizesiyle kurmak, istemci ve daemon'ın birbirinden farklı sürümlerde kalmasını önler.
3. Adım: Kurulumu doğrulayın
Kurulumdan sonra belgeler önce servisin çalışıp çalışmadığına bakmanızı söyler. Çalışmıyorsa elle başlatabilirsiniz:
sudo systemctl status docker
sudo systemctl start docker
sudo docker run hello-worldhello-world komutu bir test imajını indirir ve bir container içinde çalıştırır; container çalıştığında bir onay mesajı yazar ve kapanır. Bu mesajı görüyorsanız Engine kurulmuş ve çalışıyor demektir. Ubuntu ve Debian'da Docker servisi varsayılan olarak açılışta başlar, bu yüzden ayrıca systemctl enable yapmanız gerekmez. Komutu şimdilik sudo ile çalıştırdığımıza dikkat edin: sudo olmadan çalıştırmak için gereken grup ayarı ve bunun güvenlik sonucu Docker permission denied ve sudo olmadan çalıştırma yazısında.
Docker Engine'i güncellemek
Depodan kurduysanız güncelleme için yapmanız gereken, 2. adımı tekrarlamak ve kurmak istediğiniz yeni sürümü seçmektir. Belgeler ayrıca yama sürümlerinin (patch release) her zaman aynı ana ve ara sürümle geriye dönük uyumlu olduğunu belirtir. Yani 29.x serisi içinde bir yamadan diğerine geçmek, ana sürüm atlamaktan daha az risklidir.
Güncelleme sırasında çalışan container'ların durmasını istemiyorsanız daemon'ın live restore özelliğine bakın. Belgelere göre live restore, container'ları yalnızca yama sürümleri arasındaki güncellemelerde ayakta tutar; ana sürüm yükseltmelerinde desteklenmez. Bu ayarın nasıl açıldığı daemon.json yapılandırma yazısında. Ana sürüm geçişlerinden önce kırıcı değişiklikleri görmek için Docker Engine 29 yenilikleri yazısını okuyun.
Depo kullanamıyorsanız: .deb paketiyle kurulum
Sunucunuz Docker deposuna erişemiyorsa paketleri elle indirip kurabilirsiniz. Bu yolda her güncelleme için yeni dosyaları yeniden indirmeniz gerekir. Adımlar şöyledir: https://download.docker.com/linux/ubuntu/dists/ adresine gidin, listeden Ubuntu sürümünüzü seçin, pool/stable/ altında mimarinizi (amd64, armhf, arm64 veya s390x) bulun ve Engine, CLI, containerd, Buildx ve Compose paketlerinin .deb dosyalarını indirin. Ardından hepsini birlikte kurun:
sudo dpkg -i ./containerd.io_<version>_<arch>.deb \
./docker-ce_<version>_<arch>.deb \
./docker-ce-cli_<version>_<arch>.deb \
./docker-buildx-plugin_<version>_<arch>.deb \
./docker-compose-plugin_<version>_<arch>.debDosya yollarını indirdiğiniz konuma göre düzeltin. Kurulumdan sonra yine systemctl status docker ile servisi kontrol edip hello-world ile doğrulayın. Güncellemek için daha yeni paket dosyalarını indirip aynı kurulum adımını yeni dosyalarla tekrarlamanız yeterlidir.
Docker Engine'i tamamen kaldırmak
Kaldırma üç parçadan oluşur: paketler, veriler ve depo tanımı. Önce paketleri purge ile kaldırın:
sudo apt purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
sudo rm /etc/apt/sources.list.d/docker.sources
sudo rm /etc/apt/keyrings/docker.ascBelgeler bir ayrıntıyı daha hatırlatır: elle düzenlediğiniz yapılandırma dosyaları (örneğin /etc/docker/daemon.json) bu adımlarla silinmez, onları ayrıca kendiniz kaldırmanız gerekir.
Sık yapılan hatalar

- Dağıtımın docker.io paketini kurmak: Ubuntu deposundaki
docker.ioveyadocker-compose-v2paketleri Docker'ın yayımladığı paketler değildir ve resmî paketlerle çakışabilir. Önce bunları kaldırın. - Anahtar dosyasının izinlerini atlamak:
chmod a+r /etc/apt/keyrings/docker.ascadımı atlanırsaaptdepo imzasını doğrulayamayabilir. - Firewall'un portları koruduğunu varsaymak: UFW ile kapattığınızı düşündüğünüz bir port, Docker ile yayımlanmışsa erişilebilir olabilir. Servisleri yalnızca yerelden erişilecekse
127.0.0.1adresine bağlamak için port yayınlama yazısına bakın. - Production'da convenience script kullanmak: belgeler bu betiği yalnızca test ve geliştirme ortamları için önerir.
- Log boyutunu unutmak: varsayılan
json-filelog sürücüsünün dosyaları zamanla büyür ve diski doldurabilir. Kurulumdan hemen sonra log rotasyonunu ayarlamak için Docker log boyutunu sınırlama yazısını izleyin.
Lisans ve destek hakkında
Docker Engine açık kaynaklı bir projedir ve Apache 2.0 lisansıyla dağıtılır; Moby projesinin bakımcıları ve topluluk tarafından desteklenir. Belgelere göre Docker, Docker Engine için doğrudan destek vermez; destek Docker Desktop gibi Docker ürünleri içindir. Docker Desktop ile elde edilen Docker Engine'in büyük kuruluşlarda (250 çalışanı veya yıllık 10 milyon ABD dolarını aşan gelir) ticari kullanımı ücretli abonelik gerektirir. Bir VPS'e apt deposundan kurduğunuz Docker Engine, Docker Desktop değildir.
Sık Sorulan Sorular
Ubuntu'nun kendi docker.io paketini kullanabilir miyim?
Kullanılabilir, ancak bu paket Docker tarafından yayımlanmaz ve resmî paketlerle çakışabilir. Belgeler resmî Docker Engine'i kurmadan önce docker.io dahil bu paketleri kaldırmanızı ister. Dağıtımın paketlerindeki sorunlar için de dağıtımın kendi hata takip sistemine başvurmanız gerekir.
Kurulumdan sonra Docker açılışta otomatik başlar mı?
Evet. Belgelere göre Debian ve Ubuntu'da Docker servisi açılışta varsayılan olarak başlar. Fedora ve RHEL gibi dağıtımlarda ise systemctl enable ile ayrıca etkinleştirmeniz gerekir.
Kurulu sürümü nasıl görürüm?
docker version komutu istemci ve sunucu (daemon) için ayrı bölümler halinde sürüm ve API sürümü bilgisini gösterir. Compose eklentisinin sürümü için docker compose version kullanılır. Kontrol adımlarını Docker öğrenme rehberi sayfasında topladık.
Kurulumdan sonra Cannot connect to the Docker daemon hatası alıyorum, ne yapmalıyım?
Bu mesaj genellikle daemon'ın çalışmadığını ya da istemcinin başka bir hosta bağlanmaya çalıştığını gösterir. sudo systemctl status docker ile servisi kontrol edin; adım adım teşhis için Cannot connect to the Docker daemon hatası yazısına bakın.
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 · Debian, Fedora, RHEL ve CentOS kurulumu · sudo olmadan Docker · Compose plugin kurulumu · Docker ve UFW · Docker ile uygulama deploy