Docker adalah platform sumber terbuka yang memungkinkan pengembang untuk membangun, menerapkan, menjalankan, memperbarui, dan mengelola kontainer.
Kontainer adalah komponen standar yang dapat dieksekusi yang menggabungkan kode sumber aplikasi dengan pustaka sistem operasi (OS) dan dependensi yang diperlukan untuk menjalankan kode tersebut di lingkungan apa pun.
Perlu dicatat bahwa ketika orang berbicara tentang Docker, mereka biasanya mengacu pada Docker Engine, runtime untuk membangun dan menjalankan kontainer. Docker juga mengacu pada Docker, Inc.1, perusahaan yang menjual versi komersial Docker. Hal ini juga berkaitan dengan proyek sumber terbuka Docker2, yang mana Docker, Inc. dan banyak organisasi dan individu lainnya berkontribusi.
Kontainer menyederhanakan pengembangan dan pengiriman aplikasi terdistribusi. Mereka menjadi semakin populer karena pergeseran organisasi ke pengembangan cloud native dan lingkungan hybrid multicloud . Pengembang dapat membuat kontainer tanpa Docker dengan bekerja langsung dengan kemampuan yang dibangun di Linux dan sistem operasi lainnya, tetapi Docker membuat kontainerisasi lebih cepat dan lebih mudah. Saat artikel ini ditulis, Docker melaporkan bahwa lebih dari 20 juta pengembang menggunakan platform ini setiap bulannya3. Seperti teknologi kontainerisasi lainnya, termasuk Kubernetes, Docker memainkan peran penting dalam pengembangan perangkat lunak modern, khususnya arsitektur layanan mikro.
Berbeda dari pendekatan monolitik tradisional dari aplikasi besar yang dipasangkan erat, layanan mikro menyediakan kerangka kerja arsitektur cloud native. Kerangka kerja ini menyusun satu aplikasi dari banyak komponen atau layanan yang lebih kecil, yang dipasangkan secara longgar dan dapat diterapkan secara independen. Setiap layanan dapat dikontainerisasi menggunakan Docker, sehingga menyederhanakan penerapan dan memungkinkan tim untuk meluncurkan versi baru dan menskalakan aplikasi sesuai kebutuhan.
Kontainer dimungkinkan oleh isolasi proses dan kemampuan virtualisasi yang dibangun ke dalam kernel Linux. Kemampuan ini termasuk kelompok kontrol (Cgroups) untuk mengalokasikan sumber daya di antara proses dan namespace untuk membatasi akses proses atau visibilitas ke sumber daya atau area lain dari sistem.
Kontainer memungkinkan beberapa komponen aplikasi untuk berbagi sumber daya dari satu contoh sistem operasi host. Pembagian ini mirip dengan cara hypervisor memperbolehkan beberapa virtual machines (VM) membagikan unit pemrosesan pusat (CPU), memori, dan sumber daya lainnya pada server perangkat keras tunggal.
Teknologi kontainer menawarkan semua fungsi dan manfaat virtual machines (VM) - termasuk isolasi aplikasi dan skalabilitas yang hemat biaya, serta manfaat lain yang signifikan:
Organisasi yang menggunakan kontainer melaporkan berbagai manfaat lain, termasuk peningkatan kualitas aplikasi, respons yang lebih cepat terhadap perubahan pasar, dan masih banyak lagi.
Docker adalah alat kontainerisasi yang paling banyak digunakan, dengan pangsa pasar 82,84%.4 Docker sangat populer saat ini sehingga “Docker” dan “kontainer” digunakan secara bergantian. Namun, teknologi terkait kontainer telah tersedia selama bertahun-tahun, bahkan puluhan tahun5, sebelum Docker dirilis secara publik sebagai sumber terbuka pada 2013.
Yang paling menonjol, pada tahun 2008, LinuXContainers (LXC) diimplementasikan dalam kernel Linux, yang sepenuhnya memungkinkan virtualisasi untuk satu instance Linux. Meskipun LXC masih digunakan sampai sekarang, teknologi kernel Linux yang lebih baru juga tersedia. Ubuntu, sistem operasi Linux sumber terbuka modern, juga menyediakan kemampuan ini. Docker memungkinkan pengembang mengakses kemampuan kontainerisasi native ini menggunakan perintah sederhana dan menjadikannya otomatis melalui antarmuka pemrograman aplikasi (API).
Ada banyak keuntungan menggunakan Docker dibandingkan LXC yang lebih lama dan kurang kompatibel.
Meskipun kontainer LXC sering kali merujuk pada konfigurasi khusus mesin, kontainer Docker berjalan tanpa modifikasi di seluruh desktop, pusat data, atau lingkungan komputasi cloud.
Dengan Docker, pengembang dapat menggabungkan beberapa proses dalam satu kontainer. Fleksibilitas ini memungkinkan pembangunan aplikasi yang dapat terus berjalan meskipun salah satu bagiannya dihentikan untuk pembaruan atau perbaikan.
Docker dapat secara otomatis membangun kontainer berdasarkan kode sumber aplikasi.
Docker dapat melacak versi image kontainer, memutar kembali ke versi sebelumnya dan melacak siapa yang membuat versi dan bagaimana. Docker juga dapat mengunggah hanya delta (rilis parsial modul perangkat lunak) antara versi yang sudah ada dan yang baru.
Pengembang dapat mengakses registri sumber terbuka yang berisi ribuan kontainer kontribusi dari pengguna.
Saat ini, kontainerisasi Docker juga berfungsi dengan Microsoft Windows Server dan Apple macOS. Developer dapat menjalankan kontainer Docker pada sistem operasi apa pun. Semua penyedia layanan cloud (CSP) terkemuka, termasuk Amazon Web Services (AWS), Microsoft Azure, Google Cloud Services, dan IBM Cloud, menawarkan layanan khusus untuk membantu pengembang membangun, menerapkan, dan menjalankan aplikasi yang dikontainerisasi dengan Docker.
Docker menggunakan arsitektur klien/server. Berikut ini adalah perincian komponen inti yang terkait dengan Docker, bersama dengan istilah dan alat Docker lainnya.
Host Docker: Host Docker adalah mesin fisik atau virtual machine yang menjalankan Linux (atau OS lain yang kompatibel dengan Docker-Engine).
Docker Engine: Docker Engine adalah aplikasi klien/server yang terdiri atas daemon Docker, API Docker yang berinteraksi dengan daemon, dan antarmuka baris perintah (CLI) yang berbicara dengan daemon.
Daemon Docker: Daemon Docker adalah layanan yang membuat dan mengelola citra Docker, dengan menggunakan perintah dari klien. Pada dasarnya daemon Docker berfungsi sebagai pusat kendali implementasi Docker Anda.
Klien Docker: Klien Docker menyediakan CLI yang mengakses Docker API (REST API) untuk berkomunikasi dengan daemon Docker melalui soket Unix atau antarmuka jaringan. Klien dapat dihubungkan ke daemon dari jarak jauh, atau pengembang dapat menjalankan daemon dan klien pada sistem komputer yang sama.
Docker Object: Docker Object adalah komponen penerapan Docker yang membantu mengemas dan mendistribusikan aplikasi. Itu termasuk image, kontainer, jaringan, volume, plug-in, dan banyak lagi.
Docker Container: Docker Container adalah instance Docker Image yang aktif dan berjalan. Sementara Docker Image adalah file hanya baca, kontainer adalah konten aktif, sementara, dan dapat dieksekusi. Pengguna dapat berinteraksi dengannya dan administrator dapat menyesuaikan pengaturan dan ketentuan mereka menggunakan perintah Docker.
Docker Image: Docker Image berisi kode sumber aplikasi yang dapat dieksekusi dan semua alat, pustaka, dan ketergantungan yang dibutuhkan kode aplikasi untuk berjalan sebagai kontainer. Ketika seorang pengembang menjalankan Docker Image, itu menjadi satu instance (atau beberapa instance) dari kontainer.
Meski kita dapat membangun Docker Image dari awal, sebagian besar pengembang mengambilnya dari repositori umum. Pengembang dapat membuat beberapa Docker Image dari satu gambar dasar dan akan berbagi kesamaan tumpukan mereka.
Docker Image terdiri dari beberapa lapisan, dan setiap lapisan berhubungan dengan satu versi gambar. Kapan pun pengembang membuat perubahan pada image, akan tercipta satu lapisan baru di bagian atas, dan lapisan atas ini menggantikan lapisan atas sebelumnya sebagai versi image terbaru. Lapisan sebelumnya akan disimpan untuk rollback atau untuk digunakan kembali di proyek lain.
Setiap kali kontainer dibuat dari image Docker, lapisan baru lain yang disebut lapisan kontainer dibuat. Perubahan yang dilakukan pada kontainer—seperti menambahkan atau menghapus file—disimpan pada lapisan kontainer, dan perubahan ini hanya ada saat kontainer berjalan.
Proses pembuatan image berulang ini meningkatkan efisiensi secara keseluruhan karena beberapa instance kontainer aktif dapat dijalankan dari satu image dasar. Ketika dijalankan, instannce tersebut memanfaatkan tumpukan umum.
Docker build: Docker build adalah perintah yang memiliki alat dan fitur untuk membangun image Docker.
Dockerfile: Setiap kontainer Docker dimulai dengan file teks sederhana yang berisi instruksi tentang cara membangun image kontainer Docker. Dockerfile mengotomatiskan proses pembuatan Docker image. Ini pada dasarnya adalah daftar instruksi CLI yang akan dijalankan oleh Docker Engine untuk merakit image. Daftar perintah Docker sangat luas, tetapi terstandardisasi: Operasi Docker berfungsi sama terlepas dari konten, infrastruktur, atau variabel lingkungan lainnya.
Dokumentasi Docker: Dokumentasi Docker, atau dokumen Docker, merujuk pada pustaka sumber daya, manual, dan panduan resmi Docker untuk membangun aplikasi terkontainerisasi.
Docker Hub: Docker Hub6 adalah repositori publik untuk Docker image, yang menyebut dirinya sebagai pustaka dan komunitas terbesar di dunia untuk image kontainer.7. Ini menyimpan lebih dari 100.000 image kontainer yang bersumber dari vendor perangkat lunak komersial, proyek sumber terbuka, dan pengembang. Docker Hub mencakup image yang diproduksi oleh Docker, Inc., gambar bersertifikat milik Docker Trusted Registry, dan ribuan image lainnya.
Semua pengguna Docker Hub dapat membagikan image mereka sesuai keinginan. Mereka juga dapat mengunduh image dasar tertentu dari sistem file Docker sebagai titik awal untuk proyek kontainerisasi apa pun.
Repositori image lain lain tersedia, termasuk GitHub8. GitHub adalah layanan hosting repositori, yang terkenal dengan alat pengembangan aplikasi dan sebagai platform yang mendorong kolaborasi dan komunikasi. Pengguna Docker Hub dapat membuat repositori (repo) yang dapat menampung banyak image. Repositori dapat bersifat publik atau pribadi dan dapat ditautkan ke akun GitHub atau BitBucket.
Docker Desktop: Docker Desktop adalah aplikasi untuk Mac atau Windows yang mencakup Docker Engine, Docker CLI client, Docker Compose, Kubernetes, dan lainnya. Docker Desktop juga menyediakan akses ke Docker Hub.
Docker Registry: Registri Docker adalah sistem penyimpanan dan distribusi yang dapat diskalakan bersumber terbuka, untuk Docker image. Ini memungkinkan pengembang untuk melacak versi image di repositori dengan menggunakan penandaan untuk identifikasi. Pelacakan dan identifikasi ini dilakukan dengan menggunakan Git, alat kontrol versi.
Docker Plug-in: Pengembang menggunakan plug-in untuk membuat Docker Engine menjadi lebih fungsional. Beberapa Docker plug-in yang mendukung otorisasi, volume, dan jaringan disertakan dalam sistem plug-in Docker Engine; plug-in pihak ketiga juga dapat dimuat.
Docker Extension: Ekstensi Docker memungkinkan pengembang untuk menggunakan alat bantu pihak ketiga di dalam Docker Desktop untuk memperluas fungsinya. Ekstensi untuk alat pengembang termasuk pengembangan aplikasi Kubernetes, keamanan, observabilitas, dan lain-lain.
Docker Compose: Pengembang dapat menggunakan Docker Compose untuk mengelola aplikasi multikontainer, di mana semua kontainer berjalan pada host Docker yang sama. Docker Compose membuat berkas YAML (.YML) yang menentukan layanan mana yang disertakan dalam aplikasi dan dapat menerapkan serta menjalankan kontainer dengan satu perintah. Karena sintaksis YAML bersifat agnostik bahasa, file YAML dapat digunakan dalam program yang ditulis dalam Java, Python, Ruby, dan banyak bahasa lainnya.
Pengembang juga dapat memakai Docker Compose guna menetapkan volume persisten untuk penyimpanan, menentukan node dasar, serta mendokumentasikan dan mengonfigurasi dependensi layanan.
Saat menjalankan beberapa kontainer saja, mengelola aplikasi dalam Docker Engine, standar waktu proses industri, cukup sederhana. Namun, untuk penerapan yang terdiri dari ribuan kontainer dan ratusan layanan, hampir tidak mungkin memantau dan mengelola siklus hidup kontainer tanpa alat orkestrasi kontainer .
Sementara Docker menyertakan alat orkestrasinya sendiri (disebut Docker Swarm), Kubernetes telah menjadi standar industri. Platform orkestrasi kontainer populer lainnya termasuk Apache Mesos dan Nomad.
Kubernetes adalah platform orkestrasi kontainer sumber terbuka yang berasal dari Borg, proyek yang dikembangkan untuk penggunaan internal di Google. Diperkenalkan kepada publik pada tahun 2014, Kubernetes menjadwalkan dan mengotomatiskan tugas-tugas yang tidak terpisahkan untuk mengelola arsitektur berbasis kontainer, termasuk penerapan kontainer, pembaruan, penemuan layanan, penyediaan penyimpanan, penyeimbangan beban, pemantauan kondisi kesehatan, dan banyak lagi. Pada tahun 2015, Google menyumbangkan Kubernetes ke Cloud Native Computing Foundation (CNCF)9, pusat komputasi sumber terbuka dan netral vendor cloud native.
Selain itu, ekosistem alat sumber terbuka untuk Kubernetes, termasuk Istio, Knative, dan Tekton, memungkinkan organisasi untuk menerapkan platform sebagai layanan (PaaS) dengan produktivitas tinggi untuk aplikasi yang terkontainerisasi. Ekosistem ini juga menyediakan on-ramp yang lebih cepat ke komputasi tanpa server.
Didirikan pada tahun 2015 setelah Docker menyumbangkan spesifikasi image kontainer dan kode waktu proses runc, Open Container Initiative (OCI)10 adalah proyek Linux Foundation yang berkomitmen untuk menciptakan standar industri terbuka terkait format dan waktu proses image kontainer. OCI terdiri dari perusahaan-perusahaan terkemuka, termasuk Docker, IBM, dan Red Hat. OCI mendukung inovasi sambil membantu organisasi menghindari vendor lock-in.
Meskipun Docker adalah teknologi kontainer terkemuka dan banyak digunakan, ekosistem yang lebih luas telah memiliki standar pada containerd dan alternatif lainnya, termasuk LXC, CRI-O, Podman, dan lainnya. Pada tahun 2017, Docker menyumbangkan proyek containerd ke CNCF. Containerd adalah runtime kontainer standar industri yang menggunakan runc dan merupakan runtime kontainer inti dari Docker Engine.
Kompleksitas seputar beban kerja berkontainer membutuhkan penerapan dan pemeliharaan kontrol keamanan yang melindungi kontainer dan infrastruktur yang mendasarinya. Praktik keamanan kontainer Docker dirancang untuk melindungi aplikasi kontainer dari risiko seperti pelanggaran keamanan, malware, dan pelaku jahat.
Karena diisolasi satu sama lain dan sistem host, kontainer Docker memiliki tingkat keamanan yang melekat sesuai peruntukannya. Namun, isolasi ini tidak bersifat mutlak. Keamanan Docker bergantung pada kerangka kerja zero-trust holistik yang mencakup waktu proses, build, dan orkestrasi kontainer.
Kebutuhan akan Docker dan keamanan terkait kontainer lainnya telah meningkatkan popularitas DevSecOps. Yang merupakan pendekatan keamanan yang mengotomatiskan integrasi praktik keamanan di setiap fase siklus hidup pengembangan perangkat lunak—yang mencakup desain awal hingga integrasi, pengujian, pengiriman, dan penyebaran. Selain itu, praktik terbaik keamanan Docker mencakup alat dan solusi keamanan kontainer pihak ketiga, termasuk pemindaian dan pemantauan, yang dapat mendeteksi masalah keamanan sebelum berdampak pada produksi.
Portabilitas Docker menyederhanakan dan mempercepat proses migrasi cloud dari berbagai lingkungan, baik memindahkan data, aplikasi, dan beban kerja dari pusat data lokal ke infrastruktur berbasis cloud maupun dari satu lingkungan cloud ke lingkungan cloud lainnya.
Menurut Statista, lebih dari 85% organisasi global besar menggunakan layanan mikro untuk pengembangan aplikasi mereka11. Docker mempermudah penerapan aplikasi karena setiap layanan mikro dapat dikontainerisasi dan diskalakan serta dikelola secara independen, sehingga menghilangkan kebutuhan pengembang untuk mengonfigurasi dan mengelola lingkungan tertentu.
Docker ideal untuk pipeline integrasi berkelanjutan dan pengiriman berkelanjutan (CI/CD) karena menyediakan lingkungan yang konsisten untuk pengujian dan penerapan aplikasi, sehingga mengurangi kemungkinan kesalahan selama penerapan.
Kombinasi layanan mikro sebagai pendekatan pengembangan perangkat lunak dan Docker menciptakan fondasi yang kuat untuk tim DevOps . Hal ini memungkinkan mereka untuk mengadopsi praktik-praktik yang tangkas sehingga mereka dapat melakukan iterasi dan bereksperimen dengan cepat, yang sangat penting dalam mengirim perangkat lunak dan layanan dengan kecepatan yang diperlukan oleh pasar.
Teknologi berkontainer ringan seperti Docker memudahkan pemindahan aplikasi di berbagai lingkungan. Semua penyedia layanan cloud utama menawarkan layanan pengembangan dan manajemen terkait Docker yang mendukung proses Docker di lingkungan hybrid cloud, yang menyatukan pengaturan on premises, cloud publik, cloud pribadi, dan edge. Docker dapat dengan mudah diterapkan di seluruh infrastruktur IT multicloud, yang mengacu pada layanan cloud dari lebih dari satu vendor cloud.
Kontainer sebagai layanan (CAaS) memungkinkan pengembang untuk mengelola dan menerapkan aplikasi kontainer, sehingga memudahkan untuk proses berjalannya kontainer Docker dalam skala besar. Semua CSP utama menawarkan CaaS sebagai bagian dari portofolio layanan cloud mereka, bersama dengan infrastruktur sebagai layanan (IaaS), perangkat lunak sebagai layanan (SaaS), dan sebagainya.
Docker mempercepat pengembangan kecerdasan buatan dan machine learning dengan pengembangan aplikasi yang cepat, mudah, dan portabel, sehingga mempercepat inovasi dan waktu penyiapan produk. Selain itu, Docker Hub adalah rumah bagi ratusan image AL/ML yang lebih lanjut mendukung tim pengembangan AL/ML. Pada tahun 2023, Docker meluncurkan Docker AI12, yang menawarkan panduan otomatis yang spesifik secara konteks kepada pengembang ketika mereka mengedit file Dockerfile atau Docker Compose.
Pahami bagaimana bisnis terkemuka menggunakan teknologi kontainer untuk mendorong inovasi, skalabilitas, dan efisiensi. Unduh salinannya sekarang.
Temukan bagaimana strategi hybrid cloud dapat mendorong fleksibilitas, keamanan, dan pertumbuhan bisnis Anda. Jelajahi insight pakar dan studi kasus dunia nyata yang menunjukkan mengapa perusahaan terkemuka beralih.
Docker menyederhanakan penerapan aplikasi dengan kontainer portabel yang ringan, memastikan konsistensi, skalabilitas, dan efisiensi di seluruh lingkungan. Sederhanakan proses Anda dan tingkatkan kinerja dengan Docker hari ini.
Siap mentransformasi bisnis Anda dengan solusi data canggih? Jelajahi bagaimana teknologi mutakhir IBM dapat membantu Anda memanfaatkan kekuatan data, menyederhanakan operasi, dan mendapatkan keunggulan kompetitif.
Red Hat OpenShift on IBM Cloud adalah OpenShift Container Platform (OCP) yang dikelola sepenuhnya.
Solusi kontainer menjalankan dan meningkatkan beban kerja dalam kontainer dengan keamanan, inovasi sumber terbuka, dan penerapan yang cepat.
Dapatkan kemampuan baru dan dorong ketangkasan bisnis dengan layanan konsultasi cloud IBM. Temukan cara berkolaborasi dalam menciptakan solusi, mempercepat transformasi digital, dan mengoptimalkan kinerja melalui strategi hybrid cloud dan kemitraan pakar.
1 About Docker, Docker
2 Open Source Projects, Docker
3 Docker Builds, Docker
4 Top 5 containerization technologies in 2024, 6sense
5 A Brief History of Containers: From the 1970s Till Now, Aqua, 10 Januari 2020
6 Docker Hub, Docker
7 Overview of Docker Hub, Docker
8 GitHub
9 Cloud Native Computing Foundation
11 Global Usage of Microservices in Organizations 2021, by Organization Size, Statista, 2023
12 Docker announces Docker AI Boosting Developer Productivity Through Context-Specific, Automated Guidance, Docker, 2023
IBM web domains
ibm.com, ibm.org, ibm-zcouncil.com, insights-on-business.com, jazz.net, mobilebusinessinsights.com, promontory.com, proveit.com, ptech.org, s81c.com, securityintelligence.com, skillsbuild.org, softlayer.com, storagecommunity.org, think-exchange.com, thoughtsoncloud.com, alphaevents.webcasts.com, ibm-cloud.github.io, ibmbigdatahub.com, bluemix.net, mybluemix.net, ibm.net, ibmcloud.com, galasa.dev, blueworkslive.com, swiss-quantum.ch, blueworkslive.com, cloudant.com, ibm.ie, ibm.fr, ibm.com.br, ibm.co, ibm.ca, community.watsonanalytics.com, datapower.com, skills.yourlearning.ibm.com, bluewolf.com, carbondesignsystem.com