Apa itu Docker?
Bangun di docker dalam OpenShift Berlangganan pembaruan cloud
Ilustrasi dengan kolase piktogram monitor komputer, server, awan, titik-titik
Apa itu Docker?

Docker adalah platform sumber terbuka yang memungkinkan pengembang untuk membangun, menerapkan, menjalankan, memperbarui, dan mengelola komponen-komponen yang dapat dieksekusi dan terstandardisasi dalam kontaineryang menggabungkan kode sumber aplikasi dengan pustaka sistem operasi (OS) dan ketergantungan yang diperlukan untuk menjalankan kode tersebut di lingkungan apa pun.

Kontainer menyederhanakan pengembangan dan pengiriman aplikasi terdistribusi. Mereka telah menjadi semakin populer karena organisasi beralih ke pengembangan cloud native dan lingkungan multicloud hybrid. Para pengembang dapat membuat kontainer tanpa Docker, dengan bekerja secara langsung menggunakan kemampuan yang ada pada Linux dan sistem operasi lainnya. Tetapi Docker membuat kontainerisasi lebih cepat, lebih mudah, dan lebih aman. Dalam tulisan ini, Docker melaporkan lebih dari 13 juta pengembang menggunakan platform (tautan berada di luar ibm.com).

Docker juga mengacu pada Docker, Inc. (tautan berada di luar ibm.com), perusahaan yang menjual versi komersial Docker. Ini juga berkaitan dengan proyek sumber terbuka Docker yang mana Docker, Inc dan banyak organisasi serta individu lainnya berkontribusi.

AI generatif dan nilai cloud hybrid

Pelajari bagaimana organisasi dapat meningkatkan dampak AI dengan memanfaatkan cloud hybrid untuk mendorong hasil bisnis.

Konten terkait

Daftar untuk panduan tentang cloud hybrid

Cara kerja kontainer dan mengapa kontainer begitu populer

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.

Mereka memungkinkan beberapa komponen aplikasi untuk berbagi sumber daya dari satu instance sistem operasi host. Berbagi ini hampir sama dengan cara hypervisor memungkinkan beberapa mesin virtual (VM) untuk berbagi CPU, memori, dan sumber daya lain dari server perangkat keras tunggal. 

Akibatnya, teknologi kontainer menawarkan semua fungsionalitas dan manfaat VM, termasuk isolasi aplikasi, skalabilitas hemat biaya, dan sekali pakai, ditambah keuntungan tambahan penting:

  • Berat lebih ringan: Tidak seperti VM, kontainer tidak membawa muatan dari seluruh instance OS dan hypervisor. Mereka hanya mencakup proses OS dan dependensi yang diperlukan untuk mengeksekusi kode. Ukuran kontainer diukur dalam megabyte (dibandingkan gigabyte untuk beberapa VM), memanfaatkan kapasitas perangkat keras dengan lebih baik, dan memiliki waktu startup yang lebih cepat. 

  • Produktivitas pengembang yang ditingkatkan: Aplikasi kontainer dapat ditulis sekali dan dijalankan di mana saja. Dan dibandingkan dengan VM, kontainer lebih cepat dan lebih mudah untuk digunakan, disediakan, dan dimulai ulang. Keunggulan ini menjadikannya ideal untuk digunakan dalam pipeline integrasi berkelanjutan dan pengiriman berkelanjutan (CI/CD) dan lebih cocok untuk tim pengembangan yang mengadopsi praktik-praktik tangkas dan DevOps .

  • Efisiensi sumber daya yang lebih besar: Dengan kontainer, pengembang dapat menjalankan beberapa kali lebih banyak salinan aplikasi pada perangkat keras yang sama dibandingkan dengan menggunakan VM. Efisiensi ini dapat mengurangi pengeluaran cloud.

