Ana içeriğe atla

Debian’a Docker Kurulumu: Eksiksiz Kurulum Rehberi

Bu rehber, resmi Docker deposundan manuel paket kurulumuna kadar dört kurulum yaklaşımını ve kurumsal dağıtımlar için gerekli kurulum sonrası yapılandırmayı kapsar. Docker ortamınızı nasıl güvenli hale getireceğinizi, yaygın sorunları nasıl gidereceğinizi ve üretime hazır bir kurulumu nasıl sürdüreceğinizi öğreneceksiniz.
Güncel 3 Eki 2026  · 15 dk. oku

Yapay Zeka ile Keşfedin

ChatGPTClaudePerplexity

Debian’a Docker kurmak, sisteminizi bozmayacak yöntemi tahmin etmeyi gerektirmemeli.

Çoğu rehber, her birinin ne zaman kullanılacağını açıklamadan birden fazla kurulum seçeneği sunar. Sonuçta Debian deposundan güncel olmayan paketlerle ya da daha da kötüsü, kendi konteynerlerinize erişmenizi engelleyen yetki hatalarıyla kalırsınız. Netice? Uygulamaları dağıtmak yerine saatlerinizi sorun gidermeye harcarsınız.

Debian’ın öngörülebilir sürüm döngüsü ve sarsılmaz kararlılığı, onu üretim Docker dağıtımları için mükemmel kılar. Sürpriz sistem güncellemelerinin kurulumunuzu bozmadığı, tutarlı konteyner performansı elde edersiniz. Teoride, zor kısım olan kurulumdan sonra sorun yaşamamanız gerekir.

Bu eğitimde, dört kurulum yöntemini, temel güvenlik sıkılaştırmasını, depolama yapılandırmasını ve Docker’ı Debian üzerinde güvenilir şekilde çalıştırmak için sorun giderme adımlarını anlatacağım.

Docker’a tamamen yeni misiniz? Kuruluma geçmeden önce Docker’ın temelleriyle başlayın.

Sistem Önkoşulları

Docker çoğu modern Debian sisteminde çalışır, ancak önce bazı gereksinimleri kontrol etmeniz gerekir. Bu bölümde, kuruluma başlamadan önce ihtiyaç duyacağınız sistem gereksinimlerini net şekilde göstereceğim.

Debian 10 (Buster) veya daha yeni sürümler, güncel Docker sürümleri için gereklidir. Debian 9 gibi eski sürümler, yeni Docker Engine yapılarıyla çalışmaz. Çekirdek sürümünüzün 3.10 veya üzeri olması gerekir — son birkaç yılda yapılan çoğu Debian kurulumları bu gereksinimi otomatik olarak karşılar.

Docker paketlerini kurmak ve sistemi yapılandırmak için root erişimi veya sudo ayrıcalıkları gerekir. Docker ayrıca şu temel paketleri ister: apt-transport-https, ca-certificates, curl ve gnupg. Çoğu Debian sisteminde bunlar kurulu gelir, ancak bu süreci ileride doğrulayacaksınız.

Donanım gereksinimleri asgari düzeydedir:

  • Temel konteyner iş yükleri için 2 GB RAM, ancak 4 GB veya üzeri geliştirme ortamları için daha uygundur
  • Docker imajları ve konteyner verileri için en az 10 GB boş disk alanı. Üretim ortamları çok daha fazlasını planlamalıdır.

GNOME masaüstü ortamını kullanıyorsanız, gnome-terminal paketinin kurulu olduğundan emin olun. Bazı Docker yönetim araçları, etkileşimli konteyner oturumları için bunu bekler.

Başlamadan önce eski Docker kurulumlarını kaldırın. docker, docker.io veya docker-engine gibi eski paketler, güncel Docker Engine ile çakışabilir. Eski sürümleri temizlemek için şu komutu çalıştırın:

sudo apt remove docker docker-engine docker.io containerd runc

Güvenlik duvarı ve ağ kurulumunuz, konteyner ağ iletişimini etkileyebilir. Docker kendi ağ arayüzlerini ve iptables kurallarını oluşturur. UFW veya özel güvenlik duvarı kuralları kullanıyorsanız, kurulumdan sonra konteyner trafiğine izin vermek için ayarlama yapmanız gerekebilir.

Bu gereksinimleri şimdi kontrol edin — ileride sorun giderme süresinden tasarruf edersiniz.

Kurulum Yöntemleri

Debian’a Docker kurmanın dört yolu vardır ve her birinin farklı artı/eksi yönleri bulunur. Ortamınıza ve güvenlik gereksinimlerinize uyan yöntemi seçmenize yardımcı olacağım.

Bunun yerine Ubuntu kurulum talimatlarını mı arıyorsunuz? Ubuntu’da Docker kurulumuna ilişkin adım adım bir rehberimiz var.

Yöntem 1: Resmi Docker deposu (önerilir)

Bu yöntem, düzenli güvenlik güncellemeleriyle en yeni Docker sürümünü edinmenizi sağlar.

