https://medium.com/programmer-zaman-now/kenapa-wajib-mengerti-docker-6b48bc2c05c3

“Kok di kamu bisa jalan ya? sedangkan di saya tidak?”

Sebagai pengembang software terlebih pada saat pengerjaan proyek tim pernah mengalami hal tersebut bukan? Docker adalah solusinya, dengan docker hal tersebut bukan lagi masalah, docker akan menyesuaikan lingkungan tempat Anda melakukan coding.

Apa itu Docker?

Docker adalah platform perangkat lunak yang memungkinkan untuk membuat, menguji, dan menerapkan aplikasi dengan cepat. Docker mengemas perangkat lunak ke dalam unit standar yang disebut kontainer yang memiliki semua yang diperlukan perangkat lunak agar dapat berfungsi termasuk pustaka, alat sistem, kode, dan waktu proses. Dengan menggunakan Docker, Anda dapat dengan cepat menerapkan dan menskalakan aplikasi ke lingkungan apa pun dan yakin bahwa kode Anda akan berjalan.

Docker juga merupakan solusi dari permasalahan yang kerap dialami para developer untuk mengembangkan aplikasi mereka agar bisa berjalan fleksibel di berbagai lingkungan. Tujuan digunakannya Docker adalah untuk membuat aplikasi menjadi portable dan simpel.

Aritektur Docker

https://www.aquasec.com/cloud-native-academy/docker-container/docker-architecture/

Komponen pada Docker

Docker memiliki beberapa komponen yaitu:

  • Docker image, merupakan file berisi informasi dan petunjuk untuk membangun container. Image juga berfungsi untuk menggunakan dan mengirimkan informasi;
  • Container, adalah lingkungan untuk mengemas dan menjalankan aplikasi. Ini mencakup kode, runtime, system tools, dan pengaturan. Container hanya bisa mengakses resource yang telah ditentukan dalam docker image;
  • Docker client, yaitu tempat di mana pengguna dapat mengirimkan perintah seperti docker build, docker pull, dan docker run kepada Docker daeomon;
  • Docker Engine Rest API, digunakan untuk berinteraksi dengan Docker daemon. Ini bisa diakses klien melalui HTTP;
  • Docker host, menyediakan lingkungan yang lengkap untuk menjalankan aplikasi. Dia bertanggung jawab terhadap penerimaan perintah yang diberikan Docker client;
  • Docker daemon, yaitu proses pengelolaan Docker images, kontainer, network, dan storage volumes. Docker daemon menerima request dari Docker API dan akan memprosesnya;
  • Docker registry, wadah untuk menyimpan Docker image. Docker image akan memberi reaksi sesuai perintah yang diberikan. Misalnya saat diberi perintah docker push, docker image akan didorong atau dibagikan ke registri Docker Hub;
  • Docker Hub adalah layanan yang disediakan untuk menemukan dan berbagi gambar container dengan tim.

Docker Orchestration

Docker / Container orchestration adalah tentang mengelola lifecycle container, terutama di lingkungan yang besar dan dinamis. Tim software engineering menggunakan container orchestration untuk mengontrol dan mengotomatiskan banyak tugas. Docker orchestration mengotomatiskan penerapan, pengelolaan, penskalaan, dan jaringan container. Ini dapat digunakan di lingkungan apa pun di mana Anda menggunakan kontainer. Ini juga dapat membantu Anda menerapkan aplikasi yang sama di lingkungan yang berbeda tanpa perlu mengubahnya. Pengubahan tersebut adalah tugas-tugas yang bisa merepotkan untuk mengelolanya bila dilakukan secara manual.

Docker / container orchestration digunakan dengan alasan yaitu memenuhi layanan sebagai berikut:

  • Bisa Fault-Tolerant
  • Bisa di-scale up secara mudah dan on-demand process
  • Memakai resources secara maksimal
  • Dapat menemukan & berkomunikasi secara otomatis dengan aplikasi yang kita bangun dalam satu cluster satu sama lain
  • Dapat diakses oleh seluruh dunia
  • Bisa update/rollback tanpa adanya Downtime

Bagaimana Docker Bekerja?

Sumber : https://medium.com/@anirudh.rajmohan/client-server-architecture-1bbaf457876a

Docker bekerja menggunakan client-server architecture. Clien-server architecture merupakan struktur yang membagi tugas atau beban kerja antara penyedia sumber daya atau layanan, yang disebut server, dan peminta layanan, yang disebut klien.

Tiga hal utama yang dilakukan client adalah build, pull, dan run.

Build

Client ketika melakukan docker build akan menghasilkan suatu file image berdasarkan DockerFile yang ada. DockerFile ini berisi tentang apa saja yang dilakukan ketika meng-assemble file image yang ada.

Contoh DockerFile yang berjalan pada Node.js
perintah untuk docker build

Pull

Lalu untuk perintah docker pull, yaitu manarik image file atau repositori dari registry sesuai yang sudah dituliskan diperintah ke lokal. Berikut adalah contoh perintah docker pull.

pull repositori dari hsjsjs009/csui-comp-net-dummy-server

Run

Terakhir yaitu docker run yaitu membuat container berdasarkan image file yang ada dan menjalankan perintah sesuai perintah yang dituliskannya.

STUDENT_NAME merupakan option tambahan yang harus diisi bergantung pada image file

Berikut adalah perintah-perintah lainnya yang ada

Docker di Proyek Perangkat Lunak…

Pada proyek perangkat lunak kali ini kita tidak menggunakan docker, karena proyek kita berbasis mobile app dengan framework Flutter yang dijalankan langsung pada smartphone, API nya pun juga sudah diberikan oleh partner sehingga tidak dapat memberikan contoh implementasinya 😣. Namun saya berharap artikel ini dapat membantu kalian yang membacanya.

Referensi

Mahasiswa Fasilkom UI angkatan 2018

Mahasiswa Fasilkom UI angkatan 2018