Docker ile Uygulama Konteynerleştirme: Giriş
Günümüz yazılım geliştirme dünyasında, uygulamaların farklı ortamlar arasında tutarlı bir şekilde çalışmasını sağlamak büyük bir zorluktur. İşte tam da bu noktada Docker devreye girer. Docker, uygulamalarınızı bağımlılıklarıyla birlikte "konteyner" adı verilen izole edilmiş birimler halinde paketlemenizi sağlayan açık kaynaklı bir platformdur. Bu rehberde, Docker'ın temellerini ve uygulamalarınızı nasıl konteynerleştirebileceğinizi adım adım öğreneceksiniz.
Neden Docker Kullanmalıyız?
* Tutarlılık: "Benim makinemde çalışıyor" sorununa son verir. Uygulama, Docker konteynerinde her yerde aynı şekilde çalışır.
* İzolasyon: Her konteyner kendi bağımlılıklarına sahiptir ve diğer konteynerlerden veya ana sistemden izole edilmiştir.
* Taşınabilirlik: Konteynerler, farklı işletim sistemlerinde ve bulut ortamlarında kolayca taşınabilir.
* Verimlilik: Sanal makinelere kıyasla daha hafiftir ve daha hızlı başlar.
Temel Docker Kavramları
Basit Bir Uygulamayı Konteynerleştirme Adımları
Bir Node.js uygulamasını örnek alalım.
1. Uygulama ve Bağımlılıkları Oluşturma:
Örnek bir app.js dosyası:
Ve package.json (bağımlılık yok, ama örnek için):
2. Dockerfile Oluşturma:
Uygulamanızın kök dizininde Dockerfile adında bir dosya oluşturun:
3. Docker İmajını Oluşturma:
Terminalde, Dockerfile dosyasının bulunduğu dizinde aşağıdaki komutu çalıştırın:
Burada -t imaja bir etiket (isim) verirken, . Dockerfile'ın mevcut dizinde olduğunu belirtir.
4. Docker Konteynerini Çalıştırma:
İmajı oluşturduktan sonra, onu bir konteyner olarak çalıştırabilirsiniz:
-p 80:3000 komutu, host makinenin 80. portunu konteynerin 3000. portuna bağlar. Artık tarayıcınızdan http://localhost/ adresine giderek uygulamanıza erişebilirsiniz.
Sonuç
Docker, uygulama dağıtımını ve yönetimini kökten değiştiren güçlü bir araçtır. Uygulamalarınızı konteynerleştirerek, geliştirme, test ve üretim ortamlarınız arasında tutarlılık sağlayabilir, bağımlılık sorunlarını ortadan kaldırabilir ve dağıtım süreçlerinizi hızlandırabilirsiniz. Bu temel adımlarla kendi uygulamalarınızı Docker ile konteynerleştirmeye başlayabilirsiniz.
Daha fazla bilgi için resmi Docker belgelerini ziyaret edebilirsiniz:
https://docs.docker.com/
Günümüz yazılım geliştirme dünyasında, uygulamaların farklı ortamlar arasında tutarlı bir şekilde çalışmasını sağlamak büyük bir zorluktur. İşte tam da bu noktada Docker devreye girer. Docker, uygulamalarınızı bağımlılıklarıyla birlikte "konteyner" adı verilen izole edilmiş birimler halinde paketlemenizi sağlayan açık kaynaklı bir platformdur. Bu rehberde, Docker'ın temellerini ve uygulamalarınızı nasıl konteynerleştirebileceğinizi adım adım öğreneceksiniz.
Neden Docker Kullanmalıyız?
* Tutarlılık: "Benim makinemde çalışıyor" sorununa son verir. Uygulama, Docker konteynerinde her yerde aynı şekilde çalışır.
* İzolasyon: Her konteyner kendi bağımlılıklarına sahiptir ve diğer konteynerlerden veya ana sistemden izole edilmiştir.
* Taşınabilirlik: Konteynerler, farklı işletim sistemlerinde ve bulut ortamlarında kolayca taşınabilir.
* Verimlilik: Sanal makinelere kıyasla daha hafiftir ve daha hızlı başlar.
Temel Docker Kavramları
- Docker İmajı: Bir uygulamanın çalışması için gerekli tüm kod, bağımlılık, sistem aracı ve kütüphaneleri içeren, yürütülebilir, bağımsız bir pakettir. İmajlar değişmezdir ve konteynerlerin temelini oluşturur.
- Docker Konteyneri: Bir Docker imajının çalıştırılabilir bir örneğidir. İmaj okuma-yazma katmanıyla birleştirilerek çalışan bir süreç haline gelir. Konteynerler izole edilmiş ortamlardır.
- Dockerfile: Docker imajlarını oluşturmak için kullanılan talimatları içeren metin dosyasıdır. Bu dosya, uygulamanızın nasıl oluşturulacağını ve hangi ortamda çalışacağını tanımlar.
Basit Bir Uygulamayı Konteynerleştirme Adımları
Bir Node.js uygulamasını örnek alalım.
1. Uygulama ve Bağımlılıkları Oluşturma:
Örnek bir app.js dosyası:
Kod:
const http = require('http');
const hostname = '0.0.0.0';
const port = 3000;
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Merhaba Docker Dünyası!\n');
});
server.listen(port, hostname, () => {
console.log(`Sunucu http://${hostname}:${port}/ adresinde çalışıyor`);
});
Kod:
{
"name": "docker-node-app",
"version": "1.0.0",
"description": "A simple Node.js Docker app",
"main": "app.js",
"scripts": {
"start": "node app.js"
},
"author": "",
"license": "ISC"
}
2. Dockerfile Oluşturma:
Uygulamanızın kök dizininde Dockerfile adında bir dosya oluşturun:
Kod:
# Node.js 16 base imajını kullan
FROM node:16-alpine
# Çalışma dizinini ayarla
WORKDIR /app
# package.json ve package-lock.json'ı kopyala
COPY package*.json ./
# Bağımlılıkları yükle (bu örnekte yok ama standarttır)
RUN npm install
# Uygulama kaynak kodunu kopyala
COPY . .
# Uygulamanın çalışacağı portu belirt
EXPOSE 3000
# Uygulamayı başlat
CMD ["npm", "start"]
3. Docker İmajını Oluşturma:
Terminalde, Dockerfile dosyasının bulunduğu dizinde aşağıdaki komutu çalıştırın:
Kod:
docker build -t benim-node-app .
4. Docker Konteynerini Çalıştırma:
İmajı oluşturduktan sonra, onu bir konteyner olarak çalıştırabilirsiniz:
Kod:
docker run -p 80:3000 benim-node-app
Sonuç
Docker, uygulama dağıtımını ve yönetimini kökten değiştiren güçlü bir araçtır. Uygulamalarınızı konteynerleştirerek, geliştirme, test ve üretim ortamlarınız arasında tutarlılık sağlayabilir, bağımlılık sorunlarını ortadan kaldırabilir ve dağıtım süreçlerinizi hızlandırabilirsiniz. Bu temel adımlarla kendi uygulamalarınızı Docker ile konteynerleştirmeye başlayabilirsiniz.
Daha fazla bilgi için resmi Docker belgelerini ziyaret edebilirsiniz:
https://docs.docker.com/