Docker’ın resmi deposu her zaman en yeni kararlı sürümleri içerir ve paket yöneticiniz üzerinden otomatik güncellemeler alırsınız. Önemli güvenlik yamalarını veya yeni özellikleri kaçıran eski sürümlere takılı kalmazsınız.

Önce sisteminizi güncelleyin ve Docker’ın ihtiyaç duyduğu paketleri kurun:

sudo apt update
sudo apt install apt-transport-https ca-certificates curl gnupg lsb-release

Ardından, paketlerin doğruluğunu sağlamak için Docker’ın resmi GPG anahtarını ekleyin:

curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

Depoyu kaynak listenize ekleyerek yapılandırın:

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Son olarak Docker Engine, CLI ve Compose’u kurun:

sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin

Bu, üretim Docker dağıtımları için ihtiyaç duyduğunuz her şeyi sağlar.

Yöntem 2: Varsayılan Debian deposu

Bu yaklaşım, tek komutla Docker kurar, ancak daha eski bir sürüm elde edersiniz.

Debian’ın varsayılan deposu kurulumu basitleştirir — sadece sudo apt install docker.io komutunu çalıştırın. Ama bir sorun var: Genellikle güncel sürümün aylarca hatta yıllarca gerisinde kalan Docker sürümleri gelir.

sudo apt update
sudo apt install docker.io

Bu yöntem, temel testler için veya uyumluluk amacıyla belirli eski bir sürüme ihtiyaç duyduğunuzda iş görür. Ancak yeni Docker sürümlerinin getirdiği güvenlik güncellemelerini, performans iyileştirmelerini ve yeni özellikleri kaçırırsınız.

Resmi depo bir seçenek olmadığında yalnızca bu yöntemi kullanın.

Yöntem 3: Manuel DEB paket kurulumu

Depolara erişemediğinizde paketleri doğrudan indirip kurmayı göstereceğim.

Bu yöntem; internet erişimi kısıtlı (air-gapped) sistemler, kurumsal ağlar veya aynı Docker sürümünü birden çok makineye tekrar tekrar indirmeden kurmanız gerektiğinde işe yarar.

DEB paketlerini Docker’ın web sitesinden indirin:

  1. https://download.docker.com/linux/debian/dists/ adresine gidin

  2. Debian sürümünüzü seçin (bullseye, bookworm, vb.)

  3. pool/stable/amd64/ dizinine gidin

  4. Şu paketleri indirin: docker-ce_*.deb, docker-ce-cli_*.deb ve containerd.io_*.deb

Paketleri sırayla kurun:

sudo dpkg -i containerd.io_*.deb
sudo dpkg -i docker-ce-cli_*.deb
sudo dpkg -i docker-ce_*.deb

Bağımlılık hataları alırsanız, düzeltmek için sudo apt-get install -f çalıştırın.

Bu yöntem güncellemeler için daha fazla manuel işlem gerektirir, ancak hangi sürümün kurulacağı üzerinde tam kontrol sağlar.

Yöntem 4: Kolaylık script’leri

Anlatacağım son yöntem, test ortamları için hızlı kurulum sunar; ancak önce script’i denetlemelisiniz.

Docker, sisteminizi algılayıp otomatik kurulum yapan script’ler sağlar. Test ortamlarını hızla ayağa kaldırmak ya da birden çok sistemi kurarken kullanışlıdırlar.

curl -fsSL https://get.docker.com -o get-docker.sh

Çalıştırmadan önce script’i mutlaka inceleyin:

cat get-docker.sh

Şüpheli veya beklenmedik bir şey olup olmadığına bakın. Script sistem yapılandırmanızı değiştirecek; bu yüzden ne yaptığını bilmek istersiniz.

İnceledikten sonra script’i çalıştırın:

sudo sh get-docker.sh

Kolaylık script’lerini üretimde kullanmayın. Hızlı kurulum için tasarlanmışlardır; güvenli ve tekrarlanabilir dağıtımlar için değil. Kritik sistemlerde resmi depo yöntemine bağlı kalın.

Özel kısıtlar farklı bir yaklaşım gerektirmedikçe resmi depo yöntemini seçmenizi öneririm.

Kurulumu Doğrulama

Kurulum sadece ilk adımdır — bir şey dağıtmadan önce Docker’ın gerçekten çalıştığını doğrulamanız gerekir. Bu hızlı testler, Docker kurulumunuzun gerçek iş yüklerine hazır olup olmadığını gösterir.

Docker sürümünüzü kontrol edin ve kurulumun tamamlandığını doğrulayın:

docker --version

Çıktı olarak Docker version xx.x.x, build x benzeri bir şey görmelisiniz. "command not found" hatası alırsanız, Docker doğru kurulmamış veya PATH’inizde değildir.

Çalışan bileşenleri görmek için ayrıntılı derleme bilgilerini alın:

docker version

Bu komut, istemci ve sunucu sürümlerini ayrı ayrı ve mimari ayrıntıları gösterir. Sunucu bölümü, Docker daemon’unun çalıştığını ve erişilebilir olduğunu doğrular.