Perusahaan yang menggunakan kontainer melaporkan manfaat lain termasuk peningkatan kualitas aplikasi, respons yang lebih cepat terhadap perubahan pasar, dan masih banyak lagi. Pelajari lebih lanjut dengan alat interaktif ini: 

Unduh laporan lengkap: Kontainer di perusahaan
Mengapa menggunakan Docker?

Docker sangat populer saat ini sehingga “Docker” dan “kontainer” digunakan secara bergantian. Tetapi teknologi terkait kontainer pertama tersedia selama bertahun-tahun — bahkan beberapa dekade (tautan berada di luar ibm.com) sebelumnya Docker dirilis ke publik pada tahun 2013. 

Yang paling menonjol, pada tahun 2008, LinuXContainers (LXC) diimplementasikan dalam kernel Linux, yang sepenuhnya memungkinkan virtualisasi untuk satu instance Linux. Sementara LXC masih digunakan saat ini, teknologi yang lebih baru menggunakan kernel Linux tersedia. Ubuntu, sistem operasi Linux sumber terbuka modern, juga menyediakan kemampuan ini. 

Docker memungkinkan pengembang mengakses kemampuan kontainerisasi asli ini menggunakan perintah sederhana dan mengotomatiskannya melalui antarmuka pemrograman aplikasi (API) yang menghemat pekerjaan. Dibandingkan dengan LXC, Docker menawarkan:

  • Portabilitas kontainer yang lebih baik dan mulus: Meskipun kontainer LXC sering kali merujuk pada konfigurasi khusus mesin, kontainer Docker berjalan tanpa modifikasi di desktop, pusat data, dan lingkungan cloud mana pun. 
  • Bahkan bobot yang lebih ringan dan pembaruan yang lebih terperinci: Dengan LXC, beberapa proses dapat digabungkan dalam satu kontainer. Fleksibilitas ini memungkinkan untuk membangun aplikasi yang dapat terus berjalan sementara salah satu bagiannya dihapus untuk pembaruan atau perbaikan. 

     

  • Pembuatan kontainer otomatis: Docker dapat secara otomatis membangun kontainer berdasarkan kode sumber aplikasi. 

     

  • Pembuatan versi kontainer: Docker dapat melacak versi image kontainer, mengembalikan ke versi sebelumnya, dan melacak siapa yang membuat versi dan bagaimana caranya. Bahkan hanya dapat mengunggah delta antara versi yang ada dan yang baru. 

     

  • Penggunaan ulang kontainer: Kontainer yang sudah ada dapat digunakan sebagai image dasar, pada dasarnya seperti templat untuk membangun kontainer baru. 

     

  • Pustaka kontainer bersama: Pengembang dapat mengakses registri sumber terbuka yang berisi ribuan kontainer yang dikontribusikan oleh pengguna. 

Saat ini kontainerisasi Docker juga berfungsi dengan Microsoft Windows dan Apple macOS. Pengembang dapat menjalankan kontainer Docker pada sistem operasi apa pun. Sebagian besar penyedia cloud terkemuka, termasuk Amazon Web Services (AWS), Microsoft Azure, dan IBM Cloud menawarkan layanan khusus untuk membantu pengembang membangun, menerapkan, dan menjalankan aplikasi yang dikontainerisasi dengan Docker.

Alat dan persyaratan Docker

Beberapa alat, istilah, dan teknologi yang ditemui pengembang saat menggunakan Docker meliputi: 

dockerfile

Setiap kontainer Docker dimulai dengan file teks sederhana yang berisi instruksi tentang cara membuat image kontainer Docker. Dockerfile mengotomatiskan proses pembuatan image Docker. Ini pada dasarnya adalah daftar instruksi antarmuka baris perintah (CLI) yang akan dijalankan Docker Engine untuk merakit image. Daftar perintah Docker sangat banyak, tetapi terstandarisasi: Operasi Docker berfungsi sama terlepas dari konten, infrastruktur, atau variabel lingkungan lainnya. 

