Apa itu Docker?

Docker adalah platform perangkat lunak open source yang digunakan untuk membuat, meng-deploy, dan mengelola container aplikasi virtualisasi pada sistem operasi (OS) yang sama, lengkap dengan ekosistem tools pendukung. Teknologi container Docker pertama kali diperkenalkan pada tahun 2013. Pada saat itu juga, Docker Inc. didirikan untuk mendukung edisi komersial dari perangkat lunak manajemen container dan menjadi sponsor utama untuk versi open source-nya. Bisnis Docker Enterprise kemudian diakuisisi oleh Mirantis pada November 2019.

Docker memberikan cara yang lebih cepat dan efisien bagi developer software untuk membangun dan menguji bagian-bagian aplikasi yang sudah dikontainerisasi. Ini memungkinkan developer dalam satu tim untuk membangun banyak bagian software secara bersamaan. Setiap container berisi semua elemen yang dibutuhkan untuk membangun sebuah komponen software dan memastikan proses build, test, dan deployment berjalan lancar. Docker juga mendukung portabilitas ketika container yang sudah dikemas perlu dipindahkan ke server atau lingkungan yang berbeda.

Cara kerja Docker

Docker bertugas untuk mengemas, menyediakan, dan menjalankan container. Teknologi container ini tersedia melalui sistem operasi: sebuah container mengemas layanan atau fungsi aplikasi beserta semua library, file konfigurasi, dependensi, dan bagian serta parameter penting lainnya untuk bisa beroperasi. Setiap container berbagi layanan dari satu OS dasar yang sama. Gambar Docker (Docker image) berisi semua dependensi yang dibutuhkan untuk mengeksekusi kode dalam container, sehingga container yang dipindahkan antar lingkungan Docker dengan OS yang sama bisa tetap berjalan tanpa perubahan.

Docker menggunakan isolasi sumber daya di kernel OS untuk menjalankan banyak container di satu OS yang sama. Ini berbeda dengan mesin virtual (VM), yang mengenkapsulasi seluruh OS beserta kode eksekusi di atas lapisan sumber daya hardware yang diabstraksikan.

Docker awalnya dibuat untuk platform Linux, tapi kemudian diperluas agar mendukung OS lain seperti Microsoft Windows dan Apple OS X. Versi Docker juga tersedia untuk Amazon Web Services (AWS) dan Azure dari Microsoft.

Kasus penggunaan utama Docker

Meskipun secara teknis Docker bisa digunakan untuk membangun dan meng-deploy aplikasi apa pun, teknologi ini paling berguna untuk:

  • Continuous deployment software. Teknologi Docker dan praktik DevOps yang kuat memungkinkan aplikasi berbasis container dideploy hanya dalam hitungan detik, beda dengan aplikasi monolitik tradisional yang butuh waktu lama. Update atau perubahan pada kode aplikasi bisa langsung diterapkan dan di-deploy cepat menggunakan container dalam pipeline continuous integration/continuous delivery (CI/CD).
  • Membangun arsitektur berbasis microservices. Saat arsitektur berbasis microservices lebih menguntungkan daripada aplikasi monolitik tradisional, Docker jadi pilihan ideal. Developer bisa membangun dan meng-deploy banyak microservice, masing-masing dalam container-nya sendiri, lalu menggabungkannya menjadi satu aplikasi utuh dengan bantuan tool orkestrasi container seperti Docker Swarm.
  • Migrasi aplikasi legacy ke infrastruktur containerized. Tim development yang ingin memodernisasi aplikasi legacy bisa menggunakan Docker untuk memindahkan aplikasi tersebut ke infrastruktur berbasis container.
  • Mendukung aplikasi hybrid cloud dan multi-cloud. Container Docker beroperasi sama, baik di lingkungan on-premises maupun berbasis cloud computing. Ini memungkinkan aplikasi Docker dipindahkan dengan mudah ke berbagai vendor cloud untuk kebutuhan produksi maupun testing. Aplikasi Docker yang memanfaatkan beberapa layanan cloud bisa disebut hybrid cloud atau multi-cloud.

Arsitektur Docker: Komponen dan Tools