Bir test konteyneri çalıştırın ve uçtan uca her şeyin çalıştığını doğrulayın:

docker run hello-world

Docker, hello-world imajını indirip çalıştıracaktır. Her şey doğruysa, Docker konteynerlerinin nasıl çalıştığını açıklayan bir mesaj görürsünüz. Bu test, Docker’ın imaj çekebildiğini, konteyner oluşturup komutları çalıştırabildiğini doğrular.

Ayrıca Docker Compose’un kurulu ve çalışır durumda olduğunu doğrulayabilirsiniz:

docker compose version

Çıktı olarak Docker Compose version vX.xx.x benzeri bir değer görmelisiniz. Yeni Docker kurulumları, eski docker-compose komutu yerine docker compose (boşluklu) kullanır.

Bu komutların tümü hatasız çalışıyorsa, Docker kurulumunuz üretim kullanımı için hazır demektir.

İlk gerçek konteinerinizi çalıştırmaya hazır mısınız? Docker imajlarını adım adım nasıl çalıştıracağınızı öğrenin.

Kurulum Sonrası Yapılandırma

Docker kutudan çıktığı gibi çalışır, ancak günlük kullanım için birkaç ayar yapmak isteyeceksiniz. Bu bölümde, Docker’ı daha kullanışlı ve güvenli kılan servis yönetimi ve kullanıcı izinlerini ele alacağım.

Servis yönetimi

Docker’ın ne zaman çalışacağını şu systemd komutlarıyla kontrol edebilirsiniz:

sudo systemctl start docker    # Docker'ı başlat
sudo systemctl stop docker     # Docker'ı durdur
sudo systemctl restart docker  # Docker servisini yeniden başlat

Sisteminizi başlattığınızda Docker’ın otomatik olarak başlamasını etkinleştirmek için şunu çalıştırın:

sudo systemctl enable docker

Bu, sunucunuzu her yeniden başlattığınızda Docker’ın çalışmasını sağlar; üretim sistemlerinde istediğiniz budur.

Docker’ın çalışıp çalışmadığını ve mevcut durumunu kontrol etmek için şu komutu çalıştırın:

sudo systemctl status docker

Servisin etkin olup olmadığını, ne kadar süredir çalıştığını ve son günlük mesajlarını görürsünüz. Docker çalışmıyorsa, genellikle nedeni de burada görünür.

Servis sorunlarını gidermek için loglara bakın:

sudo journalctl -u docker.service

Bu komut, başlatma sorunları, izin hataları veya yapılandırma problemlerini teşhis etmeye yardımcı olan ayrıntılı Docker daemon günlüklerini gösterir.

Root olmayan kullanıcı erişimi

Docker komutlarını sudo olmadan çalıştırmak için kullanıcınızı docker grubuna eklemeniz gerekiyorsa:

sudo usermod -aG docker $USER

Bu, mevcut kullanıcınızı docker grubuna ekler ve Docker daemon’u ile iletişim izni verir.

Grup değişikliğinin etkili olması için oturumu kapatıp yeniden açmanız gerekir:

logout

Alternatif olarak, terminal oturumunuzu yeniden başlatın. Oturumdan çıkmadan mevcut oturumda grubu etkinleştirmek için newgrp docker da çalıştırabilirsiniz.

Son olarak, root olmayan erişimi test etmek için şu Docker komutunu çalıştırın:

docker run hello-world

Bu komut sudo olmadan çalışıyorsa, her şey hazır.

Ancak güvenlik açısından şu ödün vardır: docker grubundaki kullanıcıların sisteminizde root’a eşdeğer erişimi olur. Ana makine dizinlerini bağlayabilir, hassas dosyalara erişebilir ve potansiyel olarak konteynerlerden kaçarak ana sistemi tehlikeye atabilirler.

Yalnızca güvendiğiniz kullanıcıları docker grubuna ekleyin ve tüm kullanıcıları kontrol etmediğiniz paylaşımlı sistemlerde bunu asla yapmayın.

Bu ayarları bir kez yapılandırdığınızda, Docker günlük kullanımda çok daha kolay hale gelir.

Depolama Sürücüsü Yapılandırması

Docker’ın depolama sürücüsü, konteyner imajlarının ve verilerin sisteminizde nasıl saklanacağını yönetir. Çoğu kullanıcı bunu değiştirmek zorunda kalmaz, ancak seçenekleri anlamak belirli iş yükleri için performansı optimize etmeye yardımcı olur.

Docker, kurulum sırasında sisteminiz için en iyi depolama sürücüsünü otomatik olarak seçer. Debian’da bu genellikle overlay2’dir ve çoğu kullanım durumu için mükemmel performans ve kararlılık sunar.

Geçerli depolama sürücünüzü şu komutla kontrol edin:

docker info | grep "Storage Driver"

