Docker Nedir?
-
Yayımlama Tarihi 02 Mar 2026
-
Son Güncellenme 02 Mar 2026
-
Okuma Süresi 10 dakika
-
Yazar Can Şentay
- 01- Çözüm Mimarisi ve Uygulaması
- 02- Docker Nedir?
- 03- Docker Ne İşe Yarar?
- 04- Docker Nasıl Çalışır?
- 05- Docker Temel Bileşenleri
- 06- Docker ve Sanal Makine Arasındaki Farklar Nelerdir?
- 07- Docker Nerelerde Kullanılır?
- 08- Docker vs. Kubernetes İle Arasındaki Farklar Nelerdir?
- 09- Sık Sorulan Sorular
Docker, uygulamalarınızı konteyner adı verilen küçük ve taşınabilir paketler içinde çalıştırmanıza yardımcı olur. Bu paket, sadece kaynak kodu değil; bağımlılıkları, çalışma zamanı ve temel ayarları da beraberinde taşır. Böylece uygulamayı laptop’unuzda nasıl çalıştırıyorsanız, sunucuda da büyük ölçüde aynı şekilde çalıştırabilirsiniz.
Bu yazıda Docker’ın ne olduğunu, ne işe yaradığını ve nasıl çalıştığını adım adım ele alacağız. Ayrıca Docker’ı sanal makinelerle karşılaştıracak ve Kubernetes ile arasındaki farkı netleştireceğiz. Amacımız, “nerede kullanmalıyım?” sorusuna şirketiniz için pratik bir cevap bırakmak.
-
Çözüm Mimarisi ve Uygulaması
Çözümün özü, S3 uyumlu servisin parçalı yüklemeler ve tanımlanmamış içerik uzunluğu ile ilgili sınırlamasını ele almayı içermektedir. Bu,
request_checksum_calculationparametresinin yapılandırılmasıyla elde edilir. Varsayılan olarak,boto3çok parçalı yüklemenin tüm parçaları için sağlama toplamlarını hesaplamaya çalışabilir, bu da altta yatan servis bu süreci beklendiği gibi işlemediğinde, özellikle içerik uzunluğu her parça için açıkça tanımlanmadığında sorunlara yol açabilir.request_checksum_calculationparametresi, istekler sırasında sağlama toplamlarının nasıl işlendiğini kontrol eder. Bunuwhen_requiredolarak ayarlamak,boto3'ye yalnızca servis tarafından açıkça ihtiyaç duyulduğunda veya isteğin bütünlük kontrolleri için gerektirdiği durumlarda sağlama toplamı hesaplamaları yapmasını talimatını verir. Bu, tanımlanmamış içerik uzunluklarıyla ilgili sorunlu davranışı atlar.Bu yapılandırmayı uygulamak için üç ana yöntem vardır:
Yöntem 1: Boto3 Kod Yapılandırması
En doğrudan yaklaşım, Python uygulama kodunda
boto3'yi yapılandırmaktır. Bu, birbotocore.config.Confignesnesi oluşturularak ve istemci başlatılırken geçirilerek yapılır.import boto3 from botocore.config import Config s3_client = boto3.client( 's3', endpoint_url='YOUR_S3_ENDPOINT', aws_access_key_id='YOUR_ACCESS_KEY', aws_secret_access_key='YOUR_SECRET_KEY', config=Config( s3_use_sigv4=True, # İmza sürüm 4'ün kullanıldığından emin olun s3_verify_ssl=False, # Kendi kendine imzalanan sertifikalar kullanılıyorsa ayarlayın signature_version='s3v4', s3_addressing_style='path', # Gerekirse adresleme stilini açıkça ayarlayın request_checksum_calculation='when_required', response_checksum_validation='when_required' # Yanıtları doğrulamak da iyi bir uygulamadır ) ) # Şimdi yüklemeler için s3_client'ı kullanın # s3_client.upload_file(...)
Bu yöntem, ayrıntılı kontrol sağlar ve ayarın belirli S3 istemci örneğine uygulandığından emin olur.
Yöntem 2: Ortam Değişkeni Yapılandırmas
Alternatif olarak, yapılandırma ortam değişkenleri aracılığıyla yönetilebilir, bu da Kubernetes gibi kapsayıcılaştırılmış ortamlar için özellikle yararlıdır.
export AWS_REQUEST_CHECKSUM_CALCULATION=WHEN_REQUIRED export AWS_RESPONSE_CHECKSUM_VALIDATION=WHEN_REQUIRED # Diğer ilgili AWS ortam değişkenleri de burada ayarlanabilir # export AWS_ACCESS_KEY_ID=... # export AWS_SECRET_ACCESS_KEY=... # export AWS_ENDPOINT_URL=...
Bu ortam değişkenleri ayarlandığında, boto3 ve diğer AWS SDK'ları bunları otomatik olarak alacak ve kod değişiklikleri gerektirmeden belirtilen sağlama toplamı davranışını uygulayacaktır. Bu yaklaşım, özellikle birden fazla pod veya hizmet arasında dağıtım ve yönetimi basitleştirir.
Yöntem 3: AWS CLI Yapılandırma Dosyası
AWS Komut Satırı Arayüzü (CLI) aracılığıyla S3 uyumlu hizmetlerle etkileşim kuran kullanıcılar için yapılandırma
~/.aws/configdosyasına ayarlanabilir.[default] output = json region = us-east-1 # Veya sizin özel bölgeniz [profile my-s3-profile] s3 = endpoint_url = YOUR_S3_ENDPOINT signature_version = s3v4 addressing_style = path request_checksum_calculation = WHEN_REQUIRED response_checksum_validation = WHEN_REQUIRED
Bu profili kullandığınızda (örneğin,
aws s3 cp my-file s3://my-bucket/ --profile my-s3-profile), belirtilen ayarlar uygulanacaktır. Bu, sorun giderme veya AWS CLI'ye dayanan komut dosyaları için uygun bir yöntemdir.Bu yöntemlerin her biri, içerik uzunlukları her parça için açıkça tanımlanmasa bile parçalı yüklemelerin S3 uyumlu servis tarafından doğru bir şekilde işlenmesini sağlayarak
ValidationError'ı etkili bir şekilde çözer. Servisten alınan verilerin bütünlüğünü sağlamak içinresponse_checksum_validation='when_required'ayarının da ayarlanması önerilir. -
Docker Nedir?
Docker, konteynerleştirme yaklaşımını pratik hale getiren bir platformdur. Konteynerleştirme, uygulamayı kendi çalışma ortamıyla birlikte paketleme fikridir. Bu sayede uygulama, üzerinde çalıştığı makinenin ayrıntılarına daha az bağımlı olur.
Konteynerler, aynı sunucudaki diğer süreçlerden izole edilir. Dosya sistemi görünümü ayrıdır, süreçler ayrı çalışır ve kaynak kullanımı sınırlandırılabilir. Siz doğru ayarları yaptığınız sürece bir konteyner, “kendi alanında” işini görür.
Günlük hayatta bunun karşılığı şudur: ekipte bir kişi projeyi kurarken iki saat harcıyorsa, Docker ile bu süre çoğu zaman dakikalara iner. Yeni biri ekibe katıldığında “kurulum rehberi” yerine tek bir komutla aynı ortama geçebilirsiniz.
-
Docker Ne İşe Yarar?
Docker’ın en belirgin faydası standartlaştırmadır. Geliştirme ortamınız tekilleşir ve herkes aynı imajı kullanabilir. Bu da sürüm farkı yüzünden çıkan hataları azaltır.
Test ve CI/CD tarafında da benzer bir avantaj vardır. Pipeline içinde testleri aynı konteynerde çalıştırdığınızda, sonuçlar daha tutarlı olur. Özellikle bağımlı servisler (veritabanı, kuyruk, cache) gerektiğinde bu çok işe yarar.
Dağıtım aşamasında ise geri dönüş (rollback) ve sürümleme kolaylaşır. Bir sürümü imaj etiketiyle sabitleyebilir, gerektiğinde önceki etikete dönerek sistemi hızla toparlayabilirsiniz. Bu yaklaşım, küçük ekiplerde bile üretim stresini ciddi şekilde düşürür.
-
Docker Nasıl Çalışır?
Docker’da iki temel kavram vardır: imaj ve konteyner. İmaj, uygulamanın “paketlenmiş tarifi” gibidir. Konteyner ise bu tariften üretilen, çalışan örnektir.
İmajlar katmanlı bir yapı kullanır. Siz Dockerfile içinde her adım eklediğinizde yeni bir katman oluşur. Değişmeyen katmanlar önbellekten geldiği için yeniden inşa (build) süresi kısalır.
Komut verdiğinizde arka planda Docker Engine devreye girer. İmajı bulur (lokalde yoksa indirir), dosya sistemi katmanlarını hazırlar, ağ ve port ayarlarını yapar ve konteyneri başlatır.
docker run --rm hello-worldİşlerin yolunda olup olmadığını görmek için bu komut iyi bir başlangıçtır. Ardından basit bir web sunucusunu ayağa kaldırarak port yönlendirmeyi test edebilirsiniz.
docker run -d --name web -p 8080:80 nginx:alpine # Tarayıcı: http://localhost:8080 -
Docker Temel Bileşenleri
Docker’ı verimli kullanmak için birkaç temel bileşeni tanımanız yeterlidir. İmaj, konteyner ve Dockerfile genelde her akışın merkezindedir. Siz Dockerfile ile “nasıl paketlenecek?” sorusunu tanımlarsınız.
Registry (Docker Hub ya da şirketinizin özel registry’si), imajların depolandığı yerdir. Ekip içinde aynı imajı paylaşmak ve üretime taşımak için registry kritik rol oynar. Burada erişim kontrolü ve imaj güvenliği süreçlerini de yönetebilirsiniz.
Volume ve network ise konteynerlerin günlük ihtiyaçlarını çözer. Verinin kalıcı olması gerekiyorsa volume kullanırsınız. Servislerin birbiriyle konuşması gerekiyorsa network tanımlarsınız.
Aşağıdaki örnek Dockerfile, basit bir Node.js uygulamasını üretime uygun şekilde paketlemek için iyi bir başlangıç sağlar.
FROM node:20-alpine WORKDIR /app COPY package*.json ./ RUN npm ci --only=production COPY . . EXPOSE 3000 CMD ["node", "server.js"] -
Docker ve Sanal Makine Arasındaki Farklar Nelerdir?
Sanal makinelerde her uygulama için ayrı bir işletim sistemi çalıştırırsınız. Bu, izolasyonu güçlendirir; fakat maliyeti de artırır. Konteynerlerde ise aynı host çekirdeği paylaşılır, bu yüzden yapı daha hafiftir.
Performans ve kaynak tüketimi açısından konteynerler genelde avantajlıdır. Konteynerler saniyeler içinde ayağa kalkar ve daha az disk/RAM ister. Bu yüzden sık deploy edilen servislerde pratiklik sağlar.
Bununla birlikte güvenlik ve sınırlar konusunda net olmak gerekir. VM’ler daha sert bir ayrım sunar; konteynerlerde doğru yetkilendirme yapılmazsa risk artar.
Şirketinizin risk modeli ve regülasyonları seçimde belirleyici olmalıdır.
Kısa bir kural olarak şunu düşünebilirsiniz: tek sunucuda çok servis ve hızlı teslimat istiyorsanız konteyner iyi bir seçimdir. Daha güçlü izolasyon ve farklı OS ihtiyaçları varsa VM yaklaşımı daha uygun olabilir.
-
Docker Nerelerde Kullanılır?
Docker en çok geliştirme ortamında işe yarar. Yeni bir geliştirici geldiğinde kurulum adımlarını uzatmadan, aynı imajla hızlıca ilerleyebilirsiniz. Bu, onboarding sürecini gözle görülür şekilde hızlandırır.
Test süreçlerinde de yaygındır. Örneğin uygulamanız PostgreSQL ve Redis istiyorsa, bunları geçici konteynerlerle birkaç dakikada ayağa kaldırabilirsiniz. Test bittiğinde ortamı temizlemek de kolay olur.
Üretimde ise mikroservisler, API’ler, worker süreçleri ve kısa süreli batch işler için sık kullanılır. On-prem veya edge senaryolarda da “tek paketle her yerde çalıştırma” fikri güçlü bir avantaj sağlar.
Birden fazla servisi birlikte yönetmek için Docker Compose kullanabilirsiniz. Aşağıdaki örnek, uygulama ve veritabanını tek dosyada tanımlar.
services: app: build: . ports: - "3000:3000" depends_on: - db db: image: postgres:16-alpine environment: POSTGRES_PASSWORD: example volumes: - pgdata:/var/lib/postgresql/data volumes: pgdata: -
Docker vs. Kubernetes İle Arasındaki Farklar Nelerdir?
Docker, konteyner üretme ve çalıştırma tarafında güçlüdür. İmaj inşa eder, çalıştırır, durdurur ve temel ağ/disk ihtiyaçlarını yönetirsiniz. Tek makinede veya küçük yapılarda bu çoğu zaman yeterlidir.
Kubernetes ise orkestrasyon katmanıdır. Çok sayıda konteyneri birden fazla node üzerinde yönetir, ölçekler, sağlık kontrolü yapar ve hatalı pod’ları yeniden başlatır. Dağıtım stratejileri (rolling update gibi) burada standart hale gelir.
Pratikte bu iki yaklaşım birbirini tamamlar. Siz imajlarınızı üretir ve sürümlersiniz; Kubernetes bu imajları farklı ortamlarda düzenli ve kontrollü biçimde çalıştırır.
Şirketiniz büyüdükçe ve servis sayısı arttıkça Kubernetes ihtiyacı daha görünür olur.
-
Sık Sorulan Sorular
Bu bölümde en çok gelen sorulara kısa yanıtlar bulacaksınız. Ama unutmayın: lisans, güvenlik ve işletim sistemi konusu, sizin kullanım şeklinize göre değişebilir.
Özellikle kurumsal ortamda Docker Desktop lisansı ve şirket politikaları önem kazanır. Bu nedenle “ücretsiz mi?” sorusunu tek cümleyle değil, kullanım bağlamıyla değerlendirmek gerekir.
Güvenlik tarafında da aynı durum geçerlidir. Siz imajları güncel tutar, en az yetkiyle çalıştırır ve registry’nizi kontrol ederseniz riskleri ciddi ölçüde azaltabilirsiniz.
Docker ücretsiz mi?
Temel Docker motoru ve pek çok bileşen ücretsizdir; ancak Docker Desktop gibi bazı ürünlerde kurumsal kullanım için lisans koşulları devreye girebilir.Docker güvenli midir?
Doğru yapılandırma ile güvenli kullanabilirsiniz; özellikle yetkiler, imaj kaynağı ve güncellemeler burada belirleyicidir.Docker kimler için uygundur?
Geliştiriciler, DevOps ekipleri ve düzenli deploy yapan ekipler Docker ile işleri hızlandırabilir.Docker hangi işletim sistemlerinde çalışır?
Linux’ta doğrudan çalıştırabilirsiniz; Windows ve macOS’te ise genelde Docker Desktop üzerinden kullanabilirsiniz.
Benzer Makaleler
-
Mar 14,2024ChatGPT vs Gemini
Yapay zeka devlerinden OpenAI'ın ChatGPT’sinin mi yoksa Google'ın Gemini'ının mı size daha uygun olduğunu biliyor musunuz? Her ikisinin de kendine özgü güçlü ve zayıf yönleri bulunuyor.Gelin bu güçlü ve zayıf yönleri birlikte inceleyelim!
Daha Fazla -
Şub 20,2024Dijitalleşen Meslekler
Teknolojinin hızlı evrimi, yapay zeka, bulut bilişim ve platform mühendisliğine olan talebi artırıyor, yeni meslekler ortaya çıkıyor ve mevcut meslekler dijitalleşiyor.
Daha Fazla -
Şub 01,2024“Forbes Teknoloji Konseyi”nin Türkiye’den yeni üyesi DTG CEO’su Tolga Dinçer oldu
Tolga Dinçer, dünya çapında başarılı iş insanlarının davet aldığı “Forbes Teknoloji Konseyi”ne kabul edildi.
Daha Fazla