Belajar Docker: Docker "Teknologi Virtualisasi Berbasis Kontainer "
Docker adalah platform terbuka
untuk pengembangan, pengiriman, dan menjalankan aplikasi. Docker memungkinkan untuk
memisahkan aplikasi dari infrastruktur yang
ada sehingga dapat
mengirimkan perangkat lunak dengan cepat. Dengan Docker, kita dapat mengelola
infrastruktur dengan cara yang sama
seperti mengelola aplikasi. Dengan memanfaatkan metodologi Docker untuk
pengiriman, pengujian, dan menerapkan kode dengan cepat, kita dapat secara
signifikan mengurangi penundaan antara menulis kode dan menjalankannya dalam
produksi.
Platform
Docker
Docker
menyediakan kemampuan untuk mengemas dan menjalankan aplikasi dalam lingkungan
yang terisolasi yang disebut kontainer. Isolasi dan keamanan memungkinkan Anda
menjalankan banyak kontainer secara bersamaan pada host yang diberikan.
kontainer ringan karena mereka tidak memerlukan beban ekstra dari hypervisor,
tetapi dijalankan langsung di dalam kernel mesin host. Ini berarti Anda dapat
menjalankan lebih banyak kontainer pada kombinasi perangkat keras yang
diberikan daripada jika Anda menggunakan mesin virtual. Anda bahkan dapat
menjalankan kontainer Docker dalam mesin host yang sebenarnya mesin virtual.
Docker
menyediakan Utilitas dan platform untuk mengelola siklus hidup container seperti
:
·
Pengembangan
aplikasi dan komponen pendukungnya menggunakan kontainer.
·
Kontainer
menjadi unit untuk mendistribusikan dan menguji aplikasi Anda.
Saat
Kita siap, kita dapat menyebarkan
aplikasi ke lingkungan produksi, sebagai container atau layanan yang diatur.
Ini berfungsi sama baik apakah lingkungan produksi Anda adalah pusat data lokal,
penyedia cloud, atau gabungan dari keduanya.
Mesin
Docker
![]() |
Source : docks.docker.com |
Docker
Engine adalah aplikasi client-server dengan komponen-komponen utama ini:
·
Server
yang merupakan jenis program lama yang disebut proses daemon.
·
A
REST API yang menentukan antarmuka yang dapat digunakan program untuk berbicara
dengan daemon dan memerintahkannya apa yang harus dilakukan.
·
Klien
command line interface (CLI).
·
CLI
menggunakan API Docker REST untuk mengontrol atau berinteraksi dengan daemon
Docker melalui perintah CLI scripting atau langsung. Banyak aplikasi Docker
lain menggunakan API dan CLI yang mendasarinya.
Daemon menciptakan dan mengatur
objek Docker , seperti image, kontainer, jaringan, dan volume.
Image dan
Container
Kontainer
Dijalankan dengan
menjalankan image. Sebuah image adalah paket executable
yang mencakup semua yang diperlukan untuk menjalankan sebuah aplikasi - kode, runtime, perpustakaan,
variabel lingkungan, dan file konfigurasi. Kontainer adalah contoh runtime
dari suatu image. Kalian dapat melihat daftar kontainer yang berjalan
dengan perintah,, “docker
ps”.
Docker
menyederhanakan siklus hidup pengembangan dengan memungkinkan pengembang untuk
bekerja di lingkungan standar menggunakan kontainer lokal yang menyediakan
aplikasi dan layanan Anda. Container sangat bagus untuk integrasi berkelanjutan
dan pengiriman berkelanjutan (CI / CD) alur kerja.
Penyebaran dan penskalaan
responsi
Platform berbasis kontainer
Docker memungkinkan beban kerja yang sangat portabel. Kontainer Docker dapat
berjalan di laptop lokal pengembang, pada mesin fisik atau virtual di pusat
data, di penyedia cloud, atau dalam campuran lingkungan. Portabilitas Docker dan sifatnya
yang ringan juga memudahkan untuk mengelola beban kerja secara dinamis,
meningkatkan atau meruntuhkan aplikasi dan layanan sesuai kebutuhan bisnis,
dalam waktu dekat.
Menjalankan lebih banyak beban
kerja pada perangkat keras yang sama
Docker ringan dan cepat. Ini
menyediakan alternatif yang layak, biaya-efektif untuk mesin virtual berbasis
hypervisor, sehingga Anda dapat menggunakan lebih dari kapasitas komputasi Anda
untuk mencapai tujuan bisnis Anda. Docker sangat cocok untuk lingkungan dengan
kepadatan tinggi dan untuk penyebaran kecil dan menengah di mana Anda perlu
melakukan lebih banyak dengan sumber daya yang lebih sedikit.
Arsitektur Docker
Source : docks.docker.com |
Docker menggunakan arsitektur client-server. Klien Docker berbicara dengan daemon Docker , yang melakukan pengangkatan berat, menjalankan, dan mendistribusikan kontainer Docker Anda. Klien dan daemon Docker dapat berjalan di sistem yang sama, atau Anda dapat menghubungkan klien Docker ke daemon Docker jarak jauh. Klien dan daemon Docker berkomunikasi menggunakan REST API, melalui soket UNIX atau antarmuka jaringan.
Daemon Docker
Docker
daemon ( dockerd) mendengarkan permintaan Docker API dan mengatur objek Docker
seperti image, kontainer, jaringan, dan volume. Sebuah daemon juga dapat
berkomunikasi dengan daemon lain untuk mengelola layanan Docker.
Klien Docker
Docker Client
( docker) adalah cara utama banyak pengguna Docker berinteraksi dengan Docker.
Ketika Anda menggunakan perintah seperti docker run, klien mengirimkan
perintah-perintah ini dockerd, yang menjalankannya. The dockerperintah
menggunakan API Docker. Klien Docker dapat berkomunikasi dengan lebih dari satu
daemon.
Docker Registry
Sebuah
Docker registry
menyimpan Docker image. Docker Hub dan Docker Cloud adalah pendaftar publik
yang dapat digunakan siapa saja, dan Docker dikonfigurasi untuk mencari image
di Docker Hub secara default. Anda bahkan dapat menjalankan registri pribadi
Anda sendiri. Jika Anda menggunakan Docker Datacenter (DDC), itu termasuk
Docker Trusted Registry (DTR). Saat
Anda menggunakan perintah docker pullatau docker run, image yang diperlukan
ditarik dari registri Anda yang dikonfigurasi. Ketika Anda menggunakan docker
pushperintah, image Anda didorong ke registri Anda yang dikonfigurasi.
Docker
store memungkinkan Anda untuk membeli dan menjual image Docker atau
mendistribusikannya secara gratis. Misalnya, Anda dapat membeli image Docker
yang berisi aplikasi atau layanan dari vendor perangkat lunak dan menggunakan image
untuk menyebarkan aplikasi ke dalam lingkungan pengujian, pementasan, dan
produksi Anda. Anda dapat meningkatkan aplikasi dengan menarik versi baru dari image
dan menerapkan ulang container.
Objek Docker
Saat
Anda menggunakan Docker, Anda membuat dan menggunakan image, container,
jaringan, volume, plugin, dan objek lainnya. Bagian ini adalah imagean singkat
dari beberapa objek tersebut.
IMAGE
Sebuah
Image adalah read-only template dengan petunjuk untuk membuat container Docker.
Seringkali, image didasarkan pada image lain, dengan beberapa penyesuaian
tambahan. Misalnya, Anda dapat membuat image yang didasarkan pada ubuntu image,
tetapi menginstal server web Apache dan aplikasi Anda, serta detail konfigurasi
yang diperlukan untuk membuat aplikasi Anda berjalan.
Anda
dapat membuat image Anda sendiri atau Anda mungkin hanya menggunakan yang
dibuat oleh orang lain dan dipublikasikan di registri. Untuk membangun citra
Anda sendiri, Anda membuat Dockerfile dengan sintaks sederhana untuk menentukan
langkah-langkah yang diperlukan untuk membuat image dan menjalankannya. Setiap
instruksi dalam Dockerfile menciptakan lapisan pada image. Ketika Anda mengubah
Dockerfile dan membangun kembali image, hanya lapisan yang telah diubah yang
dibangun kembali. Ini adalah bagian dari apa yang membuat image sangat ringan,
kecil, dan cepat, jika dibandingkan dengan teknologi virtualisasi lainnya.
Container
Container adalah contoh Image yang dapat
dijalankan. Anda dapat membuat, memulai, menghentikan, memindahkan, atau
menghapus container menggunakan API Docker atau CLI. Anda dapat menghubungkan container
ke satu atau beberapa jaringan, melampirkan penyimpanan ke dalamnya, atau
bahkan membuat image baru berdasarkan statusnya saat ini. Secara default, kontainer
relatif terisolasi dengan baik dari kontainer lain dan mesin host-nya. Anda
dapat mengontrol bagaimana mengisolasi jaringan container, penyimpanan, atau
subsistem yang mendasarinya dari kontainer lain atau dari mesin host.
Container
ditentukan oleh imagenya serta opsi konfigurasi apa pun yang Anda berikan saat
Anda membuat atau memulainya. Ketika sebuah container dihapus, setiap perubahan
pada statusnya yang tidak disimpan dalam penyimpanan persisten menghilang.
Contoh docker runperintah
Perintah
berikut menjalankan sebuah ubuntucontainer, menempel secara interaktif ke sesi
baris perintah lokal Anda, dan berjalan /bin/bash.
$ docker run -i -t
ubuntu /bin/bash
Ketika
Anda menjalankan perintah ini, hal berikut terjadi (dengan asumsi Anda
menggunakan konfigurasi registri default):
1.
Jika
Anda tidak memiliki ubuntuimage secara lokal, Docker menariknya dari registri
Anda yang dikonfigurasi, seolah-olah Anda telah menjalankan docker pull
ubuntusecara manual.
2.
Docker
membuat penampung baru, seolah Anda telah menjalankan docker container create
perintah secara manual.
3.
Docker
mengalokasikan filesystem read-write ke container, sebagai lapisan terakhirnya.
Ini memungkinkan container berjalan untuk membuat atau memodifikasi file dan
direktori di sistem file lokalnya.
4.
Docker
membuat antarmuka jaringan untuk menghubungkan container ke jaringan default,
karena Anda tidak menentukan opsi jaringan apa pun. Ini termasuk menetapkan
alamat IP ke penampung. Secara default, kontainer dapat terhubung ke jaringan
eksternal menggunakan koneksi jaringan mesin host.
5.
Docker
memulai container dan mengeksekusi /bin/bash. Karena container sedang berjalan
secara interaktif dan dilampirkan ke terminal Anda (karena -idan -t bendera),
Anda dapat memberikan masukan menggunakan keyboard Anda saat output dicatat ke
terminal Anda.
6.
Saat
Anda mengetik exituntuk mengakhiri /bin/bashperintah, penampung berhenti tetapi
tidak dihapus. Anda dapat memulainya lagi atau menghapusnya.
SERVICE
Layanan
memungkinkan Anda untuk menskalakan kontainer di beberapa daemon Docker, yang
semuanya bekerja bersama sebagai kawanan dengan banyak manajer dan pekerja .
Setiap anggota kawanan adalah daemon Docker, dan daemon semua berkomunikasi
menggunakan API Docker. Layanan memungkinkan Anda menentukan keadaan yang
diinginkan, seperti jumlah replika layanan yang harus tersedia pada waktu
tertentu. Secara default, layanan ini load-balanced di semua node pekerja.
Untuk konsumen, layanan Docker tampaknya merupakan aplikasi tunggal. Docker
Engine mendukung mode swarm di Docker 1.12 dan lebih tinggi.
Namespaces
Docker
menggunakan teknologi yang disebut namespaces untuk
menyediakan ruang kerja yang terisolasi yang disebut container . Saat Anda
menjalankan penampung, Docker membuat satu set ruang nama untuk container itu. Ruang-ruang nama ini memberikan
lapisan isolasi. Setiap aspek container berjalan di ruang nama yang terpisah
dan aksesnya terbatas pada ruang nama itu.
Kelompok kontrol
Docker
Engine di Linux juga bergantung pada teknologi lain yang disebut grup kontrol (
cgroups). Cgroup membatasi aplikasi ke satu set sumber daya tertentu. Grup
kontrol memungkinkan Docker Engine untuk berbagi sumber daya perangkat keras
yang tersedia ke kontainer dan secara opsional menegakkan batasan dan kendala.
Misalnya, Anda dapat membatasi memori yang tersedia untuk container tertentu.
Sistem file Union
Sistem
file Union, atau UnionFS, adalah sistem file yang beroperasi dengan membuat
lapisan, membuatnya sangat ringan dan cepat. Docker Engine menggunakan UnionFS
untuk menyediakan blok bangunan untuk kontainer. Docker Engine dapat
menggunakan beberapa varian UnionFS, termasuk AUFS, btrfs, vfs, dan
DeviceMapper.
Format penampung
Docker
Engine menggabungkan ruang nama, grup kontrol, dan UnionFS menjadi pembungkus
yang disebut format kontainer. Format penampung default adalah libcontainer. Di
masa depan, Docker dapat mendukung format kontainer lainnya dengan
mengintegrasikan dengan teknologi seperti BSD Jails atau Solaris Zones.
Sumber :
https://docs.docker.com/engine/docker-overview/
0 comments:
Post a Comment