overlay2 sürücüsü şu nedenlerle iyi çalışır:

  • Kopyala-yaz işlemlerini hızlı şekilde işler; konteynerler dosyaları değiştirdiğinde
  • İmajlar arasında katmanları paylaşır ve disk alanından tasarruf sağlar
  • Tüm Docker özelliklerini destekler ve uyumluluk sorunları çıkarmaz
  • Farklı dosya sistemi türlerinde güvenilir çalışır

Özel iş yükleri çalıştırıyorsanız veya belirli dosya sistemi gereksinimleriniz varsa farklı bir depolama sürücüsüne ihtiyaç duyabilirsiniz. 

Örneğin, bazı kurumsal depolama sistemleri devicemapper ile daha iyi çalışır veya konteyner dosya sistemi sorunlarını hata ayıklamak için vfs’e ihtiyaç duyabilirsiniz.

Depolama sürücüsünü değiştirmek için Docker’ın daemon yapılandırmasını düzenleyin:

sudo nano /etc/docker/daemon.json

Buraya, storage-driver ayarını ekleyin veya değiştirin:

{
  "storage-driver": "devicemapper"
}

Değişikliğin uygulanması için Docker’ı yeniden başlatmayı unutmayın:

sudo systemctl restart docker

Uyarı: Depolama sürücüsünü değiştirmek, mevcut konteyner ve imajlarınızı erişilemez hale getirir. Önce önemli verileri yedekleyin veya saklamak istediğiniz konteynerleri dışa aktarın.

Yeni sürücüyü, bir imaj çekip konteyner çalıştırarak test edebilirsiniz:

docker pull hello-world
docker run hello-world

Uzun lafın kısası, belirli gereksinimleriniz farklı bir sürücüyü zorunlu kılmıyorsa overlay2 ile devam edin.

Güvenlik Sıkılaştırması

Varsayılan Docker kurulumları geliştirme için uygundur; ancak üretim ortamları ek güvenlik katmanlarına ihtiyaç duyar. Bu yapılandırmalar, ana sisteminizi konteyner kaçışlarına ve kaynak tüketimi saldırılarına karşı korur.

SELinux/AppArmor entegrasyonu

Zorunlu erişim kontrolü, konteynerler ele geçirilse bile neler yapabileceklerini sınırlayan bir güvenlik katmanı ekler. Bu kontroller olmadan, root olarak çalışan bir konteyner, dokunmaması gereken ana kaynaklara erişebilir.

Debian’ın varsayılan güvenlik çerçevesi olan AppArmor’u, şu komutlarla Docker için etkinleştirebilirsiniz:

sudo apt install apparmor-utils
sudo systemctl enable apparmor
sudo systemctl start apparmor

AppArmor çalıştıktan sonra Docker’ın güvenlik profilini yükleyin:

sudo apparmor_parser -r /etc/apparmor.d/docker

Artık AppArmor koruması etkin şekilde konteynerleri çalıştırabilirsiniz:

docker run --security-opt apparmor=docker-default nginx

docker-default profili; dosya sistemi bağlama, ham ağ arayüzlerine erişim ve çekirdek modülü yükleme gibi yetenekleri sınırlar.

SELinux sistemleri için (AppArmor yerine bunu kullanıyorsanız) önce konteyner yönetimini etkinleştirin:

sudo setsebool -P container_manage_cgroup on

Ardından konteynerleri SELinux etiketleriyle çalıştırın:

docker run --security-opt label=type:container_t nginx

Bu kontroller, yaygın konteyner kaçış tekniklerinin çoğunu engeller ve ele geçirilen konteynerlerin verebileceği zararı sınırlar.

Daemon yapılandırması

Saldırı yüzeyini azaltmak ve güvenlik duruşunu iyileştirmek için Docker daemon ayarlarını özelleştirebilirsiniz (ve etmelisiniz). /etc/docker/daemon.json dosyasını oluşturun veya düzenleyin:

{
  "live-restore": true,
  "userland-proxy": false,
  "no-new-privileges": true,
  "icc": false,
  "disable-legacy-registry": true
}

Her ayarın yaptığı şudur:

  • live-restore: true Docker daemon’u çökse bile konteynerleri çalışır halde tutar

  • userland-proxy: false daha iyi performans için kullanıcı alanı proxy’si yerine doğrudan iptables kullanır

  • no-new-privileges: true konteynerlerin yeni ayrıcalıklar kazanmasını engeller

  • icc: false varsayılan olarak konteynerler arası iletişimi devre dışı bırakır disable-legacy-registry: true eski, güvensiz kayıt defteri protokollerine erişimi engeller

Bu değişikliklerden sonra, uygulamak için Docker’ı yeniden başlatın:

sudo systemctl restart docker

Mümkün olduğunda konteynerleri root olmayan kullanıcılarla çalıştırmalısınız:

docker run --user 1000:1000 nginx

Bu, ele geçirilen konteynerlerin sisteminizde yapabileceklerini sınırlar.

Kontrol grupları (cgroups) ile kaynak sınırları

Kaynak sınırları olmayan konteynerler, mevcut tüm CPU, bellek ve I/O’yu tüketip sonuçta ana sisteminizi çökertebilir. Kontrol grupları (cgroups), kaynak kullanımına katı sınırlar koyarak bunu engeller.

