Layer membuat image mudah dibagikan, dan tempat terbesar untuk berbagi adalah Docker Hub — registry bawaan yang menyimpan jutaan repositori image publik, dari image resmi yang dipelihara ketat sampai proyek iseng yang ditinggalkan pemiliknya. Pilihan sebanyak itu adalah pedang bermata dua: hampir semua kebutuhan sudah tersedia image-nya, tetapi tidak semua image layak dipakai. Menarik image sembarangan sama saja dengan menjalankan kode pihak yang tidak kita kenal di mesin sendiri. Chapter ini mengajarkan dua keterampilan yang berurutan: menemukan kandidat image dengan docker search, lalu menilai kualitasnya sebelum satu byte pun diunduh.

Perintah docker search menanyakan indeks Docker Hub langsung dari terminal, tanpa membuka browser dan tanpa mengunduh satu layer pun. Argumennya adalah kata kunci yang dicocokkan ke nama repositori dan deskripsinya. Mari kita cari image nginx — salah satu kata kunci paling populer di Docker Hub:

bash
$ docker search nginx

Output yang Dihasilkan:

text
NAME                          DESCRIPTION                                   STARS     OFFICIAL   AUTOMATED
nginx                         Official build of Nginx.                      20432     [OK]
jwilder/nginx-proxy           Automated nginx proxy for docker containers   6184
bitnami/nginx                 Bitnami container image for NGINX             1248                 [OK]
webdevops/php-nginx           Nginx with PHP-FPM                            1187                 [OK]
nginxinc/nginx-unprivileged   Nginx image adapted for unprivileged users    926
dperson/nginx-certbot         Nginx with certbot certificate automation     47
...

Baris ... menandai output yang dipotong: docker search sebenarnya mengembalikan hingga 25 baris secara bawaan. Mari kita telaah arti kelima kolomnya:

  1. NAME — nama repositori. Nama tanpa garis miring seperti nginx adalah image resmi di namespace library/; nama dengan prefiks seperti bitnami/nginx berarti repositori milik akun atau organisasi bitnami.
  2. DESCRIPTION — deskripsi singkat yang ditulis pemilik repositori; berguna untuk mengenali fungsi image di balik nama yang singkat.
  3. STARS — jumlah bintang, semacam tombol suka dari pengguna Docker Hub. Bintang mengukur popularitas, bukan kualitas kode ataupun keamanan.
  4. OFFICIAL — tanda [OK] berarti image resmi (Docker Official Images): melewati review, mengikuti praktik terbaik, dan diperbarui rutin oleh tim pemeliharanya.
  5. AUTOMATED — tanda [OK] berarti image dibangun oleh fitur build otomatis lama Docker Hub dari Dockerfile yang tersambung ke repositori kode; fitur ini sudah jarang dipakai sehingga kolomnya kerap kosong pada image modern.

Pencarian ini bekerja pada tingkat repositori, bukan tag. Kata kunci nginx menemukan repositori bernama nginx beserta kerabatnya, tetapi tidak ada cara mencari “nginx versi 1.29” atau memfilter berdasarkan tag — tag seperti 1.29-alpine atau 1.29.4 tidak diindeks oleh docker search. Untuk menjelajah tag, buka halaman repositori di Docker Hub melalui browser, misalnya https://hub.docker.com/_/nginx, lalu pilih tab Tags: di situ tercantum seluruh tag beserta ukuran unduhan, waktu pembaruan terakhir, dan arsitektur yang didukung. Karena docker search tidak mengunduh apa pun, menjalankannya berulang kali tidak membebani kuota pull Docker Hub yang kita bedah pada pembuka Chapter Menarik Image.

Menyaring Hasil dengan –filter #

Output mentah 25 baris kurang praktis untuk dibaca. Flag --filter memangkasnya langsung dari terminal, dan beberapa filter bisa dipakai sekaligus dengan logika AND. Penyaringan yang paling sering dipakai: hanya image resmi, hanya image dengan bintang di atas ambang tertentu, atau keduanya digabung.

Penyaringan pertama menampilkan hanya image resmi:

bash
$ docker search --filter is-official=true nginx

Output yang Dihasilkan:

text
NAME    DESCRIPTION                STARS     OFFICIAL   AUTOMATED
nginx   Official build of Nginx.   20432     [OK]

Hanya satu baris yang lolos: image resmi nginx. Repositori komunitas seperti jwilder/nginx-proxy dan bitnami/nginx tersaring keluar bukan karena jelek, melainkan karena tidak mengikuti program Docker Official Images — kolom OFFICIAL mereka kosong.

Penyaringan kedua memakai jumlah bintang sebagai ambang:

bash
$ docker search --filter stars=100 nginx

Output yang Dihasilkan:

text
NAME                          DESCRIPTION                                   STARS     OFFICIAL   AUTOMATED
nginx                         Official build of Nginx.                      20432     [OK]
jwilder/nginx-proxy           Automated nginx proxy for docker containers   6184
bitnami/nginx                 Bitnami container image for NGINX             1248                 [OK]
webdevops/php-nginx           Nginx with PHP-FPM                            1187                 [OK]
nginxinc/nginx-unprivileged   Nginx image adapted for unprivileged users    926
...

Mari kita telaah perbedaannya dengan pencarian pertama: baris dperson/nginx-certbot hilang karena bintangnya hanya 47, di bawah ambang 100. Filter stars=N hanya menampilkan repositori dengan jumlah bintang minimal N, sementara baris lain yang lolos tampil seperti biasa — output tetap dipotong karena masih ada repositori lain berbintang di atas 100 hingga batas 25 hasil.

Dua filter juga bisa digabung dalam satu perintah:

bash
$ docker search --filter is-official=true --filter stars=100 nginx

Output yang Dihasilkan:

text
NAME    DESCRIPTION                STARS     OFFICIAL   AUTOMATED
nginx   Official build of Nginx.   20432     [OK]

Hasilnya kembali satu baris karena kedua filter bekerja dengan logika AND: kandidat harus resmi sekaligus berbintang minimal 100. Bila kelak ada image resmi dengan bintang di bawah ambang, image tersebut akan tersaring keluar dari kombinasi ini — logika AND memangkas dari dua arah sekaligus.

Membatasi Jumlah Hasil dengan –limit #

Secara bawaan, docker search mengembalikan maksimal 25 hasil. Flag --limit mengubah angka tersebut menjadi lebih kecil untuk sekilas pandang, atau dinaikkan hingga batas atas yang diizinkan, yakni 100:

bash
$ docker search --limit 3 nginx

Output yang Dihasilkan:

text
NAME                  DESCRIPTION                                   STARS     OFFICIAL   AUTOMATED
nginx                 Official build of Nginx.                      20432     [OK]
jwilder/nginx-proxy   Automated nginx proxy for docker containers   6184
bitnami/nginx         Bitnami container image for NGINX             1248                 [OK]

Tiga baris teratas tampil sesuai permintaan. Kombinasi --limit dengan --filter juga sah dilakukan — misalnya hanya tiga image resmi teratas — dan pola seperti ini nyaman dipakai di skrip yang membutuhkan hasil pendek dan terprediksi jumlahnya.

Menilai Kualitas Image Sebelum Dipakai #

Hasil pencarian hanyalah kandidat; keputusan akhir tetap milik kita. Kolom STARS dan OFFICIAL pada docker search adalah dua sinyal pertama, tetapi penilaian yang lebih matang memeriksa lima sinyal berikut sebelum image dipakai di proyek.

SinyalCara membacanya
Image resmi di namespace library/melewati review program Docker Official Images dan diperbarui rutin; pilihan pertama untuk perangkat lunak populer
Publisher Verifiedakun penerbit menjalani verifikasi Docker Hub; organisasi di balik image terbukti memang pemilik sahnya
Jumlah bintangpopularitas dalam jangka panjang; ribuan bintang menandakan basis pemakai luas, bukan jaminan aman
Terakhir diperbaruiimage yang tak disentuh bertahun-tahun hampir pasti membawa kerentanan lama; utamakan yang aktif dipelihara
Dockerfile publiksumber build bisa dibaca siapa pun sehingga isi image bisa diaudit sebelum dipakai

Sinyal-sinyal di atas memangkas risiko, tetapi tidak menghapusnya. Ekosistem image publik berulang kali terbukti menjadi ladang penyebaran malware, dan para penyerang paling sering memanfaatkan kecerobohan membaca nama.

Dengan kata kunci, filter, dan daftar sinyal di tangan, kita sudah bisa menyusun daftar kandidat image yang layak dipakai. Langkah berikutnya jelas: mengunduh kandidat itu ke penyimpanan lokal — dan di sana menanti kejutan baik berupa layer yang bisa dibagikan, serta kejutan lain berupa rate limit yang perlu dikelola. Chapter Menarik Image membedah proses itu baris demi baris.

Referensi #