Hoy a las 02:15
Primer mensaje
Docker Dedicated Sunucu Kurulumu
Bu başlık altında, fiziksel bir sunucuya Docker’ın temel kurulumunu ve güvenilir, uzun vadeli bir üretim ortamı için uygulanabilir yapılandırmaları paylaşacağım. Amacım, adımları net, tecrübeye dayalı ve tekrarlanabilir bir şekilde sunmak; böylece benzer donanım ve ağ koşulları altında siz de hızlıca ilerleyebilirsiniz.
1. Donanım ve ağ kavramsal çerçeve
Bir dedicated sunucuya Docker kurarken önce ağ katmanını basitleştirmek faydalıdır. Genelde bağımsız bir public IP veya NAT üzerinden erişim gerekir. Yeterli RAM ve CPU çekirdeği, disk I/O performansı seçimlerde kilit rol oynar. Sunucuya erişim için SSH anahtar merkezi kurun ve root olmayan bir kullanıcı ile çalışmaya başlayın. Güvenlik için ufak, ancak önemli adımlar: güvenlik grupları/iptables kuralları, SSH üzerinden sadece ana makinenin IP’sinden bağlantı, ve fail2ban ile basit koruma.
2. Docker ve docker-compose kurulumu
Genel adımlar şu şekilde özetlenebilir:
- İşletim sisteminin güncel olduğundan emin olun: apt update && apt upgrade (Debian/Ubuntu için) veya yum update (RHEL/CentOS için).
- Gerekli paketleri kurun: apt install apt-transport-https ca-certificates curl gnupg-agent software-properties-common.
Docker engine’i kurun: resmi Docker kurulum yönergelerini takip etmek güvenli olur. Çoğu dağıtım için güvenilir Docker APT deposundan kurulur. Kurulum sonrası docker run hello-world ile temel doğrulama yapın.
- docker-compose kurulumu da ayrı bir adım: çoğu dağıtımda binary olarak indirilir veya paket yöneticisinden kurulur. Komut sürümü belirleyin ve versiyon uyumluluğunu kontrol edin.
3. İzolasyon ve ağ yapılandırması
[Kubernetes değil, basit bir Docker ağ senaryosu] ile başlamak çoğu pratik için yeterlidir.
- Bir özel ağ oluşturun: docker network create bridge-net --driver bridge.
- Güvenlik açısından konteynerleri birbirinden izole edin; gerekli ise user-defined bridge kullanın.
- Konteynerler için volume yönetimini planlayın: verileri kalıcı kılmak adına merkezî bir mount noktası belirleyin.
4. Production dostu uygulama yapıları
Örnek kullanım durumları için baseline bir docker-compose.yml düşünün:
1234567891011121314151617181920212223242526272829303132333435363738394041424344version: '3.8'
services:
web:
image: nginx:stable
ports:
[list]
[*]"80:80"
[/list]
networks:
[list]
[*]app-net
[/list]
volumes:
[list]
[*]./html:/usr/share/nginx/html
[/list]
app:
image: myorg/myapp:latest
depends_on:
[list]
[*]db
[/list]
networks:
[list]
[*]app-net
[/list]
db:
image: postgres:13
environment:
POSTGRES_PASSWORD: changeMe
volumes:
[list]
[*]db-data:/var/lib/postgresql/data
[/list]
networks:
[list]
[*]app-net
[/list]
networks:
app-net:
volumes:
db-data:
Bu yapı, basit bir web uygulamasını ve veritabanını izole bir şekilde çalıştırır. Üretim güvenliği için ek olarak:
- TLS terminasyonu için bir ters proxy ekleyin (örn. nginx ortra, Traefik).
- Container kimlik doğrulaması ve secrets yönetimi için Docker Secrets veya bir vault entegrasyonu kullanın.
- Yedekleme planı: veritabanı için periyodik snapshot’lar ve volume yedekleri.
5. Güncelleme ve bakım rutini
Güvenlik yamaları için düzenli güncellemeler şart. Rolling güncellemeler için docker-compose down/up -d veya kaynak yöneticinizi kullanarak servisleri kesintisiz sürümle yükseltin. Loglama için merkezi bir çözüme yönelin; container logları ve host logları için logging driver’ı uygun şekilde ayarlayın.
6. İzleme ve güvenlik üzerindeki pratikler
- Monitöring için basit araçlar: cAdvisor, Prometheus (node_exporter ile) ve Grafana entegrasyonu.
- Güvenlik: yalnızca gerekli portları dışarı açın, fail2ban/SIEM entegrasyonu ve SSH anahtar tabanlı erişim.
- Yedekleme testi: verilerin kurtarılabilirliğini periyodik olarak doğrulayın.
[/quote]
Bu yaklaşım üzerinden kendi özel gereksinimlerinize göre uyarlama yaparken hangi adımları değiştirdiğinizi ve hangi ek güvenlik veya performans önlemlerini düşündüğünüzü paylaşabilirsiniz. Böylece topluluk olarak pratikte karşılaşılabilecek zorlukları daha hızlı çözüme kavuşturabiliriz.