Image Docker

Image Docker berisi kode sumber aplikasi yang dapat dieksekusi serta semua alat, pustaka, dan ketergantungan yang dibutuhkan kode aplikasi untuk berjalan sebagai kontainer. Ketika Anda menjalankan image Docker, itu menjadi satu instance (atau beberapa instance) dari kontainer. 

Dimungkinkan untuk membangun image Docker dari awal, tetapi sebagian besar pengembang menariknya dari repositori umum. Beberapa image Docker dapat dibuat dari satu image dasar dan mereka akan berbagi kesamaan tumpukan mereka. 

Image Docker terdiri dari lapisan dan setiap lapisan sesuai dengan versi gambar. Kapan pun pengembang membuat perubahan pada image, lapisan atas baru dibuat dan lapisan atas ini menggantikan lapisan atas sebelumnya sebagai versi gambar saat ini. Lapisan sebelumnya 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 penambahan atau penghapusan file—disimpan ke lapisan kontainer dan hanya ada saat kontainer berjalan.

Proses pembuatan image berulang ini memungkinkan peningkatan efisiensi secara keseluruhan karena beberapa instance kontainer langsung dapat dijalankan hanya dari satu image dasar dan ketika dijalankan, instance tersebut memanfaatkan tumpukan umum. 

Kontainer Docker

Kontainer Docker adalah instance image Docker yang hidup dan berjalan. Sementara image Docker adalah file hanya baca, kontainer adalah konten langsung, sementara, dan dapat dieksekusi. Pengguna dapat berinteraksi dengan mereka dan administrator dapat menyesuaikan pengaturan dan ketentuan mereka menggunakan perintah Docker. 

Docker Hub

Docker Hub (tautan berada di luar ibm.com) adalah repositori publik untuk image Docker yang menyebut dirinya sebagai "perpustakaan dan komunitas terbesar di dunia untuk image kontainer." Ini menyimpan lebih dari 100.000 image kontainer yang bersumber dari vendor perangkat lunak komersial, proyek sumber terbuka, dan pengembang individu. Ini mencakup citra yang telah diproduksi oleh Docker, Inc., image bersertifikat milik Docker Trusted Registry, dan ribuan image lainnya. 

Semua pengguna Docker Hub dapat membagikan image mereka sesuka hati. Mereka juga dapat mengunduh image dasar yang telah ditentukan dari sistem berkas Docker untuk digunakan sebagai titik awal untuk proyek kontainerisasi apa pun. 

Repositori gambar lainnya juga ada, terutama GitHub. 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. 

Desktop Docker

Docker Desktop (tautan berada di luar ibm.com) adalah aplikasi untuk Mac atau Windows yang mencakup Docker Engine, klien CLI Docker, Docker Compose, Kubernetes, dan lainnya. Ini juga termasuk akses ke Docker Hub. 

Daemon Docker

Docker daemon adalah layanan yang membuat dan mengelola image Docker, menggunakan perintah dari klien. Pada dasarnya daemon Docker berfungsi sebagai pusat kendali implementasi Docker Anda. Server tempat Docker daemon berjalan disebut host Docker.

Registri Docker

Registri Docker adalah sistem penyimpanan dan distribusi sumber terbuka yang dapat diskalakan untuk gambar Docker. Registri memungkinkan Anda melacak versi image di repositori, menggunakan penandaan untuk identifikasi. Pelacakan dan identifikasi ini dilakukan menggunakan Git, alat kontrol versi. 

Penerapan dan orkestrasi Docker

Ketika menjalankan hanya beberapa kontainer, cukup mudah untuk mengelola aplikasi di dalam Docker Engine, waktu proses de facto industri. Tetapi untuk penerapan yang terdiri dari ribuan kontainer dan ratusan layanan, hampir tidak mungkin mengelola alur kerja tanpa bantuan beberapa alat yang dibuat khusus.

Plug-in Docker

