Sertifikalı Yapay Zeka Bootcamp başvuruları açık — kapanışa Ön Kayıt →
Yazılım ve Teknoloji

Docker Nedir?

admin Ağustos 19, 2026 7 dk okuma
Docker Nedir?

Yazılım geliştirme dünyasında sıkça karşılaşılan “benim bilgisayarımda çalışıyordu, sunucuda neden çalışmıyor?” sorunu, modern uygulama dağıtım süreçlerinin en büyük engellerinden biri olmuştur. İşte bu karmaşaya son veren docker nedir sorusunun cevabı, yazılım geliştirme ve canlıya alma süreçlerini kökten değiştiren açık kaynaklı bir konteynerleştirme (containerization) platformudur. Docker, uygulamalarınızı tüm bağımlılıkları, kütüphaneleri ve konfigürasyon dosyalarıyla birlikte izole bir paket haline getirir. Bu sayede yazılımınız dizüstü bilgisayarınızda, test ortamında veya bulut sunucuda tamamen aynı şekilde çalışır. Bu rehberde Docker altyapısını, bileşenlerini ve sanal makinelerden farkını detaylarıyla inceleyeceğiz.

Dağıtım Standartlarını Değiştiren Teknoloji: Docker Nedir?

Docker, 2013 yılında açık kaynak olarak sunulduğundan bu yana yazılım mimarilerinin vazgeçilmez bir parçası haline gelmiştir. Temel amacı, uygulamaların geliştirme ortamından üretim (production) ortamına taşınması sırasında yaşanan çevre farklılıklarını ortadan kaldırmaktır.

“Bende Çalışıyordu” Problemine Son Veren Konteyner Mimarisi

Geleneksel geliştirme süreçlerinde, bir geliştiricinin yerel bilgisayarındaki işletim sistemi sürümü, yüklü olan dil kütüphaneleri veya veri tabanı sürücüleri sunucudakinden farklı olabilir. Docker, uygulamanın ihtiyaç duyduğu tüm bileşenleri “konteyner” adı verilen hafif ve izole bir kutuya koyar. Böylece yazılım, çalışacağı ortamdan bağımsızlaşır ve her yerde standart bir performans sergiler.

Docker Nasıl Çalışır? Temel Bileşenler

Docker’ın sunduğu çözümü anlayabilmek için arkasındaki temel bileşen mimarisini kavramak gerekir. Bu sistem mantıksal bir silsileyle işler.

Dockerfile: Konteyner Tarif Dosyası

Dockerfile, uygulamanızın nasıl kurulacağını ve çalıştırılacağını belirten düz bir metin dosyasıdır. İçerisinde hangi taban imajın kullanılacağı, hangi dosyaların kopyalanacağı ve hangi komutların çalıştırılacağı adım adım yazılır.

Aşağıda basit bir Node.js veya Python uygulamasını paketleyen örnek bir Dockerfile dosyasını görebilirsiniz:

Dockerfile
FROM python:3.9-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install –no-cache-dir -r requirements.txt
COPY . .
CMD [“python”, “main.py”]

Docker Image: Çalıştırılabilir Uygulama Paketi

Dockerfile yazıldıktan sonra derlenerek (build edilerek) bir “Docker Image” elde edilir. İmaj; uygulamanızın kodunu, çalışma zamanını (runtime), kütüphanelerini ve ortam değişkenlerini içeren salt okunur (read-only) bir şablondur.

Docker Container: İzole Çalışma Alanı

Docker Image dosyasının çalıştırılmış (run edilmiş) haline “Container” denir. Konteynerler bellekte yer tutan, başlatılabilen, durdurulabilen ve silinebilen canlı süreçlerdir. Bir imajdan dilediğiniz kadar izole konteyner üretebilirsiniz.

Docker Hub: İmaj Deposu

Docker Hub, geliştiricilerin hazırladıkları Docker imajlarını paylaşabildikleri ve hazır imajları (örneğin resmi PostgreSQL, Nginx, Redis imajları) indirebildikleri bulut tabanlı bir depodur (registry).

Docker vs. Sanal Makine (Virtual Machine): Temel Farklar

Sanal makineler (VM) ve Docker konteynerleri sanallaştırma çözümü sunsa da mimari açıdan tamamen farklı çalışırlar. Sanal makineler bir Hypervisor üzerinde her sanal makine için ayrı bir konuk işletim sistemi (Guest OS) çalıştırırken, Docker doğrudan ev sahibi işletim sisteminin (Host OS) çekirdeğini (kernel) paylaşır.

Aşağıdaki karşılaştırma tablosu iki teknoloji arasındaki temel farkları göstermektedir:

Kriter Sanal Makine (Hypervisor / VM) Docker (Container)
Açılış Hızı Dakikalar sürer (İşletim sistemi önyüklemesi) Saniyeler hatta milisaniyeler sürer
Boyut Gigabaytlarca (GB) alan kaplar Megabaytlarca (MB) alan kaplar
Kaynak Kullanımı Yüksek CPU ve RAM rezerve eder Düşük kaynak tüketimi, ihtiyaç kadar kullanır
İzolasyon Seviyesi Tam donaımsal ve OS seviyesinde izolasyon Süreç (Process) seviyesinde izolasyon
Mimarisi Hypervisor + Guest OS Docker Engine + Kernel Paylaşımı
İşletim Sistemi Seviyesinde Sanallaştırma ve Kaynak Tüketimi