Docker Community Edition adalah versi open source, sedangkan Docker Enterprise Edition adalah versi komersial yang ditawarkan oleh Docker Inc. Docker terdiri dari berbagai komponen dan tools yang membantu membuat, memverifikasi, dan mengelola container.

Docker Engine adalah teknologi dasar yang menangani tugas dan alur kerja pembuatan aplikasi berbasis container. Engine ini membuat sebuah proses daemon server-side yang meng-host image, container, jaringan, dan volume storage.

Daemon ini juga menyediakan antarmuka command-line interface (CLI) sisi klien untuk berinteraksi dengan daemon melalui Docker API. Container yang dibuat Docker ditulis dalam file bernama Dockerfile, sedangkan file Docker Compose mendefinisikan komposisi beberapa komponen dalam container Docker.

Komponen dan tools lain dalam arsitektur Docker meliputi:

  • Docker Hub. Ini adalah layanan software-as-a-service yang memungkinkan pengguna mempublikasikan dan berbagi aplikasi berbasis container melalui library umum. Layanan ini memiliki lebih dari 100.000 aplikasi publik dan mendukung registry container publik maupun privat.
  • Trusted Registry. Mirip seperti Docker Hub, tapi dengan lapisan tambahan berupa kontrol dan kepemilikan terhadap penyimpanan dan distribusi image container.
  • Docker Swarm. Ini adalah bagian dari Docker Engine yang mendukung load balancing cluster Docker. Sumber daya dari beberapa host Docker dipool di dalam Swarm untuk bertindak sebagai satu kesatuan, sehingga deployment container bisa dengan cepat diskalakan ke banyak host.
  • Universal Control Plane. Ini adalah antarmuka manajemen cluster dan aplikasi berbasis web yang terpadu.
  • Compose. Tool ini digunakan untuk mengonfigurasi layanan aplikasi multi-container, memantau status container, streaming output log, dan menjalankan proses single-instance.
  • Content Trust. Tool keamanan ini digunakan untuk memverifikasi integritas registry Docker jarak jauh menggunakan tanda tangan pengguna dan tag image.

Versi dan Fitur Utama Docker

Docker Enterprise 1.13, dirilis pada Januari 2017, menambahkan kompatibilitas CLI untuk menangani daemon Docker yang lebih lama, serta beberapa perintah baru untuk mengelola ruang disk dan data dengan lebih efisien. Ada juga beberapa perbaikan keamanan dan bug.

Peningkatan lain di Docker Enterprise selama 2017 termasuk dukungan native untuk Kubernetes selain mode Swarm milik Docker sendiri. Dukungan untuk IBM mainframe dan Windows Server 2016 juga ditambahkan, memungkinkan penggunaan cluster dan aplikasi campuran di berbagai sistem operasi.

Docker Enterprise Edition 2.0, yang rilis pada April 2018, membawa dukungan multi-OS dan multi-cloud untuk lingkungan hybrid.

Docker Enterprise 3.0, yang keluar tahun 2019, menambahkan fitur upgrade cluster container blue-green dan kemampuan untuk membangun aplikasi multi-service berbasis container yang bisa dijalankan dari mana saja. Fitur-fitur baru lainnya meliputi:

  • Docker Desktop Enterprise, memungkinkan developer meng-deploy aplikasi ke lingkungan yang sesuai standar Kubernetes dengan integrasi pipeline otomatis dan manajemen IT terpusat.
  • Docker Applications, kumpulan tools produktivitas untuk developer.
  • Docker Kubernetes Service, yang mengotomasi manajemen dan skala aplikasi berbasis Kubernetes serta menyediakan fitur keamanan, kontrol akses, dan manajemen siklus hidup otomatis.
  • Docker Enterprise as a Service, layanan container enterprise yang dikelola penuh.

Masa depan Docker

