Docker Hub Kullanmadan Yerel Docker Registry Kurulumu

Docker, modern yazılım geliştirme süreçlerinde vazgeçilmez bir araç haline gelmiştir.

Docker, modern yazılım geliştirme süreçlerinde vazgeçilmez bir araç haline gelmiştir. Ancak, Docker Hub gibi halka açık registry’lere bağımlı kalmak, kurumsal ortamlarda güvenlik riskleri, ağ gecikmeleri ve erişim kısıtlamaları gibi sorunlara yol açabilir. Yerel bir Docker registry kurarak, bu sorunları aşabilir ve image’larınızı tamamen kendi altyapınızda yönetebilirsiniz. Bu makale, Docker Hub kullanmadan yerel bir Docker registry’nin adım adım kurulumunu, yapılandırmasını ve kullanımını detaylı bir şekilde ele alacaktır. Kurumsal ekipler için özel olarak tasarlanmış bu rehber, pratik adımlar ve en iyi uygulamalarla dolu olup, kesintisiz bir DevOps akışı sağlayacaktır.

Sistem Gereksinimleri ve Ön Hazırlıklar

Yerel Docker registry kurulumuna başlamadan önce, sunucunuzun uygun donanım ve yazılım gereksinimlerini karşılamasını sağlamak esastır. Minimum olarak, Linux tabanlı bir işletim sistemi (Ubuntu 20.04 veya üstü önerilir), en az 2 GB RAM, 20 GB boş disk alanı ve stabil bir ağ bağlantısı gereklidir. Bu altyapı, registry’nin yüksek hacimli image depolama ve transfer işlemlerini sorunsuz yönetmesini sağlar. Ayrıca, firewall kurallarını önceden gözden geçirerek, varsayılan 5000 numaralı TCP portunu açmanız önerilir.

Hazırlık aşamasında, Docker ve Docker Compose’un en güncel sürümlerini yükleyin. Docker’ı resmi depo üzerinden kurmak için şu komutları kullanın: sudo apt update && sudo apt install docker.io docker-compose. Docker servisini etkinleştirin: sudo systemctl enable --now docker. Bu adımlar, registry container’ının stabil çalışmasını garanti eder. Ağ yapılandırmasında, registry’nin localhost veya özel bir IP üzerinden erişilebilir olmasını sağlayın; örneğin, bridge network modunu tercih edin ki birden fazla hosttan erişim mümkün olsun.

Gerekli Yazılımların Yüklenmesi

Docker registry, resmi Docker image’ı temel alır, bu yüzden öncelikle Docker Engine’in kurulu olması zorunludur. Ubuntu için depo anahtarını ekleyin: curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg. Ardından Docker paketini yükleyin. Docker Compose v2 için sudo apt install docker-compose-plugin komutunu çalıştırın. Bu yazılımlar, registry’nin container tabanlı çalışmasını destekler ve otomatik güncellemelerle uyumluluğu korur. Yükleme sonrası docker version ile doğrulayın; sürüm 20.10 veya üstü olmalıdır ki gelişmiş özelliklerden yararlanabilesiniz.

Ağ ve Güvenlik Önlemleri

Registry portunu (5000) firewall’da açın: sudo ufw allow 5000/tcp. Eğer birden fazla makine erişimi varsa, IP kısıtlaması uygulayın: sudo ufw allow from 192.168.1.0/24 to any port 5000. Bu, yetkisiz erişimleri engeller. Ayrıca, SELinux veya AppArmor gibi güvenlik modüllerini devre dışı bırakmayın; registry container’ını privileged modda çalıştırmadan yönetin. Bu önlemler, kurumsal standartlara uygun bir temel oluşturur ve veri sızıntı riskini minimize eder.

Docker Registry Kurulumu Adımları

