Yazılar & Rehberler

Blog

Docker ve Konteyner Teknolojisi: Başlangıçtan İleri Seviyeye

Yazılım Geliştirme BUZ Yazılım 22 Mart 2024

Konteyner Teknolojisi Neden Bu Kadar Popüler?

Yazılım dünyasında "benim bilgisayarımda çalışıyor" cümlesi artık tarih oluyor. Docker ve konteyner teknolojisi, geliştirme ortamından üretim ortamına kadar tutarlı bir çalışma ortamı sağlayarak bu sorunu kökünden çözüyor. BUZ Yazılım olarak 19 yılı aşkın yazılım deneyimimizle konteyner teknolojisini projelerimizde aktif olarak kullanıyoruz.

Docker Nedir?

Docker, uygulamaları konteynerlere paketleyerek her ortamda aynı şekilde çalışmasını sağlayan bir platformdur. Konteynerler, uygulamanın çalışması için gereken her şeyi (kod, çalışma zamanı, kütüphaneler, sistem araçları) içerir.

Konteyner vs Sanal Makine

İkisi arasındaki temel farklar:

Özellik Konteyner Sanal Makine
Başlatma süresi Saniyeler Dakikalar
Boyut Megabayt Gigabayt
İzolasyon İşlem düzeyinde Donanım düzeyinde
Performans Yerel performansa yakın Ek yük var
OS Host kernel paylaşımı Tam işletim sistemi

Konteynerler, sanal makinelerin yerini tamamen almaz ancak çoğu uygulama senaryosunda daha verimli bir alternatif sunar.

Dockerfile: Konteyner Tarifiniz

Dockerfile, bir konteyner imajını nasıl oluşturacağınızı tanımlayan metin dosyasıdır.

Temel Dockerfile örneği (.NET 8 uygulaması için):

FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
WORKDIR /app
EXPOSE 80

FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /src
COPY ["MyApp.csproj", "."]
RUN dotnet restore
COPY . .
RUN dotnet publish -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=build /app/publish .
ENTRYPOINT ["dotnet", "MyApp.dll"]

Dockerfile En İyi Uygulamaları

  • Çok aşamalı build kullanarak imaj boyutunu küçültün
  • Katmanları optimize edin: Sık değişen dosyaları sona koyun
  • .dockerignore dosyası ile gereksiz dosyaları hariç tutun
  • Resmi base imajları tercih edin
  • Root olmayan kullanıcı ile çalıştırın

Docker Compose: Çoklu Konteyner Yönetimi

Gerçek dünya uygulamaları genellikle birden fazla servisten oluşur. Docker Compose, bu servisleri tek bir dosyada tanımlayıp yönetmenizi sağlar.

version: '3.8'
services:
  web:
    build: .
    ports:
      - "8080:80"
    depends_on:
      - db
    environment:
      - ConnectionStrings__Default=Server=db;Database=myapp;...

  db:
    image: mcr.microsoft.com/mssql/server:2022-latest
    environment:
      - ACCEPT_EULA=Y
      - SA_PASSWORD=YourStrongPassword
    volumes:
      - sqldata:/var/opt/mssql

volumes:
  sqldata:

Docker Compose Avantajları

  • Tek komutla başlatma: docker-compose up ile tüm servisleri ayağa kaldırın
  • Ağ yönetimi: Servisler otomatik olarak aynı ağda iletişim kurar
  • Volume yönetimi: Kalıcı veri depolama için volume tanımları
  • Ortam değişkenleri: Konfigürasyon yönetimi kolaylığı

Docker İş Akışı

Günlük geliştirme iş akışında Docker'ı verimli kullanmak için:

  1. Geliştirme: docker-compose up ile yerel ortamı başlatın
  2. Test: Aynı imajı test ortamında çalıştırın
  3. CI/CD: Pipeline'da otomatik imaj oluşturma ve test
  4. Dağıtım: Aynı imajı üretim ortamına deploy edin

Güvenlik İpuçları

  • İmajları düzenli olarak güncelleyin ve güvenlik taramalarından geçirin
  • Secrets yönetimi için Docker Secrets veya harici araçlar kullanın
  • Gereksiz portları açmayın
  • Kaynak limitleri (CPU, bellek) tanımlayın

Sonuç

Docker ve konteyner teknolojisi, modern yazılım geliştirmenin temel yapı taşlarından biridir. BUZ Yazılım olarak projelerimizde konteyner teknolojisini etkin şekilde kullanıyor ve müşterilerimize bu konuda danışmanlık sağlıyoruz.

Projelerinizde Docker entegrasyonu için bizimle iletişime geçin.

Projeniz için profesyonel destek mi arıyorsunuz?

Ücretsiz Teklif Alın