Yeni başlayanlar için Docker. ‘Makinemde çalışıyor’ diye takıma şaka malzemesi olan herkesin kutsal kâsesi bu.
Hepimiz klasik eziyeti beklerdik — bağımlılıklarla uğraşmak, her işletim sistemi için ayar çekmek, üretim sunucusunun laptopunuzu andırması için dua etmek. Ama Docker? Her şeyi değiştiriyor. Aniden uygulamanız sıkı sıkıya paketlenmiş, geliştirme kutunuzdan bulut filosuna kadar her limana hazır. 1950’lerin nakliye devrimini düşünün: standart konteynerler öncesi kargo yüklemek özel sandıklar ve sonsuz gecikmeler yüzünden kâbustu. Docker bunu kod için yapıyor — yığılabilir, ölçeklenebilir, sorunsuz taşınan standart bir kutu. Ve işte cesur tahminim: o metal kutular küresel ticareti yeniden şekillendirdiği gibi, Docker da yarının uygulamaları için mikro hizmetleri varsayılan yapıyor.
Bakın.
Konteynerler boş laf yığını değil. Süreçleriniz için hafif kafesler bunlar, ana makinenin çekirdeğini paylaşan ama tamamen izole edilmiş. Artık VM şişkinliği yok — tüy gibi hafiflere karşı ağır siklet şampiyonu düşünün.
Konteynerler Docker’ın temelini oluşturur, işletim sisteminizin kullanıcı alanında izole süreçler olarak çalışır. İşletim sistemi çekirdeğini paylaşırlar ama bağımsızdırlar, bu yüzden inanılmaz verimli ve hızlıdırlar.
Bu alıntı tam oturuyor. Verimlilik Docker’ı her yere CI/CD boru hatlarına roketliyor. Ama teoride niye kalalım?
İlk Docker’laştırılmış Uygulamanızı Oluşturmaya Hazır mısınız?
Terminalinizi açın. Önce Docker’ı yükleyin — resmi belgelerde işletim sisteminize özel adımlar var, çocuk oyuncağı. docker --version çalıştırıp sevin: Canlı!
Şimdi eğlence başlıyor. Node.js Express API’si patlatalım. npm init -y, npm install express. index.js dosyasını şöyle dürtükleyin:
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send('Hello World!');
});
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
console.log(`Server is running on port ${PORT}`);
});
Sırada Dockerfile — mavna planınız:
FROM node:14
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["node", "index.js"]
Derleyin: docker build -t hello-world-node .. Çalıştırın: docker run -p 3000:3000 hello-world-node. Pat! localhost:3000 ‘Hello World!’ diye ışıldıyor. Büyü mü? Yok, sadece konteynerler ortam kıskançlığını eziyor.
Ve ölçeklendirin. Beş kopya mı istiyorsunuz? docker run tekrar, farklı portlar. İzolasyon sayesinde çarpışma yok — yanına Python canavarı koyun, sorun değil.
Ama.
Temel komutlar — günlük alet çantanız.
docker ps -a: Tüm konteynerleri casuslayın, canlı veya hayalet.
docker images: Görüntü envanteriniz.
docker stop <id>: Duraklatın.
docker rm <id>: Yok edin.
Bunlara ezberleyin, kas hafızası olsun.
Docker Neden Yeni Başlayanlar İçin VM’leri Eziyor?
VM’ler mi? Sanal makineler RAM’i benzin canavarı gibi yutar, her birinin kendi işletim sistemi çekirdeği var — çoğu uygulama için abartı. Docker hafif: Çekirdek paylaşımı sayesinde milisaniyede ayağa kalkar, bulutta kuruşlar harcar.
Kaynak verimliliği uçuyor. Ölçeklenebilirlik? Tek ana makinede sürüler dağıtın, trafik patlamalarına göre çevirin. İzolasyon çoklu uygulama hayvanat bahçelerinde huzuru korur.
Herkes Docker’ı sadece kurumsal dev sanırdı, Kubernetes kapıları ardında kilitli. Yanlış. Yeni başlayanlar için özgürleştirici — ilk günden tutarlı dağıtımlar, doktora gerek yok.
Basit rehberlerin atladığı eşsiz nokta şu: Docker web’in statik sitelerden dinamik uygulamalara geçişini yankılıyor. 95’te kimse JavaScript’in hâkim olacağını öngörmedi; şimdi konteynerler sunucusuz hayalleri gerçek kılan görünmez güç. Tahminim: Beş yıl sonra konteynersiz dağıtımlara gülersiniz, bugünkü floppy diskler gibi.
Kurumsal abartılar ‘devrimci’ diyor — evet, ama sessiz devrim kalıcı olan. Docker Hub oyun alanınız: Hazır görüntüleri çekin, kurcalayın, ustaları izleyin.
İpucu? Bozun. Kötü bir görüntüyle docker run edin, çöküşünü izleyin — so