- Katılım
- 14 Mar 2025
- Mesajlar
- 11
- Tepkime puanı
- 3
- Puanları
- 3
Docker Kurulumu Linux Üzerinde
Docker, uygulamaları container adı verilen izole ortamlarda çalıştırmayı sağlayan en popüler sistemlerden biridir.Linux sunucularda Docker kullanarak:
- Web uygulamaları
- Veritabanları
- API servisleri
- Otomasyon sistemleri
- Geliştirme ortamları
- Mikroservisler
Docker özellikle sunucu yönetimi, DevOps ve yazılım geliştirme alanlarında oldukça yaygın kullanılmaktadır.
Docker Nedir?
Docker, uygulamaları işletim sisteminden belirli ölçüde izole edilmiş container ortamlarında çalıştırmayı sağlar.Normal bir uygulama kurulumunda:
- Paketler
- Kütüphaneler
- Yapılandırmalar
Docker'da ise uygulamanın ihtiyaç duyduğu bileşenlerin büyük bölümü container içerisinde tutulabilir.
Bu sayede uygulamaların birbirini etkileme ihtimali azaltılır.
Container Nedir?
Container, uygulamanın çalışması için gerekli:- Dosyaları
- Kütüphaneleri
- Ayarları
- Bağımlılıkları
Örneğin aynı Linux sunucuda:
- PHP uygulaması
- Node.js uygulaması
- Redis
- PostgreSQL
Docker ile Sanal Makine Aynı mı?
Hayır.Docker container ile klasik sanal makine arasında önemli fark vardır.
Sanal Makine
Her sanal makinede genellikle ayrı işletim sistemi bulunur.Bu nedenle:
- Daha fazla RAM
- Daha fazla disk
- Daha fazla CPU
Docker Container
Host Linux kernel'ini paylaşır.Bu nedenle genellikle daha hafiftir.
Docker Ne İşe Yarar?
Docker sayesinde bir uygulama:Benim bilgisayarımda çalışıyor ama sunucuda çalışmıyor
problemini azaltabilir.
Uygulama için gerekli ortam image içerisinde tanımlandığı için aynı yapı farklı sistemlerde daha kolay çalıştırılabilir.
Docker Kimler İçin Uygundur?
Özellikle:- Yazılımcılar
- Sistem yöneticileri
- DevOps çalışanları
- Hosting yöneticileri
- SaaS geliştiricileri
Docker Kurmak İçin Ne Gerekir?
Temel olarak:- Desteklenen Linux dağıtımı
- Root veya sudo yetkisi
- İnternet bağlantısı
- Yeterli disk alanı
Docker Hangi Linux Dağıtımlarında Kullanılır?
Docker Engine birçok yaygın Linux dağıtımında kullanılabilir.Örneğin:
- Ubuntu
- Debian
- CentOS Stream
- Fedora
AlmaLinux ve Rocky Linux gibi RHEL tabanlı dağıtımlarda da Docker kullanılabilir ancak desteklenen repository ve sürüm uyumluluğu kontrol edilmelidir.
Docker Engine Nedir?
Docker'ın Linux üzerinde container çalıştırmasını sağlayan temel sistemidir.Docker Engine içerisinde genel olarak:
- Docker daemon
- Docker istemcisi
- Container runtime
Docker Desktop ile Docker Engine Aynı mı?
Hayır.Docker Desktop daha çok:
- Windows
- macOS
- Linux masaüstü
Linux sunucularda genellikle doğrudan:
Docker Engine
kurulur.
Kurulumdan Önce Sistem Güncellenmeli mi?
Evet.Docker kurulmadan önce paket listelerinin ve sistem paketlerinin güncel olması faydalıdır.
Ancak üretim sunucusunda büyük sistem güncellemeleri uygulanmadan önce backup alınması önerilir.
Eski Docker Paketleri Kontrol Edilmeli mi?
Evet.Daha önce dağıtım repository'sinden veya farklı yöntemle kurulmuş:
- Docker
- containerd
- runc
- Docker Compose
Bu nedenle mevcut kurulum kontrol edilmelidir.
Docker'ı Resmî Repository'den Kurmak
Üretim sistemlerinde en mantıklı yöntemlerden biri Docker'ın resmî paket repository'sini kullanmaktır.Bu yöntemde:
- Docker repository'si sisteme eklenir.
- Repository anahtarı doğrulanır.
- Docker Engine paketleri kurulur.
- Docker servisi başlatılır.
- Kurulum test edilir.
Otomatik Kurulum Scripti Kullanılır mı?
Docker tarafından sağlanan kolay kurulum yöntemleri bulunabilir.Ancak otomatik kurulum scriptleri özellikle:
- Test
- Geliştirme
Üretim sunucularında hangi paketlerin kurulduğunu kontrol edebilmek için repository yöntemi tercih edilmesi daha sağlıklıdır.
Ubuntu Üzerinde Docker Kurulumu
Ubuntu üzerinde genel kurulum mantığı şöyledir:- Eski veya çakışan Docker paketları kontrol edilir.
- Docker'ın resmî repository'si eklenir.
- Gerekli güvenlik anahtarı yapılandırılır.
- Paket listesi güncellenir.
- Docker Engine kurulur.
- Docker servisi kontrol edilir.
- Test container'ı çalıştırılır.
Debian Üzerinde Docker Kurulumu
Debian kurulumu Ubuntu'ya oldukça benzerdir.Docker'ın resmî Debian repository'si kullanılır.
Kurulum sırasında dağıtımın:
- Sürümü
- Mimarisi
CentOS Stream Üzerinde Docker Kurulumu
CentOS Stream gibi RPM tabanlı sistemlerde Docker repository'si DNF paket yöneticisine eklenebilir.Daha sonra:
- Docker Engine
- Docker CLI
- containerd
- Buildx
- Compose plugin
RPM tabanlı sistemlerde Docker servisini kurulumdan sonra ayrıca başlatmak gerekebilir.
Fedora Üzerinde Docker
Fedora sistemlerde de Docker Engine kurulabilir.Ancak Fedora hızlı güncellenen bir dağıtım olduğu için Docker sürümüyle sistem sürümünün uyumluluğu kontrol edilmelidir.
AlmaLinux Üzerinde Docker Kullanılır mı?
Evet.AlmaLinux üzerinde Docker yaygın olarak kullanılmaktadır.
RHEL tabanlı olduğu için kurulum mantığı RPM tabanlı sistemlere benzerdir.
Ancak üretim ortamında kullanılan AlmaLinux sürümünün Docker repository'siyle uyumluluğu kontrol edilmelidir.
Rocky Linux Üzerinde Docker Kullanılır mı?
Evet.Rocky Linux sistemlerde de Docker kullanılabilir.
Özellikle:
- Web uygulamaları
- CI/CD
- DevOps
- Mikroservis
Docker Kurulduktan Sonra Servis Kontrolü
Kurulum sonrasında Docker servisinin gerçekten çalıştığından emin olunmalıdır.Kontrol edilmesi gerekenler:
- Docker servisi aktif mi?
- Boot sırasında otomatik başlıyor mu?
- Container çalıştırılabiliyor mu?
Docker'ın Otomatik Başlaması
Sunucu yeniden başladığında Docker servisinin otomatik başlaması istenebilir.Üretim sunucularında genellikle bu tercih edilir.
Ancak yalnızca Docker servisinin açılması container'ların otomatik çalışacağı anlamına gelmeyebilir.
Container restart politikaları ayrıca yapılandırılabilir.
Kurulum Testi
Docker kurulumu sonrasında basit bir test image çalıştırılabilir.Amaç:
- Docker daemon çalışıyor mu?
- Image indirilebiliyor mu?
- Container oluşturulabiliyor mu?
Docker Image Nedir?
Image, container oluşturmak için kullanılan hazır şablondur.İçerisinde:
- İşletim sistemi bileşenleri
- Uygulama
- Kütüphaneler
- Yapılandırmalar
Container ile Image Arasındaki Fark
Basit şekilde:Image = Şablon
Container = Image'dan çalışan örnek
olarak düşünülebilir.
Aynı image kullanılarak birden fazla container oluşturulabilir.
Docker Hub Nedir?
Docker image'larının yayınlandığı popüler registry hizmetlerinden biridir.Buradan:
- Nginx
- Redis
- PostgreSQL
- Ubuntu
- Node.js
Her Docker Image Güvenli mi?
Hayır.İnternetten bulunan rastgele image'lar kullanılmamalıdır.
Mümkünse:
- Resmî image
- Doğrulanmış publisher
- Güvenilir proje
Docker Image Güncellenmeli mi?
Evet.Eski image içerisinde:
- Güvenlik açığı
- Eski paket
- Eski uygulama
Image'lar belirli aralıklarla güncellenmelidir.
Docker Daemon Nedir?
Docker container'larını yöneten arka plan servisidir.Container:
- Oluşturma
- Başlatma
- Durdurma
- Ağ
- Volume
Docker CLI Nedir?
Kullanıcının Docker daemon ile iletişim kurmasını sağlayan komut satırı aracıdır.Container yönetimi çoğunlukla Docker CLI üzerinden yapılır.
containerd Nedir?
Container yaşam döngüsünü yöneten önemli runtime bileşenlerinden biridir.Docker Engine, containerd ile birlikte çalışabilir.
runc Nedir?
Linux container'larının düşük seviyede çalıştırılmasına yardımcı olan runtime bileşenidir.Normal kullanıcı çoğu zaman doğrudan runc ile işlem yapmaz.
Docker Compose Nedir?
Birden fazla container'dan oluşan uygulamaları birlikte yönetmeyi kolaylaştırır.Örneğin bir web uygulamasında:
- Web
- Database
- Redis
Docker Compose bu servislerin tek proje olarak yönetilmesini kolaylaştırır.
Docker Compose Ayrı Kurulur mu?
Modern Docker Engine kurulumlarında Compose, plugin şeklinde kurulabilir.Eski sistemlerde kullanılan bağımsız Compose yapılarıyla karıştırılmamalıdır.
Docker Buildx Nedir?
Docker image oluşturma işlemlerini geliştiren araçlardan biridir.Özellikle:
- Çoklu platform image
- Gelişmiş build
Docker Volume Nedir?
Container verilerinin kalıcı olarak saklanmasına yardımcı olur.Çünkü container silindiğinde container'ın kendi içindeki bazı veriler kaybolabilir.
Örneğin veritabanı için volume kullanılması önemlidir.
Veritabanı Container'ında Volume Kullanılmalı mı?
Kesinlikle önerilir.Örneğin:
- MySQL
- MariaDB
- PostgreSQL
Bu nedenle kalıcı volume kullanılabilir.
Bind Mount Nedir?
Host üzerindeki belirli klasörün container içerisine bağlanmasıdır.Örneğin uygulama dosyaları doğrudan host klasöründen container'a sunulabilir.
Volume ile Bind Mount Farkı
Volume
Docker tarafından yönetilir.Bind Mount
Doğrudan host dosya sistemi üzerindeki klasörü kullanır.Her ikisinin farklı kullanım alanları vardır.
Docker Network Nedir?
Container'ların:- Birbirleriyle
- Host ile
- İnternetle
Bridge Network
Docker'ın yaygın network türlerinden biridir.Container'lar özel bir sanal ağ üzerinden iletişim kurabilir.
Host Network
Container doğrudan host network yapısını kullanabilir.Bu yöntem daha az izolasyon sağlar ve kullanım senaryosuna göre dikkatli tercih edilmelidir.
Docker Port Publish Nedir?
Container içerisindeki servisin host üzerinden erişilebilir hale getirilmesidir.Örneğin container içerisindeki web server dışarıya açılabilir.
Docker Portları Güvenlik Açığı Oluşturabilir mi?
Evet.Yanlışlıkla:
- Veritabanı
- Redis
- Yönetim paneli
Bu nedenle hangi container'ın hangi portu yayınladığı düzenli kontrol edilmelidir.
Docker ve Firewall
Docker kurulumu firewall davranışını etkileyebilir.Bu özellikle önemli bir konudur.
Docker bazı network kurallarını kendisi oluşturabilir.
Bu nedenle:
- UFW
- firewalld
- iptables
- nftables
UFW Kullanırken Dikkat
Docker tarafından yayınlanan container portları bazı yapılandırmalarda beklenen UFW kurallarının dışında erişilebilir hale gelebilir.Bu nedenle sadece:
UFW'de port kapalı
olmasına güvenilmemelidir.
Container'ın gerçek port yayınlama durumu kontrol edilmelidir.
Docker Firewall Güvenliği
Profesyonel sistemlerde:- Docker port yayınlama
- Host firewall
- Cloud firewall
- Reverse proxy
DOCKER-USER Zinciri Nedir?
Docker'ın oluşturduğu firewall yapısında kullanıcı tarafından ek filtreleme yapılabilecek özel alanlardan biridir.Özellikle container trafiğine ek güvenlik politikası uygulanmasında kullanılabilir.
IPv6 Docker'da Kullanılır mı?
Evet.Docker network yapısı IPv6 destekleyebilir.
Sunucuda IPv6 aktifse container portlarının IPv6 üzerinden de erişilebilir olup olmadığı kontrol edilmelidir.
Docker ve Reverse Proxy
Birden fazla web container'ı aynı sunucuda çalışıyorsa reverse proxy kullanılabilir.Örneğin:
- Nginx
- Traefik
- HAProxy
- Caddy
Reverse Proxy Ne Sağlar?
Dışarıdan gelen:- HTTP
- HTTPS
Aynı zamanda:
- SSL
- Domain
- Load balancing
Her Container'a Ayrı Public Port Açmak Gerekir mi?
Hayır.Web uygulamalarında reverse proxy kullanılarak sadece:
- 80
- 443
Arka plandaki container'lar internal network üzerinden haberleşebilir.
Docker'da Root Kullanımı
Docker daemon'a erişimi olan kullanıcı çok yüksek yetkilere sahip olabilir.Bu nedenle Docker grubuna kullanıcı eklemek basit bir normal kullanıcı yetkisi değildir.
Docker Grubu Güvenli mi?
Docker grubuna eklenen kullanıcılar pratikte sistem üzerinde çok yüksek yetki elde edebilir.Bu nedenle sadece gerçekten güvenilen yönetici kullanıcılar eklenmelidir.
Docker'ı Sudo Olmadan Kullanmak
Kullanıcı Docker grubuna eklenerek mümkün olabilir.Ancak bu işlemin güvenlik etkisi anlaşılmalıdır.
Docker grubuna herkesi eklemek doğru değildir.
Rootless Docker Nedir?
Docker daemon ve container'ların root yetkisi olmadan çalıştırılmasını amaçlayan moddur.Bazı kullanım senaryolarında güvenliği artırabilir.
Ancak:
- Network
- Port
- Depolama
Container İçinde Root Olmak
Container içerisinde root kullanıcı olmak host root ile tamamen aynı değildir.Ancak yine de güvenlik risklerini artırabilir.
Mümkünse uygulama container'ları daha düşük yetkili kullanıcılarla çalıştırılabilir.
Privileged Container Nedir?
Container'a çok geniş host yetkileri verilmesidir.Güvenlik açısından oldukça güçlü bir izni ifade eder.
Gerçekten gerekmedikçe kullanılmamalıdır.
Docker Socket Nedir?
Docker daemon ile iletişim sağlayan kritik bir socket'tir.Docker socket'e erişimi olan container veya kullanıcı host üzerinde yüksek yetki kazanabilir.
Bu nedenle kontrolsüz şekilde container içine bağlanmamalıdır.
Docker Secret Yönetimi
Uygulamalarda:- Veritabanı parolası
- API key
- Token
Secret bilgileri güvenli yöntemlerle yönetilmelidir.
Environment Variable Kullanımı
Uygulama yapılandırmaları için sık kullanılır.Ancak environment variable içinde bulunan hassas bilgilerin log veya yönetim araçlarında görünmemesine dikkat edilmelidir.
Docker Image İçine Parola Yazmak
Yanlış bir yöntemdir.Image başka kullanıcıyla paylaşılırsa parola da açığa çıkabilir.
Hassas bilgiler image'dan ayrı tutulmalıdır.
Dockerfile Nedir?
Docker image oluşturmak için gerekli adımları tanımlayan yapılandırma dosyasıdır.Uygulamanın:
- Hangi base image'ı kullanacağı
- Hangi bağımlılıkların kurulacağı
- Nasıl çalışacağı
Dockerfile Kullanmak İçin Kod Bilmek Şart mı?
Temel seviyede hayır.Ancak özel image oluşturmak için Dockerfile mantığını öğrenmek gerekir.
Base Image Nedir?
Kendi Docker image'ınızın temel aldığı image'dır.Örneğin uygulama:
- Ubuntu
- Alpine
- Node
- PHP
Alpine Linux Neden Docker'da Popüler?
Oldukça küçük bir Linux dağıtımıdır.Bu nedenle image boyutunu azaltabilir.
Ancak her uygulama için Alpine kullanmak zorunlu veya ideal değildir.
Uyumluluk kontrol edilmelidir.
Image Boyutu Neden Önemli?
Büyük image:- Daha uzun indirme süresi
- Daha fazla disk
- Daha uzun deployment
Gereksiz paketlerin image içerisinde tutulmaması faydalıdır.
Multi-Stage Build Nedir?
Image oluşturma sırasında derleme ortamıyla final çalışma ortamını ayırmayı sağlar.Bu sayede final image daha küçük ve daha güvenli olabilir.
Container Logları
Docker container'larının ürettiği loglar takip edilebilir.Özellikle:
- Hata
- Uygulama çökmesi
- Bağlantı problemi
Docker Logları Disk Doldurabilir mi?
Evet.Kontrolsüz şekilde büyüyen container logları host diski doldurabilir.
Bu nedenle log rotation yapılandırılması önemlidir.
Disk Dolarsa Docker Ne Olur?
Container'lar:- Yeni dosya yazamayabilir
- Veritabanı hata verebilir
- Image indirilemeyebilir
Docker Ne Kadar Disk Kullanır?
Kullanıma göre değişir.Disk tüketen başlıca öğeler:
- Images
- Containers
- Volumes
- Build cache
- Logs
Kullanılmayan Image'lar
Zamanla eski image'lar disk üzerinde birikebilir.Ancak üretim sisteminde hangi image'ın gerekli olduğu anlaşılmadan toplu temizlik yapılmamalıdır.
Dangling Image Nedir?
Artık aktif olarak kullanılmayan bazı image katmanlarını ifade edebilir.Disk temizliği sırasında değerlendirilebilir.
Docker Volume Silmek Tehlikeli mi?
Evet.Volume içerisinde:
- Veritabanı
- Uygulama dosyası
- Kullanıcı verisi
Kullanılmadığı kesin olmayan volume silinmemelidir.
Docker Backup Nasıl Yapılır?
Docker yedeğinde yalnızca container'ları yedeklemek yeterli değildir.Önemli olan:
- Volume verileri
- Compose dosyaları
- Uygulama yapılandırmaları
- Veritabanı
Container Yedeği ile Veritabanı Yedeği Aynı mı?
Hayır.Örneğin MySQL container'ını yedeklemek yerine veritabanının doğru yöntemle export edilmesi daha güvenli olabilir.
Ayrıca volume yedeği de alınabilir.
Docker Compose Dosyaları Yedeklenmeli mi?
Evet.Bir uygulamanın container mimarisini tekrar oluşturmak için Compose yapılandırmaları oldukça önemlidir.
Docker Güncellemesi
Docker Engine ve container image'ları ayrı ayrı güncellenir.Docker Engine güncel olsa bile container içinde eski uygulama çalışıyor olabilir.
Container Güncellemesi Nasıl Olur?
Genellikle yeni image indirilir ve eski container yerine yeni image'dan container oluşturulur.Container içinde manuel güncelleme yapmak uzun vadede yönetimi zorlaştırabilir.
Immutable Mantığı
Docker dünyasında container'ı sürekli elle değiştirmek yerine yeni image oluşturup container'ı yeniden oluşturmak daha düzenli bir yaklaşımdır.Restart Policy Nedir?
Container'ın:- Host yeniden başladığında
- Container çöktüğünde
Her Container Otomatik Restart Olmalı mı?
Her zaman değil.Örneğin:
- Web uygulaması
- Veritabanı
Tek seferlik çalışan görevlerde gereksiz olabilir.
Healthcheck Nedir?
Container içerisindeki uygulamanın gerçekten sağlıklı çalışıp çalışmadığını kontrol etmeye yardımcı olur.Container'ın process'i açık olabilir ancak uygulama cevap vermiyor olabilir.
Monitoring Kullanılmalı mı?
Evet.Takip edilmesi gerekenler:
- CPU
- RAM
- Container durumu
- Disk
- Network
- Restart sayısı
Docker Container Çok RAM Kullanabilir mi?
Evet.Varsayılan yapılandırmada bazı container'lar host kaynaklarının önemli bölümünü tüketebilir.
Kaynak limitleri belirlenebilir.
Container CPU Limiti
Belirli container'ın kullanabileceği CPU sınırlandırılabilir.Özellikle çok uygulamalı sunucularda faydalıdır.
RAM Limiti
Container'a maksimum bellek sınırı verilebilir.Ancak çok düşük limit uygulamanın OOM nedeniyle kapanmasına neden olabilir.
Docker ve Swap
Container bellek politikalarında swap davranışı da dikkate alınabilir.Kritik uygulamalarda performans açısından doğru RAM planlaması yapılmalıdır.
Bir Sunucuda Kaç Container Çalıştırılabilir?
Sabit bir sayı yoktur.Şunlara bağlıdır:
- CPU
- RAM
- Disk
- Uygulama yükü
- Trafik
Docker Kaynakları Otomatik İzole Eder mi?
Belirli izolasyon sağlar.Ancak kaynak limitleri uygulanmazsa bir container host CPU veya RAM'inin büyük bölümünü tüketebilir.
Docker ile Hosting Yapılır mı?
Teknik olarak evet.Özellikle uygulama bazlı izolasyon için kullanılabilir.
Ancak klasik paylaşımlı hosting sistemlerinden farklı yönetim yaklaşımı gerekir.
Docker ile WordPress Kurulur mu?
Evet.Genellikle:
- WordPress
- MySQL/MariaDB
- Reverse proxy
WordPress Docker'da Mantıklı mı?
Geliştirme, test veya belirli production mimarilerinde faydalı olabilir.Ancak sadece tek basit WordPress sitesi için Docker kullanmak şart değildir.
Standart hosting ortamı daha kolay olabilir.
Docker ile MySQL Kullanılır mı?
Evet.Ancak:
- Volume
- Backup
- RAM
- Disk I/O
Veritabanının container'da olması yedekleme ihtiyacını ortadan kaldırmaz.
Docker ile Nginx
Nginx Docker üzerinde oldukça sık kullanılır.Örneğin:
- Reverse proxy
- Web server
- Statik içerik
Docker ile Redis
Redis container olarak kolayca çalıştırılabilir.Ancak Redis portunun public internete yanlışlıkla açılmamasına dikkat edilmelidir.
Docker ile Portainer
Portainer, Docker ortamlarını grafik arayüz üzerinden yönetmeyi kolaylaştıran araçlardan biridir.Özellikle yeni başlayanlar için:
- Container
- Image
- Volume
- Network
Portainer Kullanmak Şart mı?
Hayır.Docker tamamen terminal üzerinden yönetilebilir.
Portainer yalnızca yönetimi kolaylaştıran ek araçtır.
Portainer İnternete Açılmalı mı?
Yönetim paneli olduğu için dikkatli olunmalıdır.Mümkünse:
- VPN
- IP whitelist
- Güçlü authentication
Docker ve SELinux
AlmaLinux, Rocky Linux ve RHEL tabanlı sistemlerde SELinux Docker volume ve dosya erişimini etkileyebilir.Bir izin sorunu oluştuğunda SELinux'u direkt kapatmak yerine doğru politika ve label ayarları araştırılmalıdır.
Docker ve AppArmor
Ubuntu gibi sistemlerde AppArmor container güvenliğinde ek izolasyon katmanı sağlayabilir.Gereksiz yere devre dışı bırakılmamalıdır.
Docker Güncel Tutulmalı mı?
Evet.Docker Engine güvenlik ve hata düzeltmeleri alır.
Üretim sistemlerinde güncellemeler:
- Backup
- Test
- Bakım planı
Docker Engine Güncellenince Container'lar Etkilenir mi?
Bazı güncellemelerde Docker servisi yeniden başlatılabilir.Bu nedenle canlı production ortamında bakım planı yapılmalıdır.
Sunucuyu Reboot Edince Container'lar Açılır mı?
Restart policy ve Docker servis yapılandırmasına bağlıdır.Bu nedenle kurulum sonrası reboot testi yapmak faydalı olabilir.
Docker Root Directory
Docker:- Image
- Container
- Volume metadata
Bu alanın disk kullanımı takip edilmelidir.
Docker İçin Ayrı Disk Kullanılır mı?
Büyük production sistemlerde kullanılabilir.Özellikle:
- Image
- Volume
- Log
SSD mi HDD mi?
Docker uygulamalarında özellikle:- Veritabanı
- Çok sayıda küçük dosya
- Yoğun log
Docker ve ZFS
Bazı özel depolama mimarilerinde Docker ile kullanılabilir.Ancak storage driver ve performans davranışları iyi anlaşılmalıdır.
Docker ve OverlayFS
Linux sistemlerde Docker'ın yaygın kullandığı storage yöntemlerinden biridir.Image katmanlarının verimli yönetilmesine yardımcı olur.
Production Docker Kurulumunda Dikkat Edilecekler
- Resmî repository kullanın
- Sistemi güncel tutun
- Gereksiz port açmayın
- Volume kullanın
- Backup alın
- Resource limit uygulayın
- Log rotation yapılandırın
- Monitoring kullanın
- Güvenilir image tercih edin
- Docker socket'i koruyun
Geliştirme Ortamında Docker
Yazılımcı kendi bilgisayarında production ortamına benzer yapı oluşturabilir.Bu:
- Takım çalışması
- Test
- Deployment
Test Ortamı
Uygulamanın yeni sürümü önce Docker üzerinde test edilebilir.Sorun yoksa production'a alınabilir.
CI/CD ile Docker
Docker image'ları:- Build
- Test
- Deploy
Registry Nedir?
Docker image'larının depolandığı sistemdir.Örneğin:
- Docker Hub
- Özel registry
Private Registry
Şirketin kendi image'larını herkese açık olmadan saklamasını sağlar.Özel uygulamalarda faydalıdır.
Registry Güvenliği
Registry içerisinde özel yazılım bulunabileceği için:- Authentication
- SSL
- Yetkilendirme
Docker Kurulumunda En Sık Yapılan Hatalar
Eski Paketleri Kontrol Etmemek
Paket çakışmasına neden olabilir.Rastgele Kurulum Scripti Çalıştırmak
Üretim sisteminde ne kurulduğunu takip etmeyi zorlaştırabilir.Docker Portlarını Kontrol Etmemek
Veritabanı yanlışlıkla internete açılabilir.Docker Grubuna Herkesi Eklemek
Yüksek sistem yetkisi verebilir.Volume Kullanmamak
Container silindiğinde veri kaybı oluşabilir.Backup Almamak
Container kullanmak backup'ın yerine geçmez.Log Limitlerini Ayarlamamak
Disk tamamen dolabilir.Rastgele Image Kullanmak
Güvenlik riski oluşturabilir.Container'ları Sürekli Root Olarak Çalıştırmak
Gereksiz yetki sağlar.Güncellemeleri Unutmak
Eski Docker Engine veya image güvenlik riski oluşturabilir.Docker Kurulum Sonrası Kontrol Listesi
- Docker Engine kuruldu mu?
- Docker servisi çalışıyor mu?
- Boot sırasında otomatik başlıyor mu?
- Test container'ı çalışıyor mu?
- Docker Compose kullanılabiliyor mu?
- Firewall kontrol edildi mi?
- Public portlar kontrol edildi mi?
- IPv6 erişimi kontrol edildi mi?
- Docker kullanıcı yetkileri doğru mu?
- Volume yapısı planlandı mı?
- Backup sistemi hazır mı?
- Log rotation ayarlandı mı?
- Monitoring aktif mi?
İlk Docker Sunucusu İçin Önerilen Sıra
Yeni başlayan biri şu sırayla ilerleyebilir:- Desteklenen Linux dağıtımını kurun.
- İşletim sistemini güncelleyin.
- Docker'ın resmî repository'sini ekleyin.
- Docker Engine'i kurun.
- Docker servisini başlatın.
- Test container'ı çalıştırın.
- Image ve container mantığını öğrenin.
- Volume kullanımını öğrenin.
- Docker network yapısını öğrenin.
- Docker Compose'a geçin.
- Firewall güvenliğini kontrol edin.
- Backup sistemi oluşturun.
Docker Öğrenirken İlk Proje
İlk olarak basit bir web server container'ı kullanılabilir.Daha sonra:
- Web uygulaması
- Veritabanı
- Reverse proxy
Docker Kullanmak Zorunlu mu?
Hayır.Basit bir sunucuda:
- Nginx
- PHP
- MySQL
Docker daha çok:
- İzolasyon
- Taşınabilirlik
- Otomasyon
- Kolay deployment
Docker'ın Avantajları
Hızlı Kurulum
Hazır image kullanılarak uygulamalar kısa sürede çalıştırılabilir.İzolasyon
Uygulamaların bağımlılıkları birbirinden ayrılabilir.Taşınabilirlik
Aynı container farklı sistemlerde çalıştırılabilir.Kolay Deployment
Yeni sürüm dağıtmak daha düzenli hale gelir.Kaynak Verimliliği
Klasik sanal makinelere göre genellikle daha hafiftir.Docker'ın Dezavantajları
Öğrenme Gerektirir
Container, image, network ve volume mantığının öğrenilmesi gerekir.Network Karmaşıklaşabilir
Çok container'lı yapılarda network yönetimi zorlaşabilir.Yanlış Port Açma Riski
Servisler yanlışlıkla internete açılabilir.Veri Yönetimi
Volume ve backup doğru yapılmazsa veri kaybı yaşanabilir.Güvenlik Yanılgısı
Container kullanmak uygulamayı otomatik olarak güvenli hale getirmez.Docker Güvenli midir?
Doğru kullanıldığında güçlü izolasyon ve yönetim avantajları sağlar.Ancak şu hatalar risklidir:
- Privileged container
- Public Docker socket
- Güvensiz image
- Gereksiz root kullanımı
- Public veritabanı portları
Docker ile Sanal Makine Birlikte Kullanılır mı?
Evet.Örneğin:
Fiziksel Sunucu → VDS → Linux → Docker → Container
şeklinde yapı oluşturulabilir.
Bu oldukça yaygın bir mimaridir.
VDS Üzerinde Docker
VDS/VPS üzerinde Docker kullanılabilir.Ancak sanallaştırma platformunun gerekli Linux kernel özelliklerini desteklemesi gerekir.
Standart modern VDS sistemlerinde genellikle sorun yaşanmaz.
Nested Sanallaştırma Gerekir mi?
Docker klasik sanal makine sistemi olmadığı için çoğu normal Linux VDS üzerinde nested virtualization gerekmez.Bu, Docker'ın önemli avantajlarından biridir.
Docker Production İçin Uygun mu?
Evet.Docker dünya genelinde çok sayıda production sisteminde kullanılmaktadır.
Ancak production ortamında:
- Monitoring
- Backup
- Security
- Resource management
- Update
Kubernetes Gerekir mi?
Her Docker sistemi için hayır.Tek veya birkaç sunucuda Docker Compose yeterli olabilir.
Kubernetes daha çok:
- Çok sayıda servis
- Çok sayıda node
- Otomatik ölçekleme
- Yüksek erişilebilirlik
Docker Compose mu Kubernetes mi?
Küçük ve orta projelerde:Docker Compose
çok daha kolay olabilir.
Büyük dağıtık sistemlerde:
Kubernetes
değerlendirilebilir.
Gereksiz yere karmaşık altyapı kurulmamalıdır.
Docker Kurulumunda En Önemli Güvenlik Noktaları
Özet olarak:- Resmî paket kullanın
- Güvenilir image kullanın
- Gereksiz port açmayın
- Database portlarını public yapmayın
- Docker socket'i koruyun
- Docker grubuna gereksiz kullanıcı eklemeyin
- Container'lara gereksiz privileged yetkisi vermeyin
- Volume ve backup kullanın
- Firewall'u test edin
- Docker ve image'ları güncel tutun
Sonuç
Docker, Linux üzerinde uygulamaları container yapısında çalıştırmak için kullanılan güçlü ve esnek bir platformdur.Kurulum sırasında en sağlıklı yöntem genellikle Docker'ın resmî repository'sini kullanmak ve kullanılan Linux dağıtımına uygun Docker Engine paketlerini yüklemektir.
Kurulum tamamlandıktan sonra yalnızca Docker servisinin çalışması yeterli değildir.
Aynı zamanda:
- Container
- Image
- Volume
- Network
- Port
- Firewall
- Backup
- Monitoring
Özellikle veritabanı gibi kalıcı veri kullanan uygulamalarda volume ve backup sistemi mutlaka oluşturulmalıdır.
Ayrıca Docker tarafından yayınlanan portların firewall kurallarıyla nasıl etkileştiği kontrol edilmelidir. Bir portun normal Linux firewall yapılandırmasında kapalı görünmesi, Docker üzerinden kesinlikle erişilemeyeceği anlamına gelmeyebilir.
Yeni başlayanlar için en mantıklı yaklaşım önce tek bir test container'ı çalıştırmak, ardından volume ve network mantığını öğrenmek ve daha sonra Docker Compose ile birden fazla servisten oluşan uygulamalara geçmektir.
Kısacası Docker kurulumu yalnızca yazılımı sunucuya yüklemekten ibaret değildir. Sağlıklı bir Docker sistemi için kurulum, güvenlik, kalıcı veri yönetimi, ağ yapılandırması ve yedekleme birlikte düşünülmelidir.



