Konsep registry sudah di tangan; sekarang waktunya berkunjung ke alamat yang sejak Chapter Menjalankan Container Pertama diam-diam melayani setiap pull kita. Docker Hub adalah registry publik terbesar di dunia dan menjadi default Docker lewat hostname docker.io — dua fakta yang membuatnya sekaligus menjadi tempat paling nyaman dan paling berisiko: nyaman karena jutaan image siap pakai, berisiko karena tidak semuanya layak dipercaya dan seluruh kunjungan dikenai kuota. Chapter ini membedah Docker Hub dari tiga sisi: cara mengenali image yang tepercaya, cara membaca halaman repository sebagai dokumen audit, dan angka rate limit yang sering membuat tim produksi terkejut di tengah malam.

Registry Publik Terbesar dan Alamat Bawaan #

Docker Hub diakses lewat hub.docker.com untuk antarmuka web dan docker.io sebagai hostname registry. Jutaan repository tinggal di dalamnya: official images, image aplikasi populer, image proyek open source, hingga image komunitas dari perusahaan mana pun. Satu Docker ID gratis sudah cukup untuk mulai menarik image, mengevaluasi kualitasnya, dan kelak mendorong image sendiri — rencana yang kita jalankan untuk budi/katalog-web.

Status alamat bawaan punya konsekuensi yang perlu disadari sejak awal: setiap nama image tanpa hostname selalu berarti docker.io. Bila tim kita kelak memakai registry lain sebagai sumber utama, kebiasaan menulis nama secara eksplisit menjadi penangkal kebingungan — asal image tidak pernah samar.

Official Images dan Namespace library #

Ketika kita menarik nginx, Docker sesungguhnya menarik library/nginx. Namespace library adalah wilayah khusus official images: image yang dikurasi tim Docker dengan Dockerfile yang mengikuti best practice, patch keamanan yang dirilis tepat waktu, dan skema tag yang terstruktur konsisten — nginx:1.29-alpine berarti mainline 1.29 di atas basis Alpine, postgres:18-alpine berarti PostgreSQL 18 varian Alpine. Untuk kebutuhan umum — web server, database, runtime bahasa — official images hampir selalu menjadi titik awal terbaik, dan seluruh latihan Course ini memang berdiri di atasnya.

Di luar library, Docker Hub menyediakan dua penanda kepercayaan lain yang tertera sebagai badge pada halaman repository:

  • Publisher Verified — identitas akun publisher telah diverifikasi, sehingga image seperti bitnami/redis atau grafana/grafana benar-benar diterbitkan organisasi bersangkutan, bukan tiruan bertema sama.
  • Docker-Sponsored OSS — proyek open source yang kebutuhan build dan distribusinya disponsori Docker.

Membaca Halaman Repository #

Halaman web Docker Hub bukan sekadar katalog nama. Fitur pencariannya memfilter hasil berdasarkan kategori — image resmi, publisher terverifikasi, hingga konten anomali — dan setiap halaman repository memuat README beserta tab Tags yang menampilkan sejarah tag: kapan tag terakhir di-push, digest manifest yang ditunjuknya, ukuran terkompresi per arsitektur (amd64, arm64), dan waktu pembaruan terakhir. Tab ini berguna nyata saat menelusuri regresi: membandingkan waktu push sebuah tag dengan waktu kemunculan gejala aneh sering langsung menunjukkan titik kecurigaan.

Dua sinyal sosial ikut tertera pada setiap repository: jumlah bintang dan jumlah pull. Keduanya menunjukkan popularitas, tetapi bukan jaminan kualitas maupun keamanan. Image dengan jutaan pull tetap bisa membawa kerentanan lama bila sudah lama tidak diperbarui, dan bintang bisa dihasilkan proyek yang ramai sesaat lalu ditinggalkan. Penilaian keamanan yang sesungguhnya kembali ke pemindaian image dan verifikasi asal-usul — kebiasaan yang kita bangun pada Section Keamanan Docker.

Catatan sejarah kecilnya: fitur build otomatis yang membangun ulang image di Docker Hub ketika kode sumber berubah pernah menjadi cara utama menerbitkan image. Praktik modern umumnya memindahkan langkah build ke CI — pipeline menjalankan docker build lalu docker push — dan hasil akhirnya sama-sama bermunculan di tab Tags dengan waktu tercatat rapi. Kita akan merakit pipeline semacam itu pada Section CI/CD dan Automation.

Rate Limit yang Perlu Dihafal #

Docker Hub membatasi jumlah pull agar layanan publik tetap sehat — angka resminya saat riset Course ini sudah kita singgung di Section Pengantar Docker, dan kini waktunya dibedah penuh:

Tipe penggunaPull / 6 jamRepository publikRepository privat
Unauthenticated100 per IPv4, atau per blok IPv6 /64——
Personal (terautentikasi, gratis)200tanpa batas1
Pro (terautentikasi)unlimited (fair use)tanpa batastanpa batas
Team (terautentikasi)unlimited (fair use)tanpa batastanpa batas
Business (terautentikasi)unlimited (fair use)tanpa batastanpa batas

Dua detail tabel tersebut paling sering terlewat. Pertama, kuota unauthenticated dihitung per alamat IP, bukan per mesin — satu kantor yang seluruh internetnya keluar lewat satu NAT berbagi kuota 100 pull yang sama, dan pengguna IPv6 berbagi per blok /64. Kedua, docker login mengubah basis hitungan menjadi per akun sekaligus menaikkan kuota menjadi 200 pull per 6 jam pada plan Personal.

Bentuk kegagalannya tampak seperti ini:

bash
$ docker pull nginx

Output yang Dihasilkan:

text
Error response from daemon: toomanyrequests: You have reached your pull rate limit. You failed to pull images within your current pull rate limit. Additionally, your account status may prevent you from pulling images. For more information, visit https://docs.docker.com/docker-hub/usage/

Kata kunci toomanyrequests dan kode HTTP 429 menandakan rate limit — bukan image yang hilang, bukan pula kesalahan jaringan. Ketika batas itu menghampiri, empat jalan keluar tersedia berjenjang:

  1. docker login — berpindah ke kuota terautentikasi yang dihitung per akun, bukan per IP; langkah paling murah dan harus menjadi bawaan setiap mesin.
  2. Registry mirror — pull-through cache yang menyimpan image publik di dalam jaringan sendiri sehingga Docker Hub hanya dihubungi sekali; kita bangun pada Chapter Registry Mirror.
  3. Retag ke registry internal — image publik yang dipakai berulang ditarik sekali, diberi nama internal, lalu didistribusikan dari registry perusahaan.
  4. Upgrade plan — Pro, Team, dan Business menghapus batas keras pull dengan kebijakan fair use.

Referensi #

Dengan pemahaman tentang Docker Hub sebagai kanal distribusi, langkah berikutnya adalah memiliki tempat sendiri di dalamnya. Kita akan membuat repository untuk image katalog-web milik Budi — menentukan nama, deskripsi, visibilitas publik atau privat, dan mengatur akses bila kelak repository berpindah dari akun pribadi ke organization — sehingga chapter setelahnya tinggal mengisi repository tersebut dengan hasil docker push.