DijitalOcean Container Registry Kurulumu ve Kullanımı Kapsamlı Rehberi
DijitalOcean Container Registry (DOCR) Nedir ve Neden Kullanmalısınız?
Günümüz modern yazılım geliştirme süreçlerinde konteyner teknolojileri, uygulamaların taşınabilirliği, ölçeklenebilirliği ve tutarlılığı açısından vazgeçilmez bir rol oynamaktadır. Docker gibi konteyner platformları, uygulamaları bağımlılıklarıyla birlikte izole edilmiş ortamlarda çalıştırmayı mümkün kılar. Ancak bu konteyner imajlarının depolanması, sürüm kontrolü ve farklı ortamlara güvenli bir şekilde dağıtılması için bir kayıt defteri (registry) hizmetine ihtiyaç duyulur. İşte tam bu noktada DijitalOcean Container Registry (DOCR) devreye girer.
DOCR, geliştiricilerin Docker imajlarını depolayabileceği, yönetebileceği ve dağıtabileceği, tam olarak yönetilen, özel bir Docker kayıt defteri hizmetidir. DigitalOcean ekosistemiyle sorunsuz bir şekilde entegre çalışan DOCR, özellikle DigitalOcean Droplet’leri, Kubernetes kümeleri (DOKS) veya App Platform gibi diğer DigitalOcean ürünlerini kullanan projeler için ideal bir çözümdür.
Neden DOCR Kullanmalısınız?
* Entegrasyon Kolaylığı: DigitalOcean’ın diğer hizmetleriyle derinlemesine entegrasyon sunar. Özellikle DigitalOcean Kubernetes (DOKS) ile kullanıldığında, kimlik doğrulama ve imaj çekme süreçleri basitleşir.
* Güvenlik: İmajlarınız DigitalOcean’ın güvenli altyapısında depolanır. Erişim kontrolü mekanizmaları sayesinde yalnızca yetkili kullanıcılar veya servisler imajlarınıza erişebilir. Ayrıca, DigitalOcean’ın genel güvenlik standartlarından faydalanırsınız.
* Performans ve Güvenilirlik: DigitalOcean’ın global veri merkezleri aracılığıyla yüksek performanslı imaj çekme ve gönderme işlemleri sunar. Bu, dağıtım süreçlerinizin daha hızlı ve güvenilir olmasını sağlar.
* Ölçeklenebilirlik: İhtiyaçlarınıza göre otomatik olarak ölçeklenir, böylece depolama alanı veya bant genişliği konusunda endişelenmenize gerek kalmaz.
* Maliyet Etkinliği: Genellikle öngörülebilir ve uygun fiyatlandırma modelleri sunar. Kullanımınıza göre ödeme yaparak gereksiz maliyetlerden kaçınabilirsiniz.
* Basit Yönetim: Tamamen yönetilen bir hizmet olduğu için altyapı yönetimi yükünü üzerinizden alır. Geliştiriciler imaj yönetimine odaklanabilir.
* Sürüm Kontrolü: İmajlarınızın farklı sürümlerini etiketleyerek kolayca yönetmenizi ve gerektiğinde belirli bir sürüme geri dönmenizi sağlar.
Kullanım Senaryoları:
* Sürekli Entegrasyon/Sürekli Dağıtım (CI/CD): CI/CD işlem hatlarınızın bir parçası olarak otomatik olarak yeni imajları derleyip DOCR’a gönderebilir ve ardından dağıtım ortamlarınıza çekebilirsiniz.
* Mikroservis Mimarileri: Mikroservis tabanlı uygulamalarınızın her bir servisi için ayrı Docker imajlarını DOCR’da depolayabilir ve yönetebilirsiniz.
* Çoklu Ortam Dağıtımları: Geliştirme, test ve üretim gibi farklı ortamlar için aynı imajları DOCR’dan çekerek tutarlı dağıtımlar sağlayabilirsiniz.
* Ekip İşbirliği: Geliştirme ekiplerinin ortak bir imaj deposu üzerinden işbirliği yapmasını kolaylaştırır.
Bu rehberde, DigitalOcean Container Registry’yi adım adım nasıl kuracağınızı, Docker imajlarınızı nasıl göndereceğinizi ve yöneteceğinizi detaylı bir şekilde inceleyeceğiz.
Ön Koşullar: Başlamadan Önce İhtiyaç Duyulanlar
DigitalOcean Container Registry’yi başarılı bir şekilde kurmak ve kullanmak için bazı temel araçlara ve bilgilere sahip olmanız gerekmektedir. Bu bölümde, gerekli ön koşulları detaylandıracağız.
* DigitalOcean Hesabı: DOCR, DigitalOcean’ın bir hizmetidir. Dolayısıyla, bir DigitalOcean hesabına sahip olmanız ve bu hesaba giriş yapabilmeniz gerekmektedir. Eğer henüz bir hesabınız yoksa, DigitalOcean web sitesi üzerinden kolayca oluşturabilirsiniz.
* doctl CLI Kurulumu: doctl, DigitalOcean’ın resmi komut satırı arayüzü (CLI) aracıdır. DOCR dahil olmak üzere DigitalOcean üzerindeki tüm kaynakları programatik olarak yönetmek için kullanılır. doctl‘u yerel makinenize kurmanız ve DigitalOcean hesabınızla kimlik doğrulaması yapmanız gerekecektir.
* Kurulum Talimatları (Örnekler):
* macOS (Homebrew ile):
brew install doctl
* Linux (apt ile):
sudo snap install doctl --classic
# Veya manuel kurulum için:
# wget https://github.com/digitalocean/doctl/releases/download/v1.x.x/doctl-1.x.x-linux-amd64.tar.gz
# tar xf doctl-1.x.x-linux-amd64.tar.gz
# sudo mv doctl /usr/local/bin
* Windows (Chocolatey ile):
choco install doctl
* Kimlik Doğrulama: doctl‘u kurduktan sonra, hesabınızla kimlik doğrulaması yapmanız gerekir. Bu işlem, size özel bir kişisel erişim belirteci (Personal Access Token) oluşturmayı ve doctl‘a tanıtmayı içerir.
doctl auth init
Bu komut sizi DigitalOcean kontrol paneline yönlendirecek ve bir belirteç oluşturup CLI’a yapıştırmanızı isteyecektir. Alternatif olarak, doğrudan kontrol panelinden bir API belirteci oluşturup doctl auth init komutuna manuel olarak sağlayabilirsiniz.
* Docker Kurulumu: Konteyner imajları oluşturmak, etiketlemek ve kayıt defterine göndermek için yerel makinenizde Docker Engine’in kurulu olması gerekir. Docker Desktop (Windows/macOS için) veya Docker Engine (Linux için) kurabilirsiniz.
* Kurulum Talimatları: Docker’ın resmi web sitesindeki dokümantasyonu takip ederek işletim sisteminize uygun kurulumu gerçekleştirebilirsiniz: [https://docs.docker.com/get-docker/](https://docs.docker.com/get-docker/)
* Kurulumu doğrulama:
docker --version
docker run hello-world
* Temel Docker Bilgisi: Dockerfile yazma, Docker imajlarını derleme (docker build), etiketleme (docker tag) ve gönderme (docker push) gibi temel Docker komutlarına ve kavramlarına aşina olmanız bu rehberi daha verimli kullanmanızı sağlayacaktır.
Bu ön koşullar tamamlandığında, DigitalOcean Container Registry’nizi oluşturmaya ve kullanmaya hazırsınız demektir.
DigitalOcean Container Registry Oluşturma: Adım Adım Kurulum
DigitalOcean Container Registry (DOCR) oluşturmanın iki ana yolu vardır: DigitalOcean kontrol paneli üzerinden veya doctl CLI (komut satırı arayüzü) üzerinden. Her iki yöntemi de adım adım inceleyelim.
Kontrol Paneli Üzerinden Oluşturma
DigitalOcean kontrol paneli, kullanıcı dostu arayüzü ile DOCR oluşturmanın en kolay yoludur.
1. DigitalOcean Hesabınıza Giriş Yapın: Tarayıcınızdan DigitalOcean kontrol paneline (cloud.digitalocean.com) gidin ve hesabınıza giriş yapın.
2. Container Registry Sayfasına Gidin: Sol gezinme menüsünde “Containers” veya “Container Registry” seçeneğini bulun ve tıklayın. Eğer ilk kez kullanıyorsanız, sizi “Create Container Registry” sayfasına yönlendirecektir.
3. Registry Oluşturma İşlemini Başlatın: “Create Registry” veya “Get Started” düğmesine tıklayın.
4. Registry Adını Belirleyin: Registry’niz için benzersiz bir ad girmeniz istenecektir. Bu ad, imajlarınızın tam yolunun bir parçası olacaktır (örneğin, registry.digitalocean.com/your-registry-name/image-name). Ad, küçük harflerden ve tirelerden oluşmalı, benzersiz olmalı ve 63 karakteri geçmemelidir.
5. Bölge (Region) Seçin: Registry’nizin fiziksel olarak nerede barındırılacağını seçmeniz gerekir. Uygulamalarınızın veya hizmetlerinizin bulunduğu veri merkezine yakın bir bölge seçmek, imaj çekme ve gönderme işlemlerinde gecikmeyi azaltacaktır. Örneğin, İstanbul’dan bağlanıyorsanız Frankfurt (fra1) veya Amsterdam (ams3) gibi bölgeler tercih edilebilir.
6. Plan Seçimi: DigitalOcean, DOCR için farklı planlar sunabilir. Genellikle, belirli bir depolama alanı ve bant genişliği içeren bir “Starter” veya “Professional” planı seçeneği bulunur. İhtiyaçlarınıza uygun olanı seçin. Başlangıçta ücretsiz bir katman (free tier) olup olmadığını kontrol edin.
7. Registry’yi Oluşturun: Tüm bilgileri girdikten sonra “Create Registry” düğmesine tıklayın. DigitalOcean, registry’nizi birkaç dakika içinde oluşturacaktır.
Registry oluşturulduktan sonra, kontrol panelinde registry’nizin genel bakış sayfasını görebilirsiniz. Burada depolama kullanımınızı, depolanan imajları ve diğer detayları takip edebilirsiniz.
doctl CLI Üzerinden Oluşturma
Komut satırı arayüzünü tercih edenler veya otomasyon senaryoları için doctl CLI üzerinden registry oluşturmak daha pratik olabilir.
1. doctl Kimlik Doğrulamasını Yapın: Ön koşullarda belirtildiği gibi, doctl‘un DigitalOcean hesabınızla kimlik doğrulaması yapıldığından emin olun:
doctl auth init
2. Mevcut Bölgeleri Kontrol Edin (İsteğe Bağlı): Registry’nizi oluşturabileceğiniz mevcut bölgeleri görmek için aşağıdaki komutu kullanabilirsiniz:
doctl regions list
Bu, bir bölge kodu seçerken size yardımcı olacaktır (örneğin, nyc3, fra1).
3. Registry Oluşturma Komutunu Çalıştırın: Registry’nizi oluşturmak için doctl registry create komutunu kullanın. name ve region parametrelerini sağlamanız gerekir.
doctl registry create --region
* : Registry’niz için istediğiniz benzersiz ad.
* : Registry’nizin oluşturulacağı veri merkezi bölgesi (örneğin, fra1).
Örnek:
doctl registry create my-first-registry --region fra1
Komut başarılı olduğunda, oluşturulan registry hakkında detaylı JSON çıktısı alırsınız. Bu çıktıda registry’nin adı, bölgesi, durumu ve diğer bilgileri yer alır.
4. Oluşturulan Registry’yi Doğrulayın: Registry’nizin başarıyla oluşturulduğunu doğrulamak için aşağıdaki komutu kullanabilirsiniz:
doctl registry get
Bu komut, DigitalOcean hesabınızdaki tüm registry’leri listeler. Eğer tek bir registry’niz varsa, doğrudan o registry’nin bilgilerini gösterecektir.
Artık DigitalOcean Container Registry’nizi oluşturdunuz. Bir sonraki adım, Docker imajlarınızı bu registry’ye nasıl göndereceğinizi öğrenmek olacaktır.
Docker İmajlarını DOCR’a Gönderme (Push): İş Akışı
DigitalOcean Container Registry’nizi oluşturduktan sonraki en önemli adım, yerel olarak oluşturduğunuz Docker imajlarını bu kayıt defterine göndermektir. Bu süreç, kimlik doğrulama, imajı etiketleme ve son olarak gönderme adımlarını içerir.
DOCR’a Kimlik Doğrulama
Docker imajlarını DigitalOcean Container Registry’ye gönderebilmek için öncelikle Docker istemcinizin DOCR ile kimlik doğrulaması yapması gerekir. DigitalOcean, bu işlemi doctl CLI ile entegre bir şekilde kolaylaştırır.
1. doctl ile Docker Girişi Yapın:
Bu, en basit ve önerilen yöntemdir. doctl komutu, Docker istemcinizi otomatik olarak DOCR’a giriş yapacak şekilde yapılandırır.
doctl registry login
Bu komut, docker login registry.digitalocean.com komutunu arka planda çalıştırır ve DigitalOcean hesabınızla ilişkili geçici bir belirteç kullanarak kimlik doğrulamasını yapar. Başarılı olursa, “Login Succeeded” mesajını görürsünüz. Bu belirteçlerin belirli bir ömrü vardır, bu yüzden belirli aralıklarla bu komutu çalıştırmanız gerekebilir.
* Alternatif (Manuel) Kimlik Doğrulama:
Eğer doctl kullanılamıyorsa veya farklı bir senaryo için manuel giriş yapmak istiyorsanız, bir DigitalOcean API belirteci oluşturup bunu Docker’a sağlayabilirsiniz. Ancak doctl registry login çoğu durum için tercih edilen yöntemdir.
# Bu yöntem genellikle önerilmez, ancak bir alternatif olarak bilinmelidir.
# DigitalOcean kontrol panelinden bir Personal Access Token (PAT) oluşturun.
# docker login registry.digitalocean.com
# Kullanıcı adı olarak DigitalOcean API token'ınızı girin (veya DigitalOcean'ın belirttiği kullanıcı adını).
# Şifre olarak DigitalOcean API token'ınızı girin.
doctl registry login komutu, Docker’ın kimlik bilgilerini güvenli bir şekilde yönetmesini sağladığı için daha güvenlidir.
Docker İmajı Oluşturma veya Mevcut İmajı Etiketleme
DOCR’a göndereceğiniz imajın doğru formatta etiketlenmiş olması gerekir. Etiket formatı registry.digitalocean.com/ şeklindedir.
1. Bir Docker İmajı Oluşturun (Eğer Mevcut Değilse):
Örnek bir Dockerfile kullanarak bir imaj oluşturalım.
Dockerfile içeriği:
# Dockerfile
FROM alpine:latest
CMD ["echo", "Merhaba, DigitalOcean Container Registry!"]
Bu Dockerfile‘ı my-app adında bir dizine kaydedin ve o dizinde aşağıdaki komutu çalıştırın:
docker build -t my-app:latest .
Bu komut, my-app adında ve latest etiketli yerel bir Docker imajı oluşturur.
2. İmajı DOCR İçin Etiketleyin:
Oluşturduğunuz veya mevcut olan imajı, DOCR’a gönderebilmek için doğru adlandırma formatıyla etiketlemeniz gerekir.
docker tag : registry.digitalocean.com//:
* : Yerel makinenizdeki imajın adı (örneğin, my-app).
* : Yerel imajın etiketi (örneğin, latest).
* : DigitalOcean Container Registry’nizin adı (örneğin, my-first-registry).
* : DOCR’da görünecek imajın adı (genellikle yerel imaj adıyla aynıdır, örneğin, my-app).
* : DOCR’daki imajın etiketi (örneğin, 1.0, latest, dev).
Örnek:
docker tag my-app:latest registry.digitalocean.com/my-first-registry/my-app:1.0
docker tag my-app:latest registry.digitalocean.com/my-first-registry/my-app:latest
Bu komutlar, my-app:latest imajının iki farklı etiketle DOCR’a gönderilmek üzere hazırlanmasını sağlar.
İmajı DOCR’a Gönderme (Push)
İmajınızı doğru şekilde etiketledikten ve kimlik doğrulamasını yaptıktan sonra, docker push komutuyla DOCR’a gönderebilirsiniz.
docker push registry.digitalocean.com//:
Örnek:
docker push registry.digitalocean.com/my-first-registry/my-app:1.0
docker push registry.digitalocean.com/my-first-registry/my-app:latest
İmajın boyutu ve internet bağlantınızın hızına bağlı olarak bu işlem biraz zaman alabilir. Başarılı bir şekilde tamamlandığında, terminalinizde “Pushed” veya benzeri bir başarı mesajı göreceksiniz.
Doğrulama:
İmajınızın DOCR’a başarıyla gönderildiğini doğrulamak için DigitalOcean kontrol panelinize gidebilir veya doctl CLI’yı kullanabilirsiniz:
* Kontrol Paneli: Container Registry bölümüne gidin, registry’nizi seçin ve “Images” sekmesinde gönderdiğiniz imajı ve etiketlerini görmelisiniz.
* doctl CLI:
doctl registry repository list
doctl registry repository get
Örnek:
doctl registry repository list
doctl registry repository get my-app
Bu komutlar, registry’nizdeki depoları ve my-app deposundaki imaj etiketlerini listeleyecektir.
Artık Docker imajlarınız DigitalOcean Container Registry’de güvenli bir şekilde depolanmış durumda. Bir sonraki adımda, bu imajları nasıl çekeceğinizi ve dağıtacağınızı inceleyeceğiz.
DOCR’dan Docker İmajlarını Çekme (Pull): Uygulama ve Dağıtım
DigitalOcean Container Registry’ye (DOCR) gönderdiğiniz Docker imajlarını, DigitalOcean Droplet’lerinizde, Kubernetes kümelerinizde (DOKS) veya herhangi bir Docker yüklü sunucuda kullanmak için bu imajları çekmeniz (pull) gerekir.
Kimlik Doğrulama
İmajları DOCR’dan çekebilmek için, imajı çekeceğiniz ortamın (sunucu, Droplet, Kubernetes düğümü vb.) DOCR ile kimlik doğrulaması yapması gerekir. Bu, imaj gönderme işlemindeki kimlik doğrulamasına benzerdir.
1. doctl ile Docker Girişi Yapın:
İmajları çekeceğiniz makinede doctl kurulu ve DigitalOcean hesabınızla kimlik doğrulaması yapılmış olmalıdır. Ardından aşağıdaki komutu çalıştırın:
doctl registry login
Bu komut, Docker istemcinizi DOCR’a giriş yapacak şekilde yapılandırır ve imaj çekme işlemlerine izin verir. Eğer bir DigitalOcean Kubernetes (DOKS) kümesi kullanıyorsanız, DOKS otomatik olarak bu kimlik doğrulamasını sizin için yönetir, bu nedenle genellikle manuel olarak doctl registry login çalıştırmanıza gerek kalmaz. Ancak bir Droplet veya başka bir sanal sunucu kullanıyorsanız, bu adımı uygulamanız şarttır.
İmajı Çekme (Pull)
Kimlik doğrulamasını yaptıktan sonra, docker pull komutunu kullanarak imajınızı DOCR’dan çekebilirsiniz. İmajın tam yolunu belirtmeniz önemlidir.
docker pull registry.digitalocean.com//:
* : DigitalOcean Container Registry’nizin adı.
* : Çekmek istediğiniz imajın adı.
* : Çekmek istediğiniz imajın etiketi (örneğin, latest, 1.0).
Örnek:
Önceki bölümde gönderdiğimiz my-app:1.0 imajını çekelim:
docker pull registry.digitalocean.com/my-first-registry/my-app:1.0
Eğer belirli bir etiket belirtmezseniz, Docker varsayılan olarak latest etiketini çekmeye çalışır.
İmajın boyutu ve ağ bağlantınızın hızına bağlı olarak çekme işlemi biraz zaman alabilir. Başarılı bir şekilde tamamlandığında, imaj yerel Docker imaj listenize eklenecektir.
Doğrulama:
İmajın başarıyla çekildiğini doğrulamak için yerel Docker imajlarınızı listeleyebilirsiniz:
docker images
Çektiğiniz imajın (registry.digitalocean.com/my-first-registry/my-app gibi) listede göründüğünü kontrol edin.
Çekilen İmajı Kullanma
İmajı yerel makinenize veya sunucunuza çektikten sonra, docker run komutuyla bu imajdan bir konteyner başlatabilirsiniz.
docker run -d --name registry.digitalocean.com//:
* -d: Konteyneri arka planda (detached mode) çalıştırır.
* --name : Konteynerinize okunabilir bir isim verir.
Örnek:
docker run -d --name my-running-app registry.digitalocean.com/my-first-registry/my-app:1.0
Eğer imajınız bir web uygulaması içeriyorsa ve belirli bir portta dinliyorsa, docker run komutuna port eşleştirmesi (-p) eklemeniz gerekebilir:
docker run -d -p 80:8080 --name my-web-app registry.digitalocean.com/my-first-registry/my-web-app:latest
Bu örnekte, konteynerin 8080 portunu host makinenin 80 portuna eşleştiriyoruz.
Konteynerin Çalıştığını Doğrulama:
Çalışan konteynerlerinizi listeleyerek uygulamanızın başarıyla başlatıldığını kontrol edebilirsiniz:
docker ps
my-running-app veya my-web-app adındaki konteynerinizin listede Up durumda olduğunu görmelisiniz.
DigitalOcean Container Registry’den imaj çekme ve bunları çalıştırma süreci bu şekildedir. Bu adımlar, uygulamalarınızı DigitalOcean altyapısında veya diğer ortamlarda dağıtmak için temel bir temel oluşturur.
DOCR Yönetimi ve Bakımı: En İyi Uygulamalar
DigitalOcean Container Registry (DOCR) sadece imaj depolamakla kalmaz, aynı zamanda imajlarınızın güvenliğini, yaşam döngüsünü ve erişimini yönetmek için çeşitli araçlar ve en iyi uygulamalar sunar. Etkili bir yönetim, registry’nizin düzenli, güvenli ve maliyet etkin kalmasını sağlar.
İmajları Listeleme ve Silme
Registry’nizdeki imajları düzenli olarak gözden geçirmek ve eski veya gereksiz imajları silmek, hem depolama maliyetlerini düşürür hem de registry’yi düzenli tutar.
* Tüm Depoları Listeleme:
Registry’nizdeki tüm depoları (repository) görmek için:
doctl registry repository list
Bu komut, her bir deponun adını, içerdiği imaj sayısını ve toplam boyutunu gösterir.
* Belirli Bir Depodaki İmaj Etiketlerini Listeleme:
Belirli bir depodaki tüm etiketleri (sürümleri) görmek için:
doctl registry repository get
Örnek:
doctl registry repository get my-app
Bu komut, my-app deposundaki her bir imaj etiketini, boyutunu, ne zaman oluşturulduğunu ve manifest özetini (digest) gösterir.
* Depo Silme:
Tüm bir depoyu ve içerdiği tüm imajları silmek için:
doctl registry repository delete
Örnek:
doctl registry repository delete old-project-app
Bu işlem geri alınamaz, bu yüzden dikkatli olun.
* Belirli Bir İmaj Etiketini Silme:
Bir depodaki belirli bir imaj etiketini silmek için:
doctl registry repository tag delete
Örnek:
doctl registry repository tag delete my-app 1.0
Bu komut, my-app deposundaki 1.0 etiketli imajı siler. Eğer aynı imaja işaret eden başka etiketler varsa, imaj tamamen silinmez; sadece o etiket kaldırılır. İmajın tamamen silinmesi için tüm etiketlerinin silinmesi veya imaj manifest özetinin (digest) doğrudan silinmesi gerekir.
Güvenlik
DOCR imajlarınızın güvenliğini sağlamak kritik öneme sahiptir.
* Erişim Kontrolü (ACL) ve DigitalOcean Takımları:
DigitalOcean Takımları (Teams) özelliğini kullanarak DOCR’a kimlerin erişebileceğini ve hangi izinlere sahip olacağını yönetebilirsiniz. Takım üyelerine “Okuyucu” (Reader), “Yazıcı” (Writer) veya “Yönetici” (Admin) rolleri atayarak registry erişimini granüler bir şekilde kontrol edebilirsiniz.
* API Token Güvenliği:
doctl veya CI/CD süreçleri için kullandığınız API belirteçlerini güvenli bir şekilde saklayın. Bu belirteçleri asla genel depolarda (GitHub gibi) paylaşmayın ve düzenli olarak döndürün (yenileyin).
* İmaj Taraması:
DigitalOcean Container Registry, şu anda yerleşik bir güvenlik açığı tarama hizmeti sunmamaktadır. Bu nedenle, güvenlik açıklarını tespit etmek için üçüncü taraf araçları veya hizmetleri (örneğin, Clair, Trivy, Snyk) CI/CD işlem hattınıza entegre etmeyi düşünebilirsiniz.
Otomatik Temizleme Politikaları
Büyük projelerde yüzlerce, hatta binlerce imaj etiketi birikebilir. Bunları manuel olarak temizlemek zorlu bir iştir. DigitalOcean DOCR, şu anda yerleşik otomatik temizleme politikaları sunmamaktadır (bazı diğer bulut sağlayıcıları gibi). Ancak, kendi otomatik temizleme stratejilerinizi uygulayabilirsiniz:
* Betiklerle Temizleme: Belirli bir yaştan (örneğin, 90 günden eski) veya belirli sayıda etiketi aşan (örneğin, her depoda en fazla 10 son etiket) imajları silmek için doctl komutlarını kullanan özel bir betik (cron job olarak çalıştırılabilir) yazabilirsiniz.
* CI/CD Entegrasyonu: CI/CD işlem hatlarınızın bir parçası olarak, her başarılı dağıtımdan sonra eski imaj etiketlerini otomatik olarak silen adımlar ekleyebilirsiniz.
Entegrasyonlar
DOCR’ın gücü, DigitalOcean ekosistemi ve diğer geliştirme araçlarıyla entegrasyon yeteneğinden gelir.
* DigitalOcean Kubernetes (DOKS) ile Entegrasyon:
DOKS, DOCR ile sorunsuz bir şekilde entegre çalışır. Bir DOKS kümesi oluşturduğunuzda, DOCR’a otomatik olarak kimlik doğrulaması yapılır. Bu sayede, Kubernetes dağıtım tanımlamalarınızda (YAML) DOCR’daki imajlarınızı doğrudan kullanabilirsiniz, ImagePullSecret yapılandırmasına gerek kalmaz.
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app-deployment
spec:
replicas: 3
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-app-container
image: registry.digitalocean.com/my-first-registry/my-app:latest
ports:
- containerPort: 8080
* CI/CD Araçları (Jenkins, GitLab CI, GitHub Actions) ile Entegrasyon:
DOCR, popüler CI/CD araçlarıyla kolayca entegre edilebilir. İşlem hatlarınızda doctl registry login, docker build, docker tag ve docker push komutlarını kullanarak otomatik derleme ve dağıtım süreçleri oluşturabilirsiniz. Genellikle, DigitalOcean API belirtecinizi CI/CD ortamınızın gizli değişkenleri (secrets) olarak saklamanız ve doctl auth init veya doctl registry login komutunu bu belirteçle çalıştırmanız gerekir.
Bu yönetim ve bakım ipuçları, DigitalOcean Container Registry’nizi daha verimli, güvenli ve ölçeklenebilir bir şekilde kullanmanıza yardımcı olacaktır.
DOCR Fiyatlandırması: Maliyet Yapısı
DigitalOcean Container Registry (DOCR) hizmetinin maliyetini anlamak, bütçenizi yönetmek ve gereksiz harcamalardan kaçınmak için önemlidir. DOCR fiyatlandırması genellikle iki ana bileşene dayanır: depolama alanı ve veri transferi (bant genişliği).
Depolama Alanı
DOCR’da depoladığınız Docker imajlarının boyutu, aylık depolama maliyetinizi belirler. DigitalOcean genellikle gigabayt (GB) başına bir ücretlendirme modeli kullanır.
* Ücretsiz Katman (Free Tier): DigitalOcean, yeni kullanıcılar veya küçük projeler için genellikle belirli bir miktarda ücretsiz depolama alanı sunar. Örneğin, ilk 500 MB depolama alanı ücretsiz olabilir. Bu, DOCR’ı denemek veya çok küçük projeler için kullanmak isteyenler için harika bir başlangıç noktasıdır. Ücretsiz katmanın sınırlarını ve geçerlilik süresini DigitalOcean’ın resmi fiyatlandırma sayfasından kontrol etmek önemlidir.
* Ücretli Katman: Ücretsiz katmanı aştığınızda veya daha fazla depolama alanına ihtiyacınız olduğunda, GB başına aylık bir ücret ödersiniz. Bu ücret, genellikle diğer bulut sağlayıcılarının benzer hizmetleriyle rekabetçi düzeydedir. Örneğin, aylık 0.07 USD/GB gibi bir fiyatlandırma görebilirsiniz (bu rakamlar zamanla değişebilir, güncel bilgi için DigitalOcean’ın resmi sitesini kontrol edin).
Veri Transferi (Bandwidth)
Depolama alanının yanı sıra, DOCR’dan imaj çekerken veya DOCR’a imaj gönderirken gerçekleşen veri transferi (bant genişliği) de maliyetin bir parçası olabilir.
* Gelen Veri Transferi (Ingress): Genellikle DOCR’a imaj gönderirken (push) gerçekleşen veri transferi için ücret alınmaz.
* Giden Veri Transferi (Egress): DOCR’dan imaj çekerken (pull) gerçekleşen veri transferi için ücret alınabilir. Ancak, DigitalOcean genellikle tüm hizmetleri arasında paylaşılan aylık bir ücretsiz giden veri transferi kotası sunar (örneğin, 1 TB). Bu kota, tüm Droplet’leriniz, veritabanlarınız ve DOCR’ınız dahil olmak üzere tüm DigitalOcean hizmetlerinizden çıkan veriyi kapsar. Eğer bu kotayı aşarsanız, GB başına ek bir ücret ödemeniz gerekir.
* Bölge İçi Transferler: Eğer imajları DOCR’dan aynı DigitalOcean veri merkezindeki (örneğin, Frankfurt’taki bir DOCR’dan Frankfurt’taki bir DOKS kümesine) bir Droplet’e veya Kubernetes kümesine çekiyorsanız, bu transferler genellikle ücretsizdir veya çok düşük maliyetlidir. Bölgeler arası transferler (örneğin, Frankfurt’taki DOCR’dan New York’taki bir Droplet’e) daha maliyetli olabilir.
Maliyet Optimizasyonu İpuçları
DOCR maliyetlerinizi optimize etmek için aşağıdaki stratejileri uygulayabilirsiniz:
1. Gereksiz İmajları Temizleyin: Düzenli olarak eski, kullanılmayan veya gereksiz Docker imaj etiketlerini ve depolarını silin. Otomatik temizleme betikleri kullanmayı düşünün. Her depolanan imaj GB başına maliyet demektir.
2. İmaj Boyutlarını Optimize Edin: Docker imajlarınızın boyutunu mümkün olduğunca küçük tutmaya çalışın. Multi-stage build’ler kullanın, gereksiz bağımlılıkları ve dosyaları imajdan çıkarın. Daha küçük imajlar hem depolama maliyetini düşürür hem de çekme/gönderme sürelerini hızlandırır.
3. Ücretsiz Katmanı Kullanın: Eğer projeniz küçükse veya yeni başlıyorsanız, DigitalOcean’ın sunduğu ücretsiz katmandan en iyi şekilde yararlanın.
4. Bölge Yakınlığını Koruyun: Mümkünse, DOCR’ınızı uygulamalarınızın çalıştığı DigitalOcean veri merkezine yakın bir bölgede barındırın. Bu, giden veri transferi maliyetlerini ve gecikmeyi azaltacaktır.
5. Veri Transferi Kotasını Takip Edin: DigitalOcean kontrol panelinden aylık veri transferi kullanımınızı düzenli olarak kontrol edin. Kotayı aşmaya yaklaştığınızda uyarılar ayarlayabilirsiniz.
DigitalOcean’ın resmi fiyatlandırma sayfası, her zaman en güncel ve doğru fiyatlandırma bilgilerini sağlayacaktır. Hizmeti kullanmadan önce bu sayfayı kontrol etmek, maliyetler konusunda net bir fikir edinmenizi sağlayacaktır.
Sık Karşılaşılan Sorunlar ve Çözümleri: Troubleshooting
DigitalOcean Container Registry (DOCR) kullanırken karşılaşabileceğiniz bazı yaygın sorunlar ve bunların çözümleri aşağıda listelenmiştir.
Kimlik Doğrulama Hataları
Bu, DOCR ile çalışırken en sık karşılaşılan sorunlardan biridir. Genellikle docker login veya docker push/pull sırasında ortaya çıkar.
* Hata Mesajı Örneği: Error response from daemon: Get "https://registry.digitalocean.com/v2/": unauthorized: authentication required veya denied: requested access to the resource is denied
* Olası Nedenler ve Çözümler:
* Yanlış veya Süresi Dolan Kimlik Bilgileri: doctl registry login komutunu tekrar çalıştırarak Docker istemcinizin kimlik bilgilerini yenileyin. DigitalOcean API belirteçleri belirli bir süre sonra geçerliliğini yitirebilir.
* doctl Kimlik Doğrulaması Yapılmamış: doctl CLI’ın DigitalOcean hesabınızla doğru bir şekilde kimlik doğrulaması yapıldığından emin olun (doctl auth init).
* İzin Sorunları: DigitalOcean hesabınızdaki kullanıcının veya API belirtecinin DOCR’a erişim ve imaj gönderme/çekme izinlerine sahip olduğundan emin olun. DigitalOcean Takımları kullanıyorsanız, kullanıcıya doğru rollerin atandığını kontrol edin.
* Yanlış Registry Adı: docker login veya docker push/pull komutlarında registry.digitalocean.com adresini doğru yazdığınızdan emin olun.
İmaj Bulunamadı Hataları
Bir imajı çekmeye veya göndermeye çalışırken imajın bulunamadığına dair hatalar alabilirsiniz.
* Hata Mesajı Örneği: Error response from daemon: pull access denied for registry.digitalocean.com/ veya manifest unknown
* Olası Nedenler ve Çözümler:
* Yanlış İmaj Yolu veya Etiket: docker push veya docker pull komutlarında kullandığınız imaj yolunun (registry.digitalocean.com/) tamamen doğru olduğundan emin olun. Registry adını, imaj adını ve etiketi dikkatlice kontrol edin. Etiketin (örneğin, latest, 1.0) gerçekten DOCR’da var olduğundan emin olun.
* Registry Adı Yanlış: doctl registry get veya DigitalOcean kontrol panelinden registry adınızın doğruluğunu teyit edin.
* İmaj Hiç Gönderilmedi: İmajın gerçekten DOCR’a gönderildiğinden emin olun. DigitalOcean kontrol panelini veya doctl registry repository get komutunu kullanarak imajın varlığını doğrulayın.
* Büyük/Küçük Harf Duyarlılığı: Docker imaj adları genellikle küçük harflerle yazılmalıdır. Adlandırma kurallarına uyduğunuzdan emin olun.
İzin Hataları
Bazı işlemler için yetersiz izinler nedeniyle hatalar alabilirsiniz.
* Hata Mesajı Örneği: Error: You do not have permission to perform this action. Please ensure you have the necessary permissions for the resource.
* Olası Nedenler ve Çözümler:
* DigitalOcean API Belirteci İzinleri: Kullandığınız DigitalOcean API belirtecinin DOCR kaynaklarına (okuma, yazma, silme) erişim izinlerine sahip olduğundan emin olun. Belirteci oluştururken doğru kapsamları (scopes) seçtiğinizden emin olun.
* Takım Rolleri: Eğer bir DigitalOcean Takımı üyesiyseniz, takım yöneticinizin size DOCR üzerinde gerekli rolleri (örneğin, “Yönetici” veya “Yazıcı”) atadığından emin olun.
Ağ Bağlantısı Sorunları
İnternet bağlantınızdaki sorunlar da DOCR işlemlerini etkileyebilir.
* Hata Mesajı Örneği: Error response from daemon: Head "https://registry.digitalocean.com/v2/": dial tcp: lookup registry.digitalocean.com: no such host veya connection refused
* Olası Nedenler ve Çözümler:
* İnternet Bağlantısı: Makinenizin internet bağlantısının aktif ve stabil olduğundan emin olun.
* DNS Sorunları: registry.digitalocean.com adresinin doğru bir şekilde çözümlendiğinden emin olun. ping registry.digitalocean.com komutunu deneyebilirsiniz.
* Güvenlik Duvarı/Proxy: Eğer bir güvenlik duvarının veya proxy sunucusunun arkasındaysanız, Docker’ın DigitalOcean Container Registry’ye erişmesine izin verildiğinden emin olun. Proxy ayarlarınızı Docker için yapılandırmanız gerekebilir.
Diğer Genel Sorunlar
* doctl Komutu Bulunamadı: doctl‘un sistem PATH’inizde olduğundan emin olun. Kurulum adımlarını tekrar gözden geçirin.
* Docker Daemon Çalışmıyor: Docker komutlarını çalıştırmadan önce Docker Daemon’ın (Docker Engine) çalışır durumda olduğundan emin olun. sudo systemctl status docker (Linux) veya Docker Desktop uygulamasının çalıştığını kontrol edin.
Bu sorun giderme adımları, DOCR ile çalışırken karşılaşabileceğiniz çoğu problemi çözmenize yardımcı olacaktır. Sorun devam ederse, DigitalOcean’ın resmi dokümantasyonuna başvurabilir veya DigitalOcean destek ekibiyle iletişime geçebilirsiniz.
Sonuç: Neden DOCR Tercih Edilmeli?
DigitalOcean Container Registry (DOCR), modern bulut tabanlı uygulama geliştirme ve dağıtım süreçleri için güçlü, güvenilir ve entegre bir çözüm sunar. Bu rehber boyunca, DOCR’ı nasıl kuracağınızı, Docker imajlarınızı nasıl güvenle depolayacağınızı ve farklı ortamlara nasıl dağıtacağınızı adım adım öğrendiniz.
DOCR’ın temel avantajları, DigitalOcean ekosistemiyle olan derin entegrasyonu, basit ve anlaşılır fiyatlandırma yapısı, yüksek performanslı ve güvenilir altyapısıdır. Özellikle DigitalOcean Droplet’leri veya Kubernetes (DOKS) kümeleri üzerinde uygulamalarınızı çalıştırıyorsanız, DOCR, imaj yönetimi ve dağıtım süreçlerinizi önemli ölçüde basitleştirir. Kimlik doğrulama kolaylığı ve doctl CLI ile sağlanan otomasyon yetenekleri, geliştiricilerin ve DevOps ekiplerinin verimliliğini artırır.
Konteyner teknolojileri benimsenmeye devam ettikçe, güvenilir bir konteyner kayıt defteri hizmeti vazgeçilmez hale gelmektedir. DOCR, bu ihtiyacı karşılarken, DigitalOcean’ın kullanıcı dostu yaklaşımını ve ölçeklenebilir altyapısını bir araya getirir. İster küçük bir proje ister büyük bir mikroservis mimarisi geliştiriyor olun, DOCR, Docker imajlarınızı yönetmek için sağlam bir temel sunar.
Özetle, DigitalOcean Container Registry, özellikle DigitalOcean platformunda çalışanlar için konteyner imajlarını depolama, yönetme ve dağıtma konusunda akıllı ve stratejik bir seçimdir. Sağladığı entegrasyon kolaylığı, güvenlik özellikleri ve maliyet etkinliği ile geliştirme süreçlerinizi hızlandıracak ve operasyonel yükünüzü azaltacaktır. Gelecekteki projelerinizde konteynerizasyonun tüm potansiyelinden yararlanmak için DOCR’ı değerlendirmeniz şiddetle tavsiye edilir.