Plug-in Docker (tautan berada di luar ibm.com) dapat digunakan untuk membuat Docker lebih fungsional. Beberapa plug-in Docker disertakan dalam sistem plug-in Docker Engine dan plug-in pihak ketiga juga dapat dimuat. 

docker menyusun

Pengembang dapat menggunakan Docker Compose untuk mengelola aplikasi multi kontainer, tempat 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 menggunakan Docker Compose untuk mendefinisikan volume persisten untuk penyimpanan, menentukan node dasar, dan mendokumentasikan serta mengonfigurasi ketergantungan layanan. 

Kubernetes

Memantau dan mengelola siklus hidup kontainer di lingkungan yang lebih kompleks memerlukan alat orkestrasi kontainer. Sementara Docker menyertakan alat orkestrasinya sendiri (disebut Docker Swarm), sebagian besar pengembang memilih Kubernetes sebagai gantinya. 

Kubernetes adalah platform orkestrasi kontainer sumber terbuka yang berasal dari proyek yang dikembangkan untuk penggunaan internal di Google. Kubernetes menjadwalkan dan mengotomatiskan tugas yang merupakan bagian integral dari pengelolaan arsitektur berbasis kontainer, termasuk penerapan kontainer, pembaruan, penemuan layanan, penyediaan penyimpanan, penyeimbangan beban, pemantauan kesehatan, dan banyak lagi.

Selain itu, ekosistem alat sumber terbuka untuk Kubernetes, termasuk Istio dan Knative, memungkinkan organisasi untuk menggunakan platform sebagai layanan (PaaS) dengan produktivitas tinggi untuk aplikasi yang terkontainerisasi. Ekosistem ini juga menyediakan on-ramp yang lebih cepat ke komputasi tanpa server.

Pelajari lebih lanjut tentang Kubernetes

Solusi terkait
Red Hat OpenShift on IBM Cloud

Jelajahi bagaimana Red Hat OpenShift on IBM Cloud memanfaatkan Red Hat OpenShift di lingkungan publik dan hibrida untuk kecepatan, daya tanggap pasar, skalabilitas, dan keandalan.

Jelajahi Red Hat OpenShift on IBM Cloud
IBM Cloud Satellite 

Manfaatkan IBM Cloud Satellite untuk memulai layanan cloud yang konsisten di mana saja, on premises, di tepi, dan di lingkungan cloud publik.

Jelajahi IBM Cloud Satellite
Solusi penyimpanan hybrid cloud

Simpan data di tempat yang paling masuk akal untuk aplikasi dan layanan dengan solusi penyimpanan cloud hybrid IBM di seluruh cloud on premises, privat, dan publik.

Jelajahi solusi penyimpanan hybrid cloud
Layanan cloud

Lihat bagaimana pendekatan layanan cloud terkelola membantu mengurangi potensi ketegangan antara manajemen IT tradisional dan budaya DevOps.

Jelajahi Layanan Cloud
Resources Kontainer di perusahaan

Baca IBM Research baru tentang momentum kontainer yang melonjak dan adopsi Kubernetes.

Sajikan model di Kubernetes atau OpenShift menggunakan kontainer yang berdiri sendiri

Buatlah image kontainer yang berdiri sendiri untuk melayani model NLP IBM Watson lalu jalankan di klaster Kubernetes atau Red Hat OpenShift.

Ambil langkah selanjutnya

Red Hat OpenShift on IBM Cloud menawarkan cara yang cepat dan aman bagi para pengembang untuk mengkontainerisasi dan menerapkan beban kerja perusahaan dalam kluster Kubernetes. Menghilangkan tugas-tugas yang membosankan dan berulang yang melibatkan manajemen keamanan, manajemen kepatuhan, manajemen penyebaran, dan manajemen siklus hidup yang berkelanjutan. 

Jelajahi Red Hat OpenShift on IBM Cloud Mulai secara gratis