Docker

Apa itu Docker??

Docker adalah sebuah platform terbuka yang berfungsi sebagai wadah/container untuk mengepak/memasukkan sebuah software secara lengkap beserta semua hal lainnya yang dibutuhkan oleh software tersebut dapat berfungsi jika dipindahkan ke mesin lain.

Fungsi Docker

Dengan Docker, seorang developer maupun sysadmin dapat membangun, mengemas, dan menjalankan aplikasi di mana pun dengan cepat dan efisien.

Perbedaan Docker dengan VM

Docker vs VM

Gambar di atas menjelaskan bahwa Docker merupakan teknologi virtualisasi yang berada pada level sistem operasi. Berbeda dengan VM biasa yang merupakan teknologi virtualisasi pada level hardware.

Anda tidak memerlukan sistem operasi secara penuh setiap menjalankan container, hal ini berdampak pada ukuran yang digunakan.

Docker Engine

adalah aplikasi client-server dengan komponen-komponen utama:

  • Sebuah server dengan jenis program long-running disebut proses daemon.
  • Sebuah REST API yang menentukan interface yang dapat digunakan program untuk berbicara dengan daemon dan menginstruksikan apa yang harus dilakukan.
  • Sebuah klien antarmuka baris perintah (Command Line Interface / CLI).

CLI memanfaatkan Docker REST API untuk mengontrol atau berinteraksi dengan Docker daemon melalui scripting atau perintah CLI langsung. Banyak aplikasi lain Docker memanfaatkan dasar API dan CLI.

Daemon mengkreasikan dan mengelola objek-objek Docker. Yang termasuk Docker object adalah image, kontainer, network, volume data, dan sebagainya.

Arsitektur

Docker menggunakan arsitektur client-server. Klien Docker berkomunikasi dengan daemon Docker, yang melakukan pekerjaan berat untuk membangun, menjalankan, dan mendistribusikan wadah Docker anda. Kedua klien Docker dan daemon dapat berjalan pada sistem yang sama, atau anda dapat menghubungkan klien Docker ke daemon Docker secara remote. Klien Docker dan daemon berkomunikasi melalui soket atau melalui REST API.

Workflow

Docker Daemon

Seperti ditunjukkan dalam diagram di atas, daemon Docker berjalan pada mesin host. pengguna tidak langsung berinteraksi dengan daemon, melainkan melalui klien Docker.

Docker Client

Docker client, dalam bentuk docker biner, adalah antarmuka pengguna utama untuk Docker. Docker client untuk menerima perintah dari pengguna dan berkomunikasi bolak-balik dengan Docker daemon.

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.

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. Contohnya misalkan kita menggunakan image ubuntu, kemudian kita membuat sebuah container dari image ubuntu tersebut dengan nama ubuntuku, kemudian kita lakukan instalasi sebuah software misalnya nginx maka secara otomatis container ubuntuku akan berada diatas layer image atau base image ubuntu. Anda dapat membuat banyak docker container dari 1 docker images. Docker container ini nantinya dapat dibuild sehingga akan menghasilkan sebuah docker images, dan docker images yang dihasilkan dari docker container ini dapat kita gunakan kembali untuk membuat docker container yang baru.

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.

Untuk panduan install docker silakan ke website https://docs.docker.com/

Docker Compose

Docker-compose adalah sebuah alat dari docker yang digunakan untuk mendefinisikan dan menjalankan aplikasi multi kontainer. Dengan docker-compose kita bisa menjalankan kontainer 1 dengan yang lainya dengan 1 perintah . Docker-compose juga menggunakan yaml file untuk menyimpan konfigurasi dari service yang dibuat.

Untuk panduan docker compose silakan ke website resminya https://docs.docker.com/compose/install/