Docker terus berkembang seiring dunia pengembangan aplikasi modern makin mengadopsi arsitektur berbasis container. Docker dan teknologi kontainerisasi lainnya sekarang menjadi bagian penting dalam pengembangan aplikasi berbasis cloud dan edge computing.
Tren-tren penting yang mempengaruhi masa depan Docker antara lain:

  • Integrasi dengan Kubernetes. Walaupun Docker Swarm masih digunakan, Kubernetes telah menjadi standar de facto untuk orkestrasi container. Docker tetap mendukung Kubernetes dan terus meningkatkan integrasinya.
  • Peningkatan keamanan container. Dengan semakin banyaknya aplikasi penting yang dijalankan dalam container, keamanan menjadi prioritas utama. Docker menambahkan fitur seperti Content Trust dan lebih fokus pada kontrol akses berbasis peran (role-based access control/RBAC).
  • Adopsi di edge computing. Karena container ringan dan portabel, Docker banyak digunakan untuk menjalankan aplikasi di edge devices — seperti IoT, perangkat mobile, dan lokasi remote.
  • Pertumbuhan DevSecOps. Docker memfasilitasi integrasi keamanan sejak tahap awal pengembangan, mendukung praktik DevSecOps (Development, Security, and Operations) untuk membangun software yang lebih aman dari awal.

Kesimpulan

Docker merevolusi cara aplikasi modern dibangun, dikirim, dan dijalankan. Dengan mengemas aplikasi dan semua dependensinya ke dalam container yang portabel, Docker memungkinkan tim pengembang untuk bergerak lebih cepat, mengadopsi arsitektur microservices, mempercepat deployment ke berbagai cloud, dan meningkatkan efisiensi infrastruktur TI.
Meskipun tantangan seperti orkestrasi skala besar dan keamanan tetap ada, komunitas open source yang besar dan inovasi berkelanjutan dari Docker dan ekosistem sekitarnya memastikan teknologi ini akan terus relevan dalam dunia pengembangan perangkat lunak di masa depan.

Kelebihan dan Kekurangan Docker

Docker muncul sebagai platform standar de facto untuk dengan cepat menyusun, membuat, meng-deploy, menskalakan, dan mengelola container di berbagai host Docker. Selain mendukung pengembangan aplikasi berbasis container yang efisien, beberapa kelebihan Docker lainnya termasuk:

  • Tingkat portabilitas yang tinggi, sehingga pengguna bisa mendaftarkan dan membagikan container ke berbagai host.
  • Penggunaan sumber daya yang lebih rendah.
  • Proses deployment yang lebih cepat dibandingkan VM (Virtual Machine).

Namun, Docker juga punya beberapa tantangan potensial:

  • Jumlah container di lingkungan enterprise bisa sulit dikelola dengan efisien.
  • Penggunaan container yang berkembang dari sekadar virtual hosting granular menjadi orkestrasi komponen aplikasi dan sumber daya. Distribusi dan koneksi antar komponen aplikasi — yang bisa melibatkan ratusan container sementara — menjadi tantangan besar.

Dalam beberapa tahun terakhir, Docker mulai tergeser oleh Kubernetes untuk urusan orkestrasi container. Tapi, kebanyakan implementasi Kubernetes sebenarnya tetap menjalankan Docker di belakang layar.

Keamanan Docker

Masalah keamanan sudah jadi isu klasik untuk container — dan secara otomatis juga untuk Docker. Walaupun ada isolasi logis yang cukup baik, container tetap berbagi OS host. Artinya, serangan atau celah di OS bisa berpotensi mengancam semua container yang berjalan di atasnya. Kerentanan ini bisa melibatkan akses dan otorisasi, image container, serta lalu lintas jaringan antar container. Docker images kadang-kadang masih mempertahankan akses root ke host, apalagi kalau bawaan dari vendor pihak ketiga.
Docker secara rutin menambahkan berbagai peningkatan keamanan ke platform-nya, seperti:

  • Pemindaian image (image scanning)
  • Proses secure node introduction
  • Identitas node menggunakan kriptografi
  • Segmentasi cluster
  • Distribusi rahasia (secret) yang aman

Manajemen rahasia (secrets management) di Docker juga tersedia di Kubernetes, serta di tool-tool seperti CISOfy Lynis, D2iQ, dan HashiCorp Vault. Beberapa tools scanning keamanan container juga bermunculan, contohnya dari Aqua Security dan NeuVector milik SUSE.
Sebagian organisasi memilih menjalankan container di dalam VM, walaupun sebenarnya container tidak butuh VM. Ini memang tidak menghilangkan masalah shared resource, tapi setidaknya bisa mengurangi dampaknya kalau terjadi celah keamanan.