Docker, kaynak tüketimi açısından oldukça verimlidir. Sanal makinelerde her uygulama için yüzlerce megabaytlık bir işletim sistemi çekirdeği yüklenmek zorundayken, Docker işletim sistemi seviyesinde sanallaştırma yaparak donanım kaynaklarını doğrudan ana makineden verimli biçimde kullanır.

Yazılım Geliştirme ve DevOps Süreçlerinde Docker Kullanımı

DevOps kültüründe sürekli entegrasyon ve sürekli canlıya alma (CI/CD) süreçlerinin temelini Docker oluşturur. Geliştiriciler yerel ortamlarında kod yazarken sunucu altyapı yönetimi karmaşasıyla uğraşmazlar. Aynı zamanda test süreçleri izole ortamda hızlıca tamamlanır ve hazırlanan imaj doğrudan canlı sunuculara dağıtılır. Bu da microservice (mikro hizmet) mimarilerinin sorunsuz işletilmesine imkan tanır.

Başlangıç Seviyesinde Temel Docker Komutları

Docker terminali üzerinden konteyner yönetimi oldukça basittir. En çok kullanılan 4 temel Docker komutu şunlardır:

docker run: Belirtilen imajı Docker Hub’dan indirir (yoksa) me konteyner olarak başlatır.

(Örnek: docker run -d -p 80:80 nginx)

docker ps: Şu anda arka planda çalışan aktif konteynerleri ve durumlarını listeler. (-a parametresiyle durdurulmuş olanlar da görülür.)

docker build: Yazılan bir Dockerfile dosyasını okuyarak yeni bir Docker Image oluşturur.

(Örnek: docker build -t uygulama-adi:v1 .)

docker stop: Çalışmakta olan bir konteyner işlemini güvenli bir şekilde sonlandırır.

(Örnek: docker stop )

Docker Compose İle Çoklu Konteyner Yönetimi

Uygulamanız yalnızca tek bir servisten oluşmayabilir; örneğin bir Python web uygulaması, bir PostgreSQL veri tabanı ve bir Redis önbellek sunucusuna ihtiyaç duyabilir. Tüm bu servisleri tek tek komutla başlatmak yerine docker-compose.yml dosyası kullanılır. Docker Compose, tek bir docker compose up komutıyla tüm mikro servis altyapınızı tek bir ağ üzerinde ayağa kaldırmanızı sağlar.

Sisteminizin arka plan mimarisini kurarken backend sistem geliştirme süreçlerini optimize etmek için doğru araçları seçmek büyük önem taşır.

Sıkça Sorulan Sorular

Docker kullanmak için Linux bilmek şart mı?

Hayır, şart değildir. Docker Desktop yazılımı sayesinde Windows ve macOS işletim sistemlerinde grafik arayüzü ile rahatça çalışabilirsiniz. Ancak Docker altyapısı temelinde Linux çekirdek özelliklerini (cgroups, namespaces) kullandığı için temel düzeyde Linux komut satırı bilgisine sahip olmak uzun vadede büyük avantaj sağlar.

Docker ile Kubernetes arasındaki fark nedir?

Docker, uygulamaları konteyner haline getiren ve tekil makinelerde çalıştıran konteynerleştirme aracıdır. Kubernetes ise yüzlerce veya binlerce Docker konteynerinin ölçeklenmesini, sağlık kontrolünü ve yük dağıtımını otomatik olarak yöneten bir orkestrasyon (orchestration) platformudur.

Docker tamamen ücretsiz mi?

Docker’ın açık kaynaklı motoru (Docker Engine) ve temel araçları tamamen ücretsizdir. Ancak kurumsal şirketler için sunulan “Docker Desktop” yazılımı belirli çalışan ve ciro limitlerinin üzerindeki ticari işletmeler için ücretli lisans modeline tabidir (Resmi Docker lisans şartları yayın öncesi kontrol edilmelidir).

Docker performansı olumsuz etkiler mi?

Docker bir sanal makine olmadığı ve donanım sanallaştırması yapmadığı için performans kaybı neredeyse yok denecek kadar azdır (%1-2 civarı). Konteynerler doğrudan ev sahibi işletim sisteminin çekirdeğini kullandığından neredeyse yalın donanım (bare-metal) hızında çalışır.

Modern yazılım dünyasında konteyner teknolojileri, yapay zeka editörü entegrasyonu ve otomatik dağıtım süreçleriyle birleşerek geliştirici üretkenliğini maksimuma çıkarmaktadır. Devops süreçlerine hakim olmak ve yazılım mimarilerinde uzmanlaşmak kariyeriniz için kritik bir yatırımdır.

Upnext ile Bir Sonraki Adım

Uygulamalarını modern konteyner teknolojileriyle yayına almak ve DevOps altyapısını öğrenmek için Upnext eğitimlerini inceleyebilirsin.

Sıradaki sen ol

Kariyerini geleceğe göre hazırla.

Ön kayıt formunu doldur; program detaylarını, tarihleri ve erken kayıt avantajlarını sana iletelim. Ödeme yok, taahhüt yok.

Yapay Zeka Bootcamp — 23 Ağustos Ön Kayıt Ol