Kurulum, Docker Compose kullanarak en pratik yöntemle gerçekleştirilir. Bir proje dizini oluşturun: mkdir local-registry && cd local-registry. Ardından docker-compose.yml dosyası hazırlayın. Bu dosya, registry servisini tanımlar ve kalıcı depolama için volume’lar ekler. Temel yapılandırma ile registry, HTTP üzerinden insecure modda çalışır; production için TLS ekleyin.

  1. docker-compose.yml oluşturun ve şu içeriği ekleyin:
    version: '3'
    services:
    registry:
    image: registry:2
    ports:
    - "5000:5000"
    volumes:
    - registry-data:/var/lib/registry
    volumes:
    registry-data:
  2. Servisi başlatın: docker-compose up -d.
  3. Durumu kontrol edin: docker ps ve curl http://localhost:5000/v2/ ile {} yanıtı alın.

Bu adımlar tamamlandığında, registry hazır hale gelir. Volume kullanımı, image verilerinin sunucu diskinde kalıcı olmasını sağlar; yeniden başlatmalarda veri kaybı olmaz. İsteğe bağlı olarak, config.yml ile storage backend’ini yapılandırın, örneğin S3 uyumlu depolama için.

Yapılandırma Dosyasının Detayları

İleri düzey için config.yml oluşturun ve compose dosyasına mount edin: volumes: - ./config.yml:/etc/docker/registry/config.yml. Config dosyasında HTTP bölümünde addr: 0.0.0.0:5000 belirtin. Storage için filesystem: {rootdirectory: /var/lib/registry} kullanın. Bu dosya, log seviyesi, middleware’ler ve auth gibi özellikleri özelleştirir. Örneğin, log: {level: debug} ile detaylı loglar alın. Production’da bu yapılandırma, ölçeklenebilirlik sağlar ve 100+ GB image depolamayı destekler.

Kullanım, Test ve Bakım

Registry hazırlandıktan sonra, image’larınızı push/pull etmek için Docker daemon’unuza insecure registry ekleyin. /etc/docker/daemon.json dosyasına { "insecure-registries": ["localhost:5000"] } ekleyin ve Docker’ı yeniden başlatın: sudo systemctl restart docker. Test için basit bir image tag’leyin: docker pull alpine && docker tag alpine localhost:5000/my-alpine && docker push localhost:5000/my-alpine. Pull testi: docker pull localhost:5000/my-alpine.

Bakım için düzenli olarak docker system prune ile kullanılmayan verileri temizleyin. Monitoring için Prometheus exporter ekleyin veya logları ELK stack’e yönlendirin. Bu pratikler, registry’nin uzun vadeli performansını korur.

Image Yönetimi Örnekleri

Çoklu image yönetimi için namespace kullanın: docker tag myapp localhost:5000/team/myapp:v1.0. Push sonrası curl http://localhost:5000/v2/_catalog ile katalogu listeleyin. Delete için manifest digest alın: curl -I -H "Accept: application/vnd.docker.distribution.manifest.v2+json" http://localhost:5000/v2/team/myapp/manifests/v1.0, sonra purge edin. Bu işlemler, CI/CD pipeline’larında otomatize edilebilir ve depolama maliyetlerini optimize eder. Günlük 50+ image trafiğinde bile stabil kalır.

Güvenlik ve En İyi Uygulamalar

Insecure mod yerine TLS sertifikası ekleyin: Self-signed için openssl ile key ve cert üretin, compose’a mount edin. Auth için htpasswd ile basic auth kurun: docker run --entrypoint htpasswd httpd:2 -Bbn user password > auth.htpasswd. Config.yml’e auth: {htpasswd: {realm: basic, path: /auth/htpasswd}} ekleyin. Rate limiting ve token auth ile kurumsal güvenliği pekiştirin. Düzenli vulnerability scan’leri (Trivy gibi) ile image’ları koruyun.

Yerel Docker registry, ekiplerinize tam kontrol ve hız sağlar. Bu kurulumla, Docker Hub bağımlılığını ortadan kaldırarak, güvenli ve verimli bir container ekosistemi oluşturabilirsiniz. Uygulamaya geçerek, DevOps süreçlerinizi dönüştürün ve altyapı maliyetlerinizi optimize edin.

Yazar: Lorem
çerik: 772 kelime
Okuma Süresi: 6 dakika
Zaman: Bugün
Yayım: 24-02-2026
Güncelleme: 24-02-2026