format_list_bulletedBu İçerikte Bahsedilen Konular
- arrow_rightDocker Registry Nedir ve Neden Kendi Sunucunuza İhtiyacınız Var?
- arrow_rightPublic vs Private Docker Registry Karşılaştırması
- arrow_rightDocker Registry Kurulumu: Adım Adım Rehber
- arrow_right1. Adım: Docker Registry Container'ını Başlatma
- arrow_right2. Adım: SSL/TLS Sertifikası Yapılandırması
- arrow_right3. Adım: Temel Kimlik Doğrulama (Basic Auth)
- arrow_rightDocker İmajlarınızı Private Registry'ye Push Etme
- arrow_rightİmajı Etiketleme
- arrow_rightRegistry'ye Push Etme
- arrow_rightDocker Client Yapılandırması
- arrow_rightDocker Registry Güvenlik En İyi Uygulamaları
- arrow_right1. Erişim Kontrolü ve RBAC
- arrow_right2. İmaj Tarama ve Vulnerability Analizi
- arrow_right3. Network Güvenliği
- arrow_right4. İmaj İmzalama
- arrow_rightProduction Ortamında Docker Registry Yönetimi
- arrow_rightYüksek Kullanılabilirlik Yapılandırması
- arrow_rightDepolama Yönetimi
- arrow_rightGarbage Collection
- arrow_rightAlternatif Registry Çözümleri
- arrow_rightPopüler Enterprise Registry Çözümleri
- arrow_rightSonuç ve Öneriler
Docker Registry Nedir ve Neden Kendi Sunucunuza İhtiyacınız Var?
Docker registry, container imajlarının depolandığı ve dağıtıldığı merkezi bir repository sistemidir. Docker Hub varsayılan public registry olarak kullanılsa da, kurumsal projelerde ve ticari uygulamalarda özel Docker registry kullanımı zorunlu hale gelmiştir.
Gartner'ın 2024 raporuna göre, kurumsal şirketlerin %78'i container güvenliği için özel registry çözümlerini tercih etmektedir. Bunun temel nedenleri arasında veri sızıntısı riskleri, imaj bütünlüğü kontrolü ve compliance gereksinimleri yer almaktadır.
Kendi Docker registry sunucunuzu kurmak, imajlarınızın üçüncü tarafların erişiminden korunmasını sağlar. Ayrıca CI/CD pipeline'larında daha hızlı dağıtım yapabilir ve internet bağımlılığını azaltabilirsiniz.
Public vs Private Docker Registry Karşılaştırması
| Özellik | Public Registry | Private Registry |
|---|---|---|
| Erişim Kontrolü | Herkes erişebilir | Kullanıcı bazlı yetkilendirme |
| Veri Güvenliği | Dış sunucularda depolanır | Kendi altyapınızda saklanır |
| Dağıtım Hızı | İnternet bağımlı | Yerel ağda çok hızlı |
| Maliyet | Ücretsiz planlar mevcut | Sunucu maliyeti gerekir |
| Compliance | GDPR/KVKK uyumsuz olabilir | Tam kontrol ve uyumluluk |
Docker Registry Kurulumu: Adım Adım Rehber
Docker Registry kurulumu oldukça basittir. Aşağıdaki adımları takip ederek kendi özel registry sunucunuzu dakikalar içinde çalıştırabilirsiniz. İlk olarak mevcut bir sanal sunucu üzerinde Docker'ın yüklü olduğundan emin olun.
1. Adım: Docker Registry Container'ını Başlatma
En basit yöntem, Docker'ın resmi registry image'ını kullanmaktır. Aşağıdaki komutla registry sunucunuzu 5000 portunda çalıştırabilirsiniz:
docker run -d \
--name registry \
--restart=always \
-p 5000:5000 \
-v registry-data:/var/lib/registry \
registry:2
Bu komut, registry verilerini kalıcı olarak saklamak için named volume kullanmaktadır. Production ortamında immutable yedekleme stratejileri ile birlikte kullanmanızı öneririz.
2. Adım: SSL/TLS Sertifikası Yapılandırması
Güvenli bir registry için SSL sertifikası zorunludur. Let's Encrypt ücretsiz sertifikalarını kullanabilir veya kendi sertifika otoritenizi kurabilirsiniz. Production ortamında sunucu güvenlik duvarı yapılandırması da önemlidir.
# Self-signed sertifika oluşturma
openssl req -x509 -days 365 -nodes \
-newkey rsa:2048 \
-keyout registry.key \
-out registry.crt \
-subj "/C=TR/L=Istanbul/O=Sirketiniz/CN=registry.sirketiniz.com"
3. Adım: Temel Kimlik Doğrulama (Basic Auth)
Registry'nize erişimi kısıtlamak için temel kimlik doğrulama ekleyin. Öncelikle htpasswd aracı ile kullanıcı oluşturmanız gerekir:
# Kullanıcı oluşturma
mkdir auth
docker run --entrypoint htpasswd httpd:2 -Bbn admin sifre123 > auth/htpasswd
# Registry'yi kimlik doğrulama ile yeniden başlatma
docker run -d \
--name registry \
--restart=always \
-p 5000:5000 \
-v registry-data:/var/lib/registry \
-v "$(pwd)"/auth:/auth \
-e REGISTRY_AUTH=htpasswd \
-e REGISTRY_AUTH_HTPASSWD_REALM="Registry Realm" \
-e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \
registry:2
Docker İmajlarınızı Private Registry'ye Push Etme
Private registry'niz çalıştıktan sonra, imajlarınızı bu sunucuya nasıl göndereceğinizi öğrenmeniz gerekir. Bu süreç birkaç basit adımdan oluşmaktadır.
İmajı Etiketleme
Önce local imajınızı registry'nizin adresiyle etiketleyin:
docker tag myapp:latest registry.sirketiniz.com:5000/myapp:latest
Burada "registry.sirketiniz.com" yerine kendi sunucu adresinizi kullanmalısınız. Eğer DNS yapılandırması yapmadıysanız, IP adresi de kullanabilirsiniz.
Registry'ye Push Etme
Etiketlenen imajı private registry'nize gönderin:
docker push registry.sirketiniz.com:5000/myapp:latest
Başarılı bir push işleminden sonra, imajınız güvenli bir şekilde private registry'nizde saklanmaktadır. Bu imajı başka sunucularda çekmek için aynı adresi kullanmanız yeterlidir.
Docker Client Yapılandırması
Private registry'yi güvenilir olarak eklemeniz gerekmektedir:
# Linux için
sudo mkdir -p /etc/docker/certs.d/registry.sirketiniz.com:5000
sudo cp registry.crt /etc/docker/certs.d/registry.sirketiniz.com:5000/ca.crt
sudo systemctl restart docker
Windows ve macOS'ta Docker Desktop ayarlarından "Insecure Registry" ekleyebilirsiniz.
Docker Registry Güvenlik En İyi Uygulamaları
Private registry kurulumu sadece başlangıçtır. İmajlarınızı gerçekten gizli tutmak için aşağıdaki güvenlik önlemlerini almanız kritik öneme sahiptir.
1. Erişim Kontrolü ve RBAC
Registry'nize erişimi sıkı şekilde kontrol altına alın. Her proje için ayrı kullanıcı hesapları oluşturun ve minimum yetki prensibi uygulayın. Token-based authentication kullanarak daha granüler kontrol sağlayabilirsiniz.
Enterprise ortamlarda ISO 27001 sertifikalı altyapı kullanmanızı öneririz.
2. İmaj Tarama ve Vulnerability Analizi
Deploy etmeden önce tüm imajları vulnerability taramasından geçirin. Açık kaynak araçlar olan Trivy veya Clair kullanabilirsiniz:
# Trivy ile imaj taraması
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock \
aquasec/trivy image registry.sirketiniz.com:5000/myapp:latest
IDC'nin araştırmasına göre, düzenli vulnerability taraması yapan şirketler %65 daha az güvenlik ihlali yaşamaktadır.
3. Network Güvenliği
Registry sunucunuzu public internetten izole edin. Güvenlik duvarı kuralları ile sadece gerekli IP aralıklarından erişime izin verin. Internal ağda kullanılan registry'ler için VPN tunnel kullanmanızı öneririz.
4. İmaj İmzalama
Docker Content Trust kullanarak imjaları dijital olarak imzalayın:
# Docker Content Trust etkinleştirme
export DOCKER_CONTENT_TRUST=1
# İmzalı imaj push etme
docker push registry.sirketiniz.com:5000/myapp:latest
Bu özellik, imajların bütünlüğünü ve kaynağını doğrulamanıza olanak tanır.
Production Ortamında Docker Registry Yönetimi
Production'da registry yönetimi, geliştirme ortamından farklı dikkat gerektirir. Yüksek kullanılabilirlik, yedekleme ve monitoring sistemleri kurmanız gerekir.
Yüksek Kullanılabilirlik Yapılandırması
Production ortamında tek registry sunucusu yeterli değildir. En az iki sunucu ile load balancer ardında çalıştırmanızı öneririz. Bu yapı, planned maintenance sırasında bile kesintisiz hizmet sağlar.
Birden fazla VDS sunucu kullanarak HA registry cluster oluşturabilirsiniz.
Depolama Yönetimi
Registry verileri hızla büyüyebilir. Bu nedenle uygun depolama stratejisi belirleyin:
- Local Disk: Küçük ekipler için uygun, en basit çözüm
- Object Storage: S3, MinIO gibi çözümlerle sonsuz ölçeklenebilirlik
- Distributed Filesystem: GlusterFS veya Ceph ile yüksek dayanıklılık
Garbage Collection
Kullanılmayan imajları ve layer'ları temizleyerek disk alanı kazanın:
# Registry garbage collection
docker exec registry bin/registry garbage-collect \
/etc/docker/registry/config.yml
Bu işlemi düzenli olarak cron job olarak çalıştırmanızı öneririz.
Alternatif Registry Çözümleri
Docker Registry v2 açık kaynak çözümünün yanı sıra, ticari alternatifler de mevcuttur. İhtiyaçlarınıza göre doğru seçimi yapmanız önemlidir.
Popüler Enterprise Registry Çözümleri
| Çözüm | Tip | Öne Çıkan Özellik |
|---|---|---|
| Harbor | Open Source | GUI, vulnerability scanning, replication |
| JFrog Artifactory | Ticari | Multi-registry support, advanced security |
| GitHub Packages | Cloud | GitHub entegrasyonu, kolay kurulum |
| Google Artifact Registry | Cloud | GCP entegrasyonu, managed service |
Küçük ve orta ölçekli projeler için Docker Registry v2 yeterli olabilir. Ancak enterprise özellikler (GUI, RBAC, replication) gerekiyorsa Harbor gibi çözümleri değerlendirebilirsiniz.
Sonuç ve Öneriler
Kendi Docker registry sunucunuzu kurmak, container imajlarınızı gizli tutmanın en güvenilir yoludur. Bu rehberde anlatılan adımları takip ederek, production seviyesinde güvenli bir registry altyapısı oluşturabilirsiniz.
Özetle, başarılı bir private registry kurulumu için:
- SSL/TLS sertifikası kullanın
- Kimlik doğrulama mekanizması ekleyin
- Network erişimini kısıtlayın
- Düzenli vulnerability taraması yapın
- Yedekleme stratejisi belirleyin
- Monitoring ve logging aktif edin
Docker registry güvenliği hakkında daha fazla bilgi için Portainer ile container yönetimi rehberimize de göz atabilirsiniz. Ayrıca web sitesi optimizasyonu konusunda container imajlarınızın boyutunu nasıl küçülteceğinizi öğrenebilirsiniz.