S3'ü konteyner kayıt defteri olarak kullanmak
- Son 4 aydır Outerbounds ile iş birliği içinde özel bir konteyner imaj oluşturucusu geliştiriliyordu
- S3'ün bir konteyner kayıt defteri olarak kullanılabileceği keşfedildi
- Bir S3 bucket'ını HTTP üzerinden açığa çıkarıp belirli bir yola imaj yüklediğinizde, imaj
docker pull komutuyla çekilebiliyor
Demo
cowsay çalıştıran bir konteyner imajı oluşturulup S3 bucket'ına yüklendi
- Ücretsiz egress sağlamak için R2 kullanıldı
- R2 ve S3 API uyumlu
$ docker run --rm pub-40af5d7df1e0402d9a92b982a6599860.r2.dev/cowsay
Neden S3 kullanılsın?
- Geleneksel olarak DockerHub, GitHub Container Registry, ECR vb. kullanılıyor
- S3, yükleme hızında büyük bir avantaj sağlıyor
- ECR ile S3'ün yükleme hızları karşılaştırıldığında, S3'ün en fazla 8 kat daha hızlı olduğu görüldü
S3 neden daha hızlı?
- S3, tek bir katmanın parçalarını paralel olarak yükleyebiliyor
- ECR, OCI Distribution Spec'e uyduğu için yüklemeleri sıralı yapmak zorunda
- Paralel yükleme yapamayan ECR, bant genişliğini yeterince verimli kullanamıyor
S3 bir konteyner kayıt defteri değil
- S3, teknik olarak bir konteyner kayıt defteri değil
docker pull komutu dosyaları HTTP istekleriyle indiriyor
- S3 bucket'ı uygun şekilde yapılandırılırsa konteyner kayıt defteri olarak kullanılabiliyor
Dikkat edilmesi gerekenler
- Bu yöntem oldukça deneysel
- Mevcut konteyner kayıt defterlerinin sunduğu özellikleri sağlamıyor (ör. güvenlik taraması, erişim kontrolü vb.)
- Daha fazla araştırma gerekiyor
PS. Balina ne olacak?
- Bu, Docker logosuna gönderme yapan bir şaka
GN⁺ özeti
- Bu yazı, S3'ü konteyner kayıt defteri olarak kullanma yöntemini açıklıyor
- S3'ün hızlı yükleme hızından yararlanılabiliyor
- Mevcut konteyner kayıt defterlerinin özelliklerini sunmadığı için dikkatli olmak gerekiyor
- Deneysel ama ilgi çekici bir yaklaşım
- Benzer işlevler sunan diğer projeler arasında DockerHub, GitHub Container Registry ve ECR yer alıyor
1 yorum
Hacker News görüşleri
OCI Distribution spesifikasyonunun statik dosyaları desteklemesinin iyi olacağı yönünde bir görüş var
Content-Type: octet-streamgayet iyi çalışabilirOCI Distribution spesifikasyonunun iyi tasarlanmadığı yönünde bir görüş var
Content-Rangedeğer biçimi RFC7233 biçimiyle uyuşmuyorCloudflare'ın R2 kullanan bir container registry sunucusunu açık kaynak yaptığı bilgisi var
OCI spesifikasyonunda katman push işlemlerinin neden sıralı olmak zorunda olduğunu bilmek isteyen bir görüş var
Nexus kullanma nedenleri ile artıları ve eksileri hakkında bir görüş var
CNCF'nin Distribution projesinin, Cloudfront imzalı URL'ler üzerinden S3'ten registry yedeklemeyi desteklediği bilgisi var
S3 ve R2 maliyetlerinden hiç bahsedilmemesi üzücü bulunuyor
ECR'nin image layer'ları birden fazla parça halinde yüklemeyi desteklediği bilgisi var
Docker Registry hakkında şikayetler var
Kişisel bir container registry'nin neden var olması gerektiğini anlamadığını söyleyen bir görüş var