Skip to main content

Bab 2: Docker dan Ekosistem Container

Bab ini memperkenalkan kamu pada Docker dan beberapa standar serta proyek paling penting yang membentuk ekosistem container. Tujuannya adalah meletakkan fondasi yang akan kita bangun dan perdalam di bab-bab selanjutnya.

Bab ini terdiri dari dua bagian utama:

  • Docker
  • Standar dan proyek terkait container

Docker

Docker berada di jantung ekosistem container. Namun, istilah Docker sendiri bisa memiliki dua makna:

  1. Platform Docker
  2. Docker, Inc.

Platform Docker adalah kumpulan teknologi yang dikemas untuk membangun, mengelola, dan mengorkestrasi container. Docker, Inc. adalah perusahaan yang menciptakan platform Docker dan terus menjadi penggerak utama di balik pengembangan fitur-fitur barunya.

Mari kita bahas lebih dalam.

Docker, Inc.

Docker, Inc. adalah perusahaan teknologi yang berbasis di Palo Alto dan didirikan oleh developer serta entrepreneur Amerika kelahiran Prancis, Solomon Hykes. Saat ini, Solomon sudah tidak lagi berada di perusahaan tersebut.

Perusahaan ini awalnya berdiri sebagai penyedia platform as a service (PaaS) bernama dotCloud. Di balik layar, dotCloud menjalankan layanannya di atas container dan memiliki tool internal untuk membantu proses deployment dan manajemen container tersebut. Tool internal ini diberi nama Docker.

Kata Docker berasal dari istilah Inggris yang merujuk pada pekerja pelabuhan (dock worker), yaitu orang yang memuat dan menurunkan kargo dari kapal. Pada tahun 2013, dotCloud menghentikan bisnis PaaS-nya yang kurang berkembang, melakukan rebranding menjadi Docker, Inc., dan memfokuskan diri untuk membawa Docker dan container ke seluruh dunia.

Teknologi Docker

Platform Docker memudahkan proses membangun, membagikan, dan menjalankan container.

Secara garis besar, platform Docker terdiri dari dua bagian utama:

  • CLI (client)
  • Engine (server)

CLI adalah tool command-line docker yang sudah familiar untuk men-deploy dan mengelola container. CLI mengubah perintah sederhana menjadi request API dan mengirimkannya ke engine.

Engine mencakup semua komponen sisi server yang bertugas menjalankan dan mengelola container.

Gambar 2.1 menunjukkan arsitektur tingkat tinggi. Client dan engine bisa berjalan di host yang sama atau terhubung melalui jaringan.

Di bab-bab selanjutnya, kamu akan melihat bahwa client dan engine sebenarnya cukup kompleks dan terdiri dari banyak komponen kecil dengan fungsi khusus. Gambar 2.2 memberikan gambaran kompleksitas di balik engine. Namun, semua kerumitan ini disembunyikan oleh client sehingga kamu tidak perlu memikirkannya.

Sebagai contoh, kamu cukup mengetik perintah docker, CLI akan mengonversinya menjadi request API dan mengirimkannya ke daemon, lalu daemon akan mengurus semua sisanya.

Mari kita lihat beberapa standar dan lembaga yang menaunginya.

Standar dan Proyek Terkait Container

Ada beberapa standar penting dan lembaga (governance bodies) yang memengaruhi perkembangan container dan ekosistemnya. Beberapa di antaranya adalah:

  • OCI
  • CNCF
  • Moby Project

Open Container Initiative (OCI)

Open Container Initiative (OCI) adalah lembaga yang bertanggung jawab atas standar.

OCI berada di bawah naungan Linux Foundation dan dibentuk pada awal perkembangan ekosistem container, ketika sebagian orang di perusahaan bernama CoreOS merasa tidak nyaman dengan dominasi Docker. Sebagai respons, CoreOS membuat standar terbuka bernama appc yang mendefinisikan spesifikasi seperti format image dan container runtime. Mereka juga membuat implementasi referensi bernama rkt (dibaca “rocket”).

Standar appc memiliki pendekatan yang berbeda dengan Docker, dan hal ini menempatkan ekosistem dalam posisi sulit karena adanya dua standar yang saling bersaing.

Meskipun persaingan biasanya hal yang baik, persaingan standar justru sering berdampak buruk karena menimbulkan kebingungan dan memperlambat adopsi. Untungnya, para pemain utama di ekosistem akhirnya berkumpul dan membentuk OCI sebagai dewan yang netral untuk mengelola standar container. Hal ini memungkinkan proyek appc ditutup dan seluruh spesifikasi container ditempatkan di bawah tata kelola OCI.

Pada saat buku ini ditulis, OCI mengelola tiga standar utama yang disebut specs:

  • image-spec
  • runtime-spec
  • distribution-spec

Standar OCI sering dijelaskan dengan analogi rel kereta api:

Ketika ukuran dan properti rel kereta distandardisasi, para pelaku industri perkeretaapian memiliki kepercayaan diri bahwa kereta, gerbong, sistem sinyal, peron, dan produk lainnya akan cocok dengan rel tersebut. Tidak ada yang menginginkan standar ukuran rel yang saling bersaing.

Spesifikasi OCI melakukan hal yang sama untuk ekosistem container, dan sejak itu ekosistem ini berkembang pesat. Docker juga telah banyak berubah sejak pembentukan OCI, dan semua versi modern Docker mengimplementasikan ketiga spesifikasi OCI tersebut. Contohnya:

  • Docker builder (BuildKit) menghasilkan image yang sesuai standar OCI
  • Docker menggunakan runtime yang kompatibel dengan OCI untuk membuat container yang juga sesuai OCI
  • Docker Hub mengimplementasikan spesifikasi distribusi OCI dan merupakan registry yang patuh terhadap standar OCI

Docker, Inc. dan banyak perusahaan lain juga memiliki perwakilan yang duduk di technical oversight board (TOB) OCI.

Cloud Native Computing Foundation (CNCF)

Cloud Native Computing Foundation (CNCF) adalah proyek Linux Foundation lainnya yang sangat berpengaruh dalam ekosistem container. CNCF didirikan pada tahun 2015 dengan tujuan untuk “memajukan teknologi container dan menjadikan komputasi cloud-native sebagai hal yang umum”.

Alih-alih membuat dan mengelola spesifikasi container, CNCF menjadi rumah bagi berbagai proyek penting seperti Kubernetes, containerd, Notary, Prometheus, Cilium, dan masih banyak lagi.

Ketika dikatakan CNCF “menjadi host” bagi proyek-proyek ini, artinya CNCF menyediakan ruang, struktur, dan dukungan agar proyek dapat berkembang dan matang. Setiap proyek CNCF akan melalui tiga fase berikut:

  • Sandbox
  • Incubating
  • Graduated

Setiap fase meningkatkan tingkat kematangan proyek dengan menuntut standar yang lebih tinggi dalam hal tata kelola, dokumentasi, audit, pelacakan kontribusi, pemasaran, keterlibatan komunitas, dan lainnya. Misalnya, proyek yang baru diterima sebagai sandbox mungkin memiliki ide dan teknologi yang hebat, tetapi masih membutuhkan bantuan untuk membangun tata kelola yang kuat. CNCF membantu menyediakan semua itu.

Proyek yang sudah mencapai status Graduated dianggap siap untuk produksi dan dijamin memiliki tata kelola yang kuat serta praktik terbaik.

Jika kamu kembali melihat Gambar 2.2, kamu akan melihat bahwa Docker menggunakan setidaknya dua teknologi CNCF, yaitu containerd dan Notary.

Moby Project

Docker menciptakan Moby Project sebagai ruang yang dipimpin oleh komunitas bagi para developer untuk membangun tool khusus dalam pembuatan platform container.

Para pembuat platform dapat memilih tool Moby yang mereka butuhkan untuk membangun platform container mereka. Mereka bahkan bisa menyusun platform menggunakan kombinasi tool dari Moby, tool internal, dan tool dari proyek lain.

Moby Project awalnya dibuat oleh Docker, Inc., tetapi kini memiliki anggota dari berbagai perusahaan seperti Microsoft, Mirantis, dan Nvidia.

Platform Docker sendiri dibangun menggunakan tool dari berbagai proyek, termasuk Moby Project, CNCF, dan OCI.

Ringkasan

Bab ini memperkenalkan kamu pada Docker dan beberapa pengaruh utama dalam ekosistem container.

Docker, Inc. adalah perusahaan teknologi yang berbasis di Palo Alto dan telah mengubah cara kita membangun perangkat lunak. Mereka adalah pelopor dan penggerak awal revolusi container modern.

Platform Docker berfokus pada menjalankan dan mengelola container aplikasi. Docker dapat berjalan di Linux dan Windows, bisa diinstal hampir di mana saja, serta menyediakan berbagai produk gratis maupun berbayar.

Open Container Initiative (OCI) mengelola standar container tingkat rendah dan memelihara spesifikasi untuk runtime, format image, dan registry.

CNCF menyediakan dukungan untuk proyek-proyek cloud-native penting dan membantu mereka berkembang menjadi tool siap produksi.

Moby Project menjadi rumah bagi tool tingkat rendah yang dapat digunakan developer untuk membangun platform container.