Menggunakan S3 sebagai registri kontainer
- Selama 4 bulan terakhir, telah dikembangkan image builder kontainer kustom bersama Outerbounds
- Menemukan bahwa S3 bisa digunakan sebagai registri kontainer
- Dengan mengekspos bucket S3 melalui HTTP dan mengunggah image ke path tertentu, image dapat diambil dengan perintah
docker pull
Demo
- Membuat image kontainer yang menjalankan
cowsay lalu mengunggahnya ke bucket S3
- Menggunakan R2 untuk menyediakan egress gratis
- R2 dan S3 kompatibel pada tingkat API
$ docker run --rm pub-40af5d7df1e0402d9a92b982a6599860.r2.dev/cowsay
Mengapa menggunakan S3?
- Secara tradisional orang menggunakan DockerHub, GitHub Container Registry, ECR, dan lain-lain
- S3 memiliki keunggulan besar dalam kecepatan unggah
- Hasil perbandingan kecepatan unggah antara ECR dan S3 menunjukkan bahwa S3 bisa hingga 8 kali lebih cepat
Mengapa S3 lebih cepat
- S3 dapat mengunggah chunk dari satu layer secara paralel
- ECR harus mengunggah secara berurutan karena mematuhi OCI Distribution Spec
- Karena tidak bisa melakukan unggah paralel, ECR tidak dapat memanfaatkan bandwidth secara penuh
S3 bukan registri kontainer
- Secara ketat, S3 bukanlah registri kontainer
- Perintah
docker pull mengunduh file melalui permintaan HTTP
- Jika bucket S3 dikonfigurasi dengan tepat, S3 dapat digunakan sebagai registri kontainer
Hal yang perlu diperhatikan
- Metode ini sangat eksperimental
- Tidak menyediakan fitur registri kontainer yang sudah ada (misalnya pemindaian keamanan, kontrol akses, dan sebagainya)
- Masih diperlukan riset tambahan
PS. Lalu pausnya?
- Ini adalah lelucon yang merujuk pada logo Docker
Ringkasan GN⁺
- Tulisan ini menjelaskan cara menggunakan S3 sebagai registri kontainer
- Kecepatan unggah S3 yang tinggi dapat dimanfaatkan
- Karena tidak menyediakan fitur registri kontainer yang sudah ada, perlu kehati-hatian
- Ini adalah pendekatan yang eksperimental tetapi menarik
- Proyek lain dengan fungsi serupa mencakup DockerHub, GitHub Container Registry, dan ECR
1 komentar
Komentar Hacker News
Ada pendapat bahwa akan bagus jika spesifikasi OCI Distribution mendukung file statis
Content-Type: octet-streammungkin dapat berfungsi dengan baikAda pendapat bahwa spesifikasi OCI Distribution tidak dirancang dengan baik
Content-Rangetidak sesuai dengan format RFC7233Ada informasi bahwa Cloudflare telah meng-open-source-kan server container registry yang menggunakan R2
Ada pendapat yang ingin mengetahui alasan mengapa push layer harus dilakukan secara berurutan dalam spesifikasi OCI
Ada pendapat tentang alasan menggunakan Nexus serta kelebihan dan kekurangannya
Ada informasi bahwa CNCF Distribution mendukung pencadangan registry dari S3 melalui URL bertanda tangan Cloudfront
Ada pendapat bahwa sayang sekali tidak ada pembahasan mengenai biaya S3 dan R2
Ada informasi bahwa ECR mendukung upload image layer dalam beberapa bagian
Ada keluhan tentang Registry milik Docker
Ada pendapat bahwa mereka tidak memahami alasan keberadaan container registry pribadi