Sebenarnya saya telat ya menulis artikel ini, karena saya malah sudah membahas container orchestration wkwkwk. Jadi saya menulis ini dikarenakan ada seseorang yang meminta saya untuk dijelaskan tentang Docker, dia seorang programmer yang baru saja mendapat pekerjaan dan perusahaannya (mungkin) menuntut dia agar bisa menguasai Docker. Sekarang yang jadi pertanyaan, “Kenapa seorang programmer harus memahami Docker?”, jawabannya adalah (menurut saya) dikarenakan konsep Microservices yang kian populer kontainerisasi menjadi sesuatu yang penting didalam suatu instansi/perusahaan, sebenarnya ada seorang DevOps yang akan mengurus tentang kontainerisasi, namun programmer pun akan dipaksa bekerja dalam environment kontainer tersebut yang menghasilkan statement bahwa programmer pun juga harus mengenal atau menguasai kontainerisasi dalam konteks artikel ini yaitu Docker. Atau dalam kasus lain, dikantornya mungkin dia adalah Programmer Superman.
Apa itu Docker dan Apa perbedaannya dengan VM
Seperti yang sudah saya singgung sebelumnya tentang kontainerisasi, Docker merupakan sebuah tempat yang menampung program beserta library, file konfigurasi, dll. Kontainer ini berbeda dengan virtual machine yang mana perbedaanya terdapat pada penggunnan sistem operasi pada masing-masing nodenya. Virtualisasi berjalan diatas hypervisor dan guest OS, docker dapat menjalankan aplikasi langsung tanpa kedua hal tersebut. Lebih jelasnya perhatikan bagan berikut :

Kenapa Pakai Docker?
- Ya… seperti yang sudah anda baca diatas, daripada kita menggunakan VM untuk aplikasi berbasis microservices, yang harus melakukan installasi OS, Aplikasi, library, dll. Lebih baik menggunakan container.
- VM juga saya rasa terlalu boros dalam hal resources terutama storage. Jadi kehadiran docker sangat membantu kita.
- Untuk Docker sendiri menurut saya penggunaannya simpel dan perintah-perintahnya mudah dipahami (namun docsnya lumayan sampah).
- Docker bersifat Open source dibawah lisensi Apache Versi 2.0 yang bisa dipergunakan secara gratis.
Komponen Docker
Terdapat beberapa komponen pada Docker yang saling membutuhkan satu sama lain. Diantaranya adalah :
- Docker Image : merupakan sebuah template yang bersifat read-only, di dalamnya akan terdapat sistem operasi beserta aplikasi. Image dasar dapat dibuat sendiri dengan menambahkan aplikasi yang dibutuhkan ke dalam Dockerfile dan hasilnya dapat kita simpan ke Registry.
- Docker Container : merupakan runtime instance dari Docker image. Container mengandung seluruh kebutuhan untuk aplikasi sehingga aplikasi dapat berjalan dengan cara yang terisolasi.
- Docker Registry : merupakan komponen penyimpanan untuk Docker image. Berupa repository yang dapat diatur public maupun private, untuk kepentingan kolaborasi bersama orang lain. Docker Hub merupakan repository cloud yang disediakan oleh Docker secara gratis. Docker Hub sendiri adalah repository yang bersifat public. Jika ingin private, mungkin kalian dapat mencoba Gitlab, Bitbucket, dll.
- Dockerfile : berupa file yang mengandung serangkaian instruksi tentang bagaimana membangun Docker Image. Docker image tersebut mengandung setiap kode dengan dependensinya. Contoh Dockerfile yang sederhana dengan image
node.js versi 10.
|
|
Pelajari Dulu Basic Commandnya
Basic Command ini sebenarnya, perintah-perintah Docker yang sering digunakan saja, untuk perintah-perintah yang lain silahkan kalian explore sendiri ya. Saya sengaja menuliskannya berurutan, agar kalian mudah untuk mempelajarinya terutama step-by-stepnya. Langsung saja, berikut adalah listnya :
Mengunduh Docker Image
Kita bisa mengunduh Docker image dari registry dengan perintah Docker Pull. Commandnya sangat sederhana, sebagai contoh saya ingin mengunduh image nginx dengan tag latest.
|
|
Melihat daftar image yang dimiliki
|
|
Mengganti nama/tag image
Ini biasanya berfungsi saat kita ingin mengunggah image ke registry docker hub. Dalam docker hub, image yang diunggah harus berformat <username>/<nama_image>. Berikut contoh perintahnya.
|
|
Menghapus Image
|
|
Membuat Docker Image
Untuk langkah ini, sebenarnya kita harus punya Dockerfile terlebih dahulu. Anyway… Berikut perintahnya.
|
|
Membuat Container
|
|
Menjalankan Container
|
|
Membuat sekaligus Menjalankan Container
Sebenarnya ada cara untuk membuat container sekaligus menjalankannya, yaitu dengan menggunakan perintah docker run. Jika kalian lihat perintah dibawah terdapat -d, itu berfungsi agar container berjalan di backgroud. Karena defaultnya, dengan perintah ini container akan berjalan dengan menampilkan log.
|
|
Lalu bisa kalian cek dengan membuka browser, lalu memasukkan URL http://localhost:81.

Melihat Container
|
|
Stop & Restart Container
|
|
Menghapus Container
Untuk menghapus kontainer, posisi kontainer harus dalam keadaan mati/stopped. Jika ingin menghapus kontainer yang sedang berjalan secara paksa, kalian bisa menambahkan flag -f.
|
|
Login Registry
Sebagai contoh, disini saya login ke registry docker hub, dengan akun saya sendiri.
|
|
Push Image ke Registry
Jika kalian bingung kenapa imagenya tidak bisa diunggah karena tadi bacanya di skip-skip. Mending kalian baca lagi perintah untuk mengganti nama image.
|
|
Penutup
Menurut saya sampai disitu saja penjelasan dari saya. Jika ada tambahan atau pertanyaan, silahkan tampung pada kolom komentar. Sekian dan terimakasih…
Referensi
- https://docs.docker.com
- Pengalaman Pribadi