Alternatif lain adalah menggunakan micro VM (VM kecil), yang overhead-nya lebih rendah dibandingkan VM biasa. Contohnya Amazon Firecracker, gVisor, dan Kata Containers. Yang paling penting, cara terbaik untuk menjaga keamanan container adalah:

  • Tidak mengekspos host container langsung ke internet.
  • Selalu menggunakan container image dari sumber terpercaya.

Keamanan juga jadi alasan utama kenapa alternatif Docker dulu sempat naik daun, misalnya CoreOS rkt (dibaca: rocket). Tapi seiring waktu, Docker terus memperbaiki fitur keamanannya, sementara alternatif seperti rkt mulai kehilangan momentum.

Alternatif Docker, Ekosistem, dan Standarisasi

Ada banyak tools pihak ketiga yang bekerja sama dengan Docker untuk urusan manajemen container dan clustering. Ekosistem Docker ini campuran antara proyek open source dan teknologi komersial, seperti Kubernetes open source, OpenShift (Kubernetes versi Red Hat), dan Kubernetes distribusi Canonical yang disebut “pure upstream Kubernetes”.
Docker bersaing dengan platform container aplikasi proprietary seperti VMware vApp, serta tools abstraksi infrastruktur seperti Chef.

Walaupun Docker bukan satu-satunya platform container, tetap saja dia nama paling besar di dunia container saat ini. CoreOS rkt dikenal karena fokus ke keamanan dengan dukungan SELinux dan trusted platform management. Red Hat (sekarang bagian dari IBM) dulu sempat membeli CoreOS dan mengintegrasikannya ke dalam arsitektur OpenShift. Namun sekarang, proyek rkt sudah diarsipkan di Cloud Native Computing Foundation.

Beberapa platform container besar lainnya:

  • OpenVZ, salah satu sistem container paling tua yang dikembangkan oleh Virtuozzo. OpenVZ menggabungkan ukuran kecil dan kecepatan container standar dengan tambahan lapisan keamanan OS yang terabstraksi.

Docker juga punya peran penting dalam inisiatif standarisasi format dan distribusi container lewat Open Container Initiative (OCI). Lebih dari 40 perusahaan bergabung di OCI, termasuk AWS, Intel, dan Red Hat.

Terakhir, Windows Server 2019 dan Windows 10 sekarang sudah mendukung container secara langsung melalui fitur Windows Container yang berbasis teknologi Docker.

Sejarah Perusahaan Docker

Docker pertama kali dirilis sebagai platform open source pada Maret 2013 dengan nama dotCloud. Docker Engine 1.0 diluncurkan pada tahun 2014. Tahun 2016, Docker mengintegrasikan orkestrasi Swarm ke dalam Docker Engine versi 1.12. Awalnya, tujuan Docker adalah mengembangkan bisnis berbasis Containers-as-a-Service (CaaS), tapi kemudian rencana ini tersaingi oleh naiknya popularitas Kubernetes.
Docker Enterprise diluncurkan pada Maret 2017. Tahun yang sama, Docker juga menyumbangkan tool “containerd” ke Cloud Native Computing Foundation.

Pada November 2019, Mirantis mengakuisisi produk dan IP Docker yang terkait dengan Docker Engine. Ini termasuk Docker Enterprise, Docker Trusted Registry, Docker Universal Control Plane, Docker CLI, serta produk Docker Swarm komersial. Awalnya Mirantis berencana fokus ke Kubernetes dan mengurangi dukungan untuk Docker Swarm, tapi kemudian mereka mengonfirmasi tetap akan mendukung dan mengembangkan Swarm.

Sisa perusahaan Docker Inc. sekarang fokus pada Docker Desktop dan Docker Hub.

Sejak 2021, Docker Desktop tidak lagi gratis untuk penggunaan enterprise. Penggunaan Docker Desktop di enterprise sekarang harus lewat paket berlangganan berbayar. Tapi, untuk individu dan bisnis kecil, versi gratisnya tetap tersedia.

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *