Pengenalan Docker Dan Docker Container

Docker adalah salah satu platform yang dibangun berdasarkan teknologi container. Docker merupakan sebuah project open-source dibawah lisensi Apache Versi 2.0 yang bisa dipergunakan secara gratis oleh developer dan berfungsi sebagai wadah atau container untuk memasukkan sebuah aplikasi secara lengkap beserta semua hal lainnya yang dibutuhkan sehingga dapat berjalan dimana saja.

Bagi developer, ketika mengembangkan sebuah aplikasi biasanya akan menjalankan virtualisasi pada server agar pembuatan aplikasi dapat berjalan di berbagai platform. Hal ini cukup sulit karena harus menyiapkan sebuah sistem operasi secara utuh.Container kemudian datang dan membawa beberapa perubahan. Dengan container, sebuah program ‘diikat’ beserta library-nya, file konfigurasi, dan seluruh hal yang dibutuhkannya.

Docker merupakan salah satu aplikasi container
  1. Sebelum adanya Docker: Seorang programmer mengirim aplikasi yang akan diuji kepada seorang penguji. Namun karena isu dependency dan konfigurasi system, aplikasi ini tidak dapat berjalan di system yang digunakan penguji. Kondisi yang berbeda, aplikasi dapat berjalan baik di system programmer karena dependency dan konfigurasi yang sesuai dengan kebutuhan aplikasi.
  2. Setelah adanya Docker: Programmer dapat mengirimkan aplikasi beserta dependency dan konfigurasi yang sesuai dengan aplikasi tersebut kepada penguji. Sehingga penguji dapat menjalankan aplikasi tanpa mengalami masalah dependency dan isu konfigurasi system.

Pada prakteknya, penggunaan docker kerap dibandingkan dengan virtualisasi seperti aplikasi oracle virtualbox dan vmware. Docker memiliki kelebihan dibandingkan dengan aplikasi virtualisasi dengan perbandingan sebagai berikut:

Pengenalan Docker Dan Docker Container

Docker juga sering dibandingkan dengan Vagrant.
  1. Vagrant juga merupakan salah satu aplikasi yang memiliki fungsi yang hampir sama dengan Docker. Vagrant merupakan aplikasi open source untuk membangun dan menangani lingkungan virtual pengembangan software yang portable.
  2. Namun Vagrant dan Docker memiliki perbedaan yang menyebabkan para programmer perlu menentukan di awal sebelum menggunakan salah satu dari kedua tools ini.

Perbedaan Docker dan Vagrant bisa dilihat pada table berikut:

Pengenalan Docker Dan Docker Container

Sejarah Docker
Awal mulanya Docker dikembangkan oleh Solomon Hykes sebagai proyek internal di dotCloud, yang merupakan sebuah perusahaan PaaS (platform as a service). https://docs.docker.com Perilisan platform ini secara open-source dilakukan pada Mei 2013. Docker terus berkembang hingga memiliki ribuan orang yang berkontribusi membuatnya menjadi lebih baik.

Arsitektur Docker
Docker menggunakan arsitektur berbasis client-server. Dalam hal ini, Docker client mengirimkan permintaan berupa sebuah perintah kepada Docker daemon untuk membangun, mendistribusikan, dan menjalankan container Docker.

Pengenalan Docker Dan Docker Container

Arsitektur Docker
  1. Berbeda dengan virtualisasi yang mana aplikasi berjalan di atas hypervisor dan guest OS, docker dapat menjalankan aplikasi langsung tanpa kedua hal tadi.
  2. Docker juga dilengkapi dengan fitur sandbox yang menjamin pengerjaan pengembang dan sysadmin tidak terganggu.
  3. Sandbox pada istilah keamanan computer adalah mekanisme pemisahan aplikasi atau program tanpa mengganggu host (isolasi).
  4. Bagi pengembang, sandbox menjamin aplikasinya dapat berjalan tanpa ada gangguan atas perubahan lingkungan host.
  5. Sedangkan bagi sysadmin, menjamin host server yang dikelola tidak terganggu dan dapat melakukan update tanpa takut mengganggu aplikasi.
  6. Dikutip dari situs resmi docker, pengembang dapat mengefektifkan waktu mereka dengan menghilangkan proses konfigurasi yang cocok dengan programnya.

Komponen pada Docker

Docker memiliki komponen seperti pada gambar berikut:

Pengenalan Docker Dan Docker Container

Docker Container dikelola menggunakan Docker API atau CLI.
  1. Docker image adalah template read-only yang digunakan untuk membuat containers. Images digunakan untuk menyimpan dan mengirimkan aplikasi.
  2. Docker service memungkinkan containers untuk diupgrade dibeberapa Docker daemons. Hasilnya dikenal sebagai “swarm”, gabungan daemons berkomunikasi melalui Docker API.

Terminologi pada Docker

Istilah - istilah penting pada docker diantaranya:
  1. Docker Daemon
  2. Docker Images
  3. Docker Container
  4. Docker Registry
Penjelasan Istilah - istilah penting pada docker diantaranya:

1. Docker Daemon

Docker daemon berfungsi untuk membangun, mendistribusikan dan menjalankan container docker. User tidak dapat langsung menggunakan docker daemon, akan tetapi untuk menggunakan docker daemon maka user menggunakan docker client sebagai perantara atau cli.

2. Docker Images
Docker images adalah sebuah template yang bersifat read only. Template ini sebenarnya adalah sebuah OS atau OS yang telah diinstall berbagai aplikasi. Docker images berfungsi untuk membuat docker container, dengan hanya 1 docker images kita dapat membuat banyak docker container.

3. Docker container
Docker container bisa dikatakan sebagai sebuah folder, dimana docker container ini dibuat dengan menggunakan docker daemon. Setiap docker container disimpan maka akan terbentuk layer baru tepat diatas docker images atau base image diatasnya.

4. Docker registry
Docker registry adalah kumpulan docker image yang bersifat private maupun public yang dapat anda akses di docker hub. Dengan menggunakan docker registry, anda dapat menggunakan docker image yang telah dibuat oleh developer yang lain, sehingga mempermudahkan kita dalam pengembangan aplikasi.