- Why Docker
- What is Docker
- Special File in Docker
- Run a Docker Container
- Build a Docker Image
- Docker Compose
- References
Pada suatu kala di dunia deployment, programmer sering kali memiliki permasalahan ini:
Apakah bila bertemu masalah seperti ini artinya kita harus deploy di komputer programmer tersebut? tentu tidak bukan?
Nah hal inilah yang ingin kita selesaikan dengan menggunakan Docker !
Docker adalah sebuah program yang bisa kita gunakan untuk membuat sebuah lingkungan yang kita sebut "container". Container ini mirip dengan sebuah kotak kecil yang berisi semua yang kita perlukan untuk menjalankan sebuah program komputer.
Dengan container, kita bisa membuat sebuah lingkungan yang terisolasi di dalam komputer kita, dan kita bisa memasukkan program komputer ke dalam container tersebut. Ini sangat membantu kita untuk membuat program komputer yang bisa berjalan dengan lancar di komputer apapun, karena kita sudah membawa lingkungan yang dibutuhkan oleh program tersebut di dalam container.
Jadi, secara sederhana, docker bisa kita gunakan untuk membuat sebuah "kotak" yang berisi semua yang kita butuhkan untuk menjalankan sebuah program komputer, sehingga program tersebut bisa berjalan dengan lancar di komputer apapun.
Namun sebelum kita bisa membuat container, terlebih dahulu kita membutuhkan sebuah image / cetakan / •blueprint* dari aplikasi yang ingin dijalankan dalam "kotak" tersebut. Image ini bisa kita buat sendiri, atau kita bisa mendownloadnya dari internet.
Jadi dalam Docker (yang kita ketahui sekarang, ada 3 istilah yang serupa namun tak sama):
Image
- Cetakan AplikasiContainer
- Kotak di mana Aplikasi berjalanDocker
- Tools untuk membuat dan memanage container
Dalam Docker ini sendiri akan ada banyak file dan perintah yang akan dipelajari, namun untuk saat ini kita akan fokus pada 2 file yang sangat penting dalam Docker, yaitu:
- Dockerfile, yang digunakan untuk membuat sebuah image
- .dockerignore, yang digunakan untuk mengabaikan file yang tidak perlu di include dalam image
Dockerfile adalah sebuah file yang berisi perintah-perintah yang akan digunakan untuk membuat sebuah image. Perintah-perintah ini akan dijalankan secara berurutan, dan akan menghasilkan sebuah image yang bisa kita gunakan untuk membuat sebuah container.
.dockerignore adalah sebuah file yang berisi daftar file dan folder yang tidak perlu di include dalam image. Anggap saja ini adalah file .gitignore
, namun untuk Docker.
Sudah, yuk, cukup dengan teori, mari sekarang kita coba ber-"main" dengan Docker !
Mari kita install Docker terlebih dahulu dengan mengikuti langkah yang ada di sini yah - https://docs.docker.com/get-docker/
Kemudian setelah itu mari kita coba untuk menjalankan aplikasi favorit kita yang bernama .... Hello World
Karena kita belum memiliki aplikasi apapun, maka kita akan "meminjam" untuk image yang sudah dibuat oleh komunitas dari sebuah tempat yang bernama Docker Hub
yah - https://hub.docker.com/
Untuk mengunduh image Hello World yang ada di Docker Hub (https://hub.docker.com/_/hello-world) dan menjalankannya pada Docker local kita, kita bisa menggunakan perintah berikut:
docker run hello-world
Dengan menggunakan perintah ini akan muncul tulisan hello world dalam Docker, kemudian aplikasi akan langsung selesai (berhenti).
Tapi cari ini ada caveat nya loh !
Ketika kita melihat ada proses aplikasi apa saja yang berjalan dengan menggunakan docker ps -a
, kita akan melihat bahwa container yang dibuat berdasarkan image hello-world tersebut tidak lagi berjalan, namun masih ada !
Untuk bisa menghapus image tersebut maka kita bisa menggunakan perintah docker rm <container_name>
.
Supaya hal ini tidak terjadi lagi untuk aplikasi sekali jalan seperti ini, kita bisa menggunakan perintah --rm
untuk menghapus container tersebut setelah aplikasi selesai berjalan.
docker run --rm hello-world
Perintah yang sudah dipelajari:
docker run <image_name>
docker ps -a
docker rm <container_name>
Sudah, mari skip bagian teorinya dan langsung masuk ke bagian prakteknya yah !
Untuk bisa membuat dan menjalankan aplikasi starter pack yang dibuat, langkahnya adalah sebagai berikut:
- Generate dan entry database production
- Membuat Dockerfile
Mulai susah karena Dockefile-nya cukup banyak? Selamat, kita sudah butuh suatu "manajer" dari Docker yang ada.
Istilah kerennya disebut dengan suatu "orchestrator" untuk si Docker ini.
Umumnya ada 2 Orchestrator untuk Container yang menggunakan Docker:
- Docker Compose
- Kubernetes
Perbedaan mendasarnya adalah:
- Docker Compose fokus pada Container yang menggunakan Docker, Kubernetes seluruh Container yang disupport
- Docker Compose memiliki fitur yang lebih terbatas, namun lebih mudah, ketimbang menggunakan Kubernetes
Pada Pembelajaran di sini kita menggunakan Docker Compose
yah.