Aşırı RAM kullanımını önlemek için bellek sınırlarıyla başlayın:

docker run --memory=512m nginx

Tek bir konteynerin işlem gücünü tekeline almasını önlemek için CPU kullanımını da sınırlayabilirsiniz:

docker run --cpus=1.5 nginx

Disk I/O’su yüksek sistemlerde okuma/yazma hızlarını kontrol edin:

docker run --device-read-bps /dev/sda:1mb nginx

Tam kaynak kontrolü için birden fazla sınırı birleştirebilirsiniz:

docker run \
  --memory=1g \
  --cpus=2 \
  --pids-limit=100 \
  nginx

Tüm konteynerlerde tutarlı sınırlar için, varsayılanları daemon.json’da yapılandırın:

{
  "default-ulimits": {
    "nofile": {
      "Hard": 64000,
      "Name": "nofile",
      "Soft": 64000
    }
  }
}

Bu sınırlar, kaynak tüketimi saldırılarını engeller ve konteynerler arasında adil kaynak paylaşımını sağlar.

Bu güvenlik önlemlerini bir kez yapılandırın; Docker ortamınız çok daha zor ele geçirilebilir hale gelir.

Günlük yönetim için Docker komutlarına hâkim olmanız mı gerekiyor? Bu 18 temel Docker komutu verimliliğinizi artıracak.

Yaygın Sorunların Giderilmesi

Doğru kurulumla bile Docker, konteynerlerin düzgün çalışmasını engelleyen aksaklıklarla karşılaşabilir. İşte en yaygın problemler ve hızlı çözümleri.

İzin hataları

Docker izin sorunlarının çoğu, kullanıcınızın Docker’ın soket dosyasına doğru erişime sahip olmamasından kaynaklanır. Got permission denied while trying to connect to the Docker daemon socket gördüğünüzde, henüz docker grubunda olmadığınız anlamına gelir.

Bunun nedeni Docker’ın root olarak çalışması, ancak docker grubundaki üyelerin erişebileceği bir soket oluşturmasıdır. Kendinizi gruba ekleyin:

sudo usermod -aG docker $USER

Değişikliğin etkili olması için oturumu kapatıp yeniden açmanız gerekir. Şimdi çıkmak istemiyorsanız, mevcut oturumda grubu etkinleştirebilirsiniz:

newgrp docker

Konteyner içindeki dosya izin hataları farklıdır ama bir o kadar yaygındır. Bunlar, konteyner sürecinin ana sisteminizden bağladığınız dosyaları okuyamaması veya yazamaması durumunda ortaya çıkar. Konteyner, dosyalarınıza sahip olan kullanıcı kimliğinden farklı bir kimlikle çalışıyor olabilir.

Dosyalarınıza hangi kullanıcının sahip olduğunu kontrol edin:

ls -la /path/to/your/files

Çoğu Docker konteyneri varsayılan olarak 1000 kullanıcı kimliğiyle (UID) çalışır. Dosyalarınız root’a veya farklı bir kullanıcıya aitse, sahipliği değiştirin:

sudo chown -R 1000:1000 /path/to/your/files

AppArmor yerine SELinux kullanıyorsanız, denetim günlüklerinde görünen farklı izin reddi hataları görebilirsiniz. Bunlar daha karmaşıktır çünkü SELinux, yalnızca kullanıcı kimliklerine değil, güvenlik bağlamlarına göre de erişimi kontrol eder.

Son erişim ihlallerini arayın:

sudo ausearch -m avc -ts recent

Docker hacimlerinize doğru etiketleri geri getirerek ve konteyner yönetimini etkinleştirerek SELinux bağlamlarını düzeltin:

sudo setsebool -P container_manage_cgroup on
sudo restorecon -R /path/to/your/volume

Servis hataları

Docker başlamadığında veya sürekli çöktüğünde, düzeltmeden önce neyin başarısız olduğunu anlamanız gerekir. systemd servis durumu size hızlı bir genel bakış sunar:

sudo systemctl status docker

Bu komut, Docker’ın çalışıp çalışmadığını ve son hata mesajlarını gösterir. Ancak ayrıntılı sorun giderme için Docker başlatılmaya çalışılırken canlı logları izlemek istersiniz:

sudo journalctl -u docker.service -f

Yaygın bir başlatma hatası, Docker düzgün kapanmadığında oluşur. "failed to start daemon: pid file found, ensure docker is not running." gibi bir hata görürsünüz. Bu, başlatma betiğini şaşırtan artık bir işlem dosyası olduğu anlamına gelir.

Eski dosyayı kaldırın ve tekrar başlatmayı deneyin:

sudo rm /var/run/docker.pid
sudo systemctl start docker

Depolama sorunları, daemon hatalarının bir diğer sık nedenidir. Docker tüm verilerini /var/lib/docker içinde saklar; bu dizinde yer kalmazsa veya bozulursa Docker düzgün başlayamaz.

Mevcut alanı kontrol edin:

df -h /var/lib/docker

Alan azsa, kullanmadığınız eski konteyner ve imajları temizleyin:

docker system prune -a

Ağ çakışmaları da Docker’ın başlamasını engelleyebilir. Bu, Docker’ın varsayılan köprü ağı (genellikle 172.17.0.0/16) mevcut ağ kurulumunuzla çakıştığında olur. Adres aralıklarının kullanılamadığına dair hatalar görürsünüz.

Çakışmayan özel bir köprü IP’si yapılandırarak düzeltin. /etc/docker/daemon.json dosyasını düzenleyin:

{
  "bip": "192.168.1.1/24"
}

Değişiklikten sonra yeni ağ yapılandırmasını kullanması için Docker’ı yeniden başlatın:

sudo systemctl restart docker

Güncel olmayan çekirdek sorunları

Docker, konteynerleştirme, ağ ve güvenlik için Linux çekirdek özelliklerine dayanır. Çekirdeğiniz çok eskiyse, yükseltme olmadan düzeltilemeyen sorunlarla karşılaşırsınız.

Hangi çekirdek sürümünü çalıştırdığınızı şu komutla kontrol edin:

uname -r

Docker, temel işlevsellik için en az 3.10 çekirdeğe ihtiyaç duyar; ancak üretim için 4.0 veya daha yenisi tercih edilir. 3.10’dan eski herhangi bir sürüm, modern Docker sürümleriyle basitçe çalışmaz.

Debian’da çekirdeği güncellemek kolaydır; en son çekirdek paketini kurun:

sudo apt update
sudo apt install linux-image-amd64

Yeni çekirdek, sistemi yeniden başlatana kadar etkin olmaz:

sudo reboot

Bazen çekirdek yeterince yenidir ancak belirli çekirdek modülleri yüklenmemiştir. Docker, ağ ve konteyner özellikleri için belirli modüllere ihtiyaç duyar. Ağ arayüzlerinin kullanılamadığına veya konteynerlerin düzgün başlamadığına dair hatalar görebilirsiniz.

Gerekli modülleri elle yükleyin:

sudo modprobe bridge
sudo modprobe ip_tables
sudo modprobe iptable_nat

Bu modüller otomatik olarak yüklenmelidir; ancak yüklenmiyorsa sistem yapılandırmanıza ekleyerek kalıcı hale getirin:

echo "bridge" | sudo tee -a /etc/modules
echo "ip_tables" | sudo tee -a /etc/modules  
echo "iptable_nat" | sudo tee -a /etc/modules

Güncel bir çekirdeğiniz olsa bile, "operation not supported" diyen konteyner çalışma zamanı hatalarıyla karşılaşabilirsiniz. Bu genellikle çekirdeğinizin Docker’ın beklediği belirli özellikler olmadan derlendiği anlamına gelir. Ne yazık ki eksik çekirdek özellikleri için geçici çözüm yoktur — düzgün yapılandırılmış bir çekirdeğe ihtiyacınız var.

Docker kurulum sorunlarının çoğu üç alana dayanır: kullanıcı izinleri, servis yapılandırması veya çekirdek uyumluluğu. Belirtileri geçiştirmek yerine altta yatan sorunu düzeltin; Docker ortamınız çok daha kararlı olacaktır.

Konteynerlarda veritabanlarıyla mı çalışıyorsunuz? Docker’da PostgreSQL yapılandırması düşündüğünüzden daha kolay.

Docker’ı Kaldırma

Bazen, farklı bir konteyner çalışma zamanına geçmek veya yapılandırma sorunlarından sonra temiz bir başlangıç yapmak için Docker’ı sisteminizden tamamen kaldırmanız gerekir. 

Bu süreç sadece paketleri kaldırmaktan ibaret değildir — verileri ve sistem değişikliklerini de temizlemek isteyeceksiniz.

Öncelikle sisteminizden tüm Docker paketlerini kaldırın. Kesin komut, Docker’ı başlangıçta nasıl kurduğunuza bağlıdır.

Resmi Docker deposundan kurduysanız:

sudo apt purge docker-ce docker-ce-cli containerd.io docker-compose-plugin

Debian’ın varsayılan deposundan kurduysanız:

sudo apt purge docker.io docker-compose

Bu işlem paketleri kaldırır ancak diğer paketlerin ihtiyaç duyabileceği yapılandırma dosyalarını ve bağımlılıkları bırakır. Bunları da kaldırmak için:

sudo apt autoremove --purge

Ardından, tüm imajları, konteynerleri ve hacimleri kaldırmak istiyorsanız Docker’ın veri dizinini silin. Bu adım isteğe bağlıdır fakat tam bir temizlik için önerilir.

Docker varsayılan olarak her şeyi /var/lib/docker içinde saklar. Bu dizini kaldırmak, tüm konteynerlerinizi, imajlarınızı, ağlarınızı ve hacimlerinizi kalıcı olarak siler:

sudo rm -rf /var/lib/docker

Docker’ın yapılandırma dizinini de kaldırmalısınız:

sudo rm -rf /etc/docker

Devam edin ve kurulum sırasında Docker’ın oluşturduğu sistem gruplarını ve kullanıcılarını temizleyin. Docker, sisteminize bir docker grubu ekler ve kullanıcı izinlerini değiştirmiş olabilir.

docker grubunu kaldırın:

sudo groupdel docker

Kullanıcıları docker grubuna eklediyseniz, grubu sildiğinizde üyelikler otomatik olarak temizlenir. Ancak isterseniz silmeden önce belirli kullanıcıları gruptan elle de çıkarabilirsiniz:

sudo gpasswd -d username docker

Ardından, Docker’ın systemd servis dosyalarını ve soket dosyalarını kaldırın:

sudo rm -f /lib/systemd/system/docker.service
sudo rm -f /lib/systemd/system/docker.socket
sudo systemctl daemon-reload

Son olarak, hâlâ çalışıyor olabilecek kalan Docker süreçlerini kontrol edin:

ps aux | grep docker

Varsa, elle durdurun:

sudo pkill -f docker

Bu adımlardan sonra Docker, geride dosya veya yapılandırma bırakmadan sisteminizden tamamen kaldırılmış olmalıdır.

Docker’a alternatifleri mi düşünüyorsunuz? Geçiş yapmadan önce diğer konteynerleştirme platformlarını keşfedin.

Sonuç ve En İyi Uygulamalar

Artık Debian üzerinde Docker çalışıyor, ancak kurulum sadece başlangıçtır. Docker ortamınızı nasıl yapılandırıp yönettiğiniz, sorunsuz bir üretim deneyimi yaşayıp yaşamayacağınızı veya konteyner sorunlarını geceleri mi çözeceğinizi belirler.

Farklı mimariler için çok platformlu konteynerler mi derliyorsunuz? Docker Buildx çapraz platform derlemeleri kolaylaştırır.

Kısıtlarınıza göre kurulum yöntemini seçin. Çoğu üretim ortamı için resmi Docker deposu en iyisidir; çünkü en yeni özellikler ve güvenlik yamalarını alırsınız. Ancak internet erişimi kısıtlı ağlar veya sürüm tutarlılığı gereksinimleri, bunun yerine manuel DEB kurulumunu gerektirebilir.

Docker ortamınızı hemen güvenli hale getirin. Zorunlu erişim kontrolleri için AppArmor veya SELinux’u etkinleştirin, kısıtlayıcı daemon ayarları yapın ve cgroups ile konteyner kaynaklarını sınırlayın. Docker’ı otomatik güvenlik güncellemeleriyle güncel tutun, ancak önce staging ortamında test edin.

Çoklu konteyner uygulamalar için Docker Compose kullanın. Karmaşık docker run komutlarını yönetmek yerine uygulama yığınınızı YAML ile tanımlayın.

Disk kullanımını izleyin ve düzenli olarak temizleyin. docker system prune ile kullanılmayan imajları kaldırın ve günlük döndürme (log rotation) ayarlayarak konteynerlerin diskinizi doldurmasını önleyin.

Daha ayrıntılı bilgiye ihtiyaç duyduğunuzda, resmi dokümantasyon bu rehberin değinmediği ileri konuları kapsar. Derinlemesine ağ, depolama sürücüleri ve orkestrasyon konuları için Docker dokümantasyonunu inceleyin. Debian Docker paket dokümantasyonu paket özelinde yapılandırmaları ve bilinen sorunları açıklar.

Debian üzerinde Docker, konteynerleştirilmiş uygulamalar için istikrarlı ve güçlü bir platform sunar — ancak bunu, dikkatli yapılandırır ve tutarlı şekilde yönetirseniz.

Docker, konteynerleştirme ve bunların veri bilimi ile makine öğrenimindeki uygulamaları hakkında daha fazla bilgi edinmek ister misiniz? Şu DataCamp kursları en iyi sonraki adımınız:


Dario Radečić's photo
Author
Dario Radečić
LinkedIn
Hırvatistan merkezli Kıdemli Veri Bilimci. 700’ün üzerinde yayımlanmış makaleyle 10 M+ görüntüleme elde eden, önde gelen bir teknoloji yazarı. TPOT ile Makine Öğrenimi Otomasyonu kitabının yazarı.

SSS

Üretim kullanımı için Debian’da Docker’ı kurmanın en iyi yolu nedir?

Resmi Docker deposu yöntemi, üretim ortamları için en iyi seçimdir; çünkü düzenli güvenlik güncellemeleriyle en son kararlı sürümleri sunar. Bu yöntem, Debian’ın varsayılan depolarında bulunmayabilecek en yeni özellikler ve kritik yamaları almanızı sağlar. Ayrıca paket yöneticiniz üzerinden otomatik güncellemelerden yararlanır ve Docker kurulumunuzu elle müdahale olmadan güvende tutarsınız.

Debian üzerinde Docker çalıştırırken güvenlikle ilgili endişelenmeli miyim?

Evet, Docker güvenliği temel kurulumun ötesinde dikkatli bir yapılandırma gerektirir. Konteynerler ana çekirdeği paylaşır; bu nedenle ele geçirilen bir konteyner, uygun şekilde izole edilmezse ana kaynaklara potansiyel olarak erişebilir. Zorunlu erişim kontrolleri için AppArmor veya SELinux’u etkinleştirmeli, cgroups ile kaynak sınırları yapılandırmalı ve mümkün olduğunca konteynerleri root olmayan kullanıcılarla çalıştırmalısınız. Ek olarak Docker’ı güncel tutun ve docker grubuna kullanıcı eklemeyi, sistemde root’a eşdeğer erişim verdiği için, kesinlikle gerekli olmadıkça kaçının.

Debian’ın eski sürümlerinde Docker çalıştırabilir miyim?

Docker’ın güncel Docker Engine sürümleriyle çalışması için Debian 10 (Buster) veya daha yeni bir sürüm gerekir. Debian 9 gibi eski sürümler, modern Docker’ın ihtiyaç duyduğu çekirdek özellikleri ve paket bağımlılıklarından yoksundur. Eski bir Debian sürümüne bağlıysanız, sisteminizi önce yükseltmeniz gerekir; çünkü Docker’ın konteynerleştirme ve ağ için dayandığı eksik çekirdek işlevleri için güvenilir bir geçici çözüm yoktur.

Docker, kurulumdan sonra neden başlamıyor ve daemon sorunlarını nasıl düzeltirim?

Docker daemon hataları genellikle üç ana nedenden kaynaklanır: depolama sorunları, ağ çakışmaları veya önceki kurulumlardan kalan işlem dosyaları. df -h /var/lib/docker ile /var/lib/docker dizininde yeterli disk alanı olup olmadığını kontrol edin ve gerekirse docker system prune -a ile temizleyin. Ağ çakışmaları için Docker’ın varsayılan köprü IP’si (172.17.0.0/16) mevcut ağ kurulumunuzla çakışabilir; bu durumda /etc/docker/daemon.json içinde özel bir köprü IP’si yapılandırmalısınız. "pid file found" hataları görürseniz, sudo rm /var/run/docker.pid ile eski dosyayı kaldırın ve servisi yeniden başlatın.

Debian sistemimden Docker’ı ve tüm verilerini doğru şekilde nasıl kaldırırım?

Docker’ı tamamen kaldırmak, sadece paketleri kaldırmaktan fazlasını gerektirir — veri dizinlerini, sistem gruplarını ve servis dosyalarını da temizlemeniz gerekir. sudo apt purge docker-ce docker-ce-cli containerd.io docker-compose-plugin ile Docker paketlerini temizleyerek başlayın; ardından sudo rm -rf /var/lib/docker ile veri dizinini silin (bu işlem tüm konteyner ve imajları kalıcı olarak siler). sudo groupdel docker ile docker grubunu kaldırın, systemd servis dosyalarını silin ve kalan Docker süreçlerini ps aux | grep docker ile kontrol edin. Bu adımlar, yeniden kurulum veya farklı bir konteyner çalışma zamanına geçiş için temiz bir başlangıç sağlar.

Konular
Docker
Veri Mühendisliği

DataCamp ile öğrenin

Kurs

Docker'a Giriş

4 sa
52.5K
Docker'a giriş yapın ve veri uzmanlarının araç setinde Docker'ın önemini keşfedin. Docker konteynerleri, görüntüler ve daha fazlası hakkında bilgi edinin.
Ayrıntıları GörüntüleRight Arrow
Kursa Başla
Devamını GörRight Arrow
İlgili

blog

Hızlı Sevkiyat İçin Pratik Vibe Kodlama Teknoloji Yığını

Ön uç, arka uç, veritabanları, kimlik doğrulama, depolama, e-posta, test, dağıtım ve izleme için en iyi araçları keşfedin.
Abid Ali Awan's photo

Abid Ali Awan

14 dk.

blog

2026’da En Popüler 40 Yazılım Mühendisi Mülakat Sorusu

Algoritmalar, sistem tasarımı ve davranışsal senaryoları kapsayan bu temel sorularla teknik mülakat sürecine hakim olun. Uzman cevapları, kod örnekleri ve kanıtlanmış hazırlık stratejileri edinin.
Dario Radečić's photo

Dario Radečić

15 dk.

Eğitim

.gitignore Nasıl Kullanılır: Örneklerle Pratik Bir Giriş

Git deponuzu temiz tutmak için .gitignore’u nasıl kullanacağınızı öğrenin. Bu eğitim; temelleri, yaygın kullanım durumlarını ve başlamanıza yardımcı olacak pratik örnekleri kapsar!
Kurtis Pykes 's photo

Kurtis Pykes

8 dk.

Eğitim

Python'da Listeyi String'e Nasıl Dönüştürürsünüz

Bu hızlı eğitimde, Python'da bir listeyi string'e nasıl dönüştüreceğinizi öğrenin.
Adel Nehme's photo

Adel Nehme

Devamını GörDevamını Gör