Docker Engine, apakah itu?
Docker belakangan ini marak digunakan dalam dunia IT. Docker banyak digunakan oleh para sysadmin, devops engineer, developer, dan juga tentu para pegiat IT lainnya. Sebenarnya, apakah Docker Engine itu? Docker adalah sebuah platform software PaaS (Platform As A Service). Docker dikembangkan oleh Salomon Hykes pada tahun 2009. Kemudian dirilis oleh Docker Inc, pada tahun 2013. Docker dapat berjalan di Linux, Windows, MacOS.
Docker sendiri merupakan “container“. Pada praktisnya Docker merupakan sebuah software yang untuk menempatkan container untuk keperluan deployment (instalasi aplikasi) menjadi instan dan cepat, tidak lagi perlu memikirkan “environment” atau lingkungan yang ada di OS induk. Ya, Docker bagi para sysadmin akan lebih mudah dilihat sebagai semacam “mini virtual machine“. Sedangkan bagi para developer, akan mudah dilihat sebagai semacam alat untuk fast/quick install.
Secara singkat : Docker adalah platform software untuk keperluan quick deployment, dan terisolasi dengan mode OS based (seperti terpisah OS antara satu dengan lain docker).
Struktur Docker vs Virtual Machine
Dengan demikian jika sebuah datacenter memiliki satu server dan akan digunakan untuk banyak kegunaan aplikasi yang beda OS, dapat menggunakan docker ini. Contoh kasus misal, pada sebuah server CentOS 8.x, dibutuhkan dapat melakukan instalasi program-program aplikasi under Ubuntu, ataupun banyak aplikasi dengan PHP versi berbeda-beda, maka solusi Docker Engine dapat membantu hal ini. Di sana dapat dibuat banyak container docker, sesuai dengan required OS masing-masing.
Q : Lho berarti Docker itu VM dong?
A : Bukan, beda. Dia paket instalasi yang terisolasi by container. Dianggap beda OS. Maka di sini dikatakan docker environment. Sebuah isolasi lingkungan OS sendiri.
Q : Lho untungnya apa?
A : Dengan satu file docker-compose, kita bisa mendeploy aplikasi langsung berikut dengan kebutuhan OS dan program-program yang dibutuhkan. Keuntungan lain adalah docker itu scalable, dapat diatur dengan mudah dengan aplikasi tertentu dalam satu OS induk (host)
Q : Berarti, mending VM (Virtual Machine) atau Docker?
A : Nggak bisa dibandingin yaa… karena tergantung penggunaan spesifiknya
Q : Dicontohin nggak?
A : Sabar ya…
Q : Bisa diinstall di OS dan mesin manapun? Kalau gue install docker di atas VM lagi boleh nggak?
A : Bisa, dengan catatan.. VM nya berupa KVM. Untuk jenis OpenVZ harus memiliki kernel dasar di atas 3.10
Pada artikel ini akan dibahas tentang cara instalasi docker, dan contoh simpel. Pada artikel lain akan dipaparkan penggunaan-penggunaan instant app installation, dengan docker, terutama paket-paket installer untuk perguruan tinggi seperti : eprints, moodle dan sejenisnya.
System Requirements
Docker Engine memiliki kebutuhan tertentu untuk dapat berjalan. Kebutuhan minimum antara lain adalah :
CPU | 2 Core @ 2.1GHz |
Memory | 8 GB |
Virtualisasi | Dedicated Server
KVM OpenVZ kernel 3.10 ke atas |
Versi Kernel | 3.10 ke atas |
OS | Ubuntu,
Debian, Windows Centos di bawah versi 8 |
Cara Instalasi Docker Engine pada Ubuntu 16.04
Pada Linux, instalasi Docker Engine pada umumnya sudah didukung oleh repository distro Linux tersebut. Namun pada CentOS 8, CentOS mulai meninggalkan dukungan terhadap Docker. Untuk containerize CentOS 8, diganti dengan platform bernama : podman. Lho, lantas untuk instalasi Docker di CentOS bagaimana? Jika memang sangat diperlukan, ya diinstal secara terpisah. Dapat menggunakan source compile atau paket tambahan dari repo lain. Untuk instalasi Docker pada Ubuntu, hingga Ubuntu 20 belum banyak perbedaan.
Untuk instalasi Docker pada Ubuntu cukup mudah. Berikut langkah-langkahnya :
1. Adopt Repo Docker Engine
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo apt install software-properties-common sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" apt update apt install docker-ce -y
2. Check Status Instalasi, Startup dan Kondisi Service
Check status instalasi Docker Engine :
dpkg -l | grep docker
Seharusnya mengeluarkan pesan seperti berikut :
ii docker-ce 5:19.03.6~3-0~ubuntu-xenial amd64 Docker: the open-source application container engine ii docker-ce-cli 5:19.03.6~3-0~ubuntu-xenial amd64 Docker CLI: the open-source application container engine
Jika belum mengeluarkan pesan sejenis ini, berarti belum terinstal.
Check Status Startup
systemctl status docker
Seharusnya mengeluarkan pesan seperti berikut :
Pada sistem operasi Ubuntu dan Debian, sesaat sesudah proses instalasi via repo, maka service akan langsung dinyalakan, dan secara default langsung menjadi startup (program yang langsung nyala saat OS menyala).
systemctl status docker #cek status enable dan operasional systemctl enable docker #menjadikan docker sebagai startup service systemctl disable docker #mendisable docker dari startup service systemctl start docker #menjalankan service docker systemctl stop docker #stop service docker systemctl restart docker #merestart service docker
Check daemon Docker Engine dengan CLI (Command Line Interface)
ps axuwf | grep docker
jika service docker menyala akan menghasilkan minimal seperti berikut :
root 7566 0.0 0.7 698616 15132 ? Ssl 09:01 0:23 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
Jika sudah banyak container yang berjalan pada docker tersebut, akan berisi seperti berikut :
Selain itu dapat juga menggunakan perintah check Listen Port dan Socket
sudo netstat -pluntx | grep docker
Pada perintah ini, Linux akan mengeluarkan hasil berupa seluruh port dan socket yang digenerate oleh Docker. Jika Docker belum terisi container, maka yang muncul hanyalah docker socket, dan docker-proxy. Yang sering dilupakan pada perintah netstat saat check listening service, opsi -x itu sangat berguna untuk mengeluarkan kondisi daemon socket.
Sampai di sini, instalasi Docker Engine pada Ubuntu telah selesai. Untuk CentOS 7 bagaimana? Lanjut….
Cara Instalasi Docker pada CentOS 7.x
Perbedaan cara instalasi Docker Engine pada Ubuntu dan Centos sebenarnya tidak begitu banyak. Perbedaan hanya pada adopt repo, perintah instal dari repo, dan perintah post install. Mari kita mulai :
1. Adopt Repo Docker Engine
yum install wget curl yum install -y yum-utils yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo yum list | grep docker-ce yum install docker-ce
2. Check Status Instalasi, Startup dan Kondisi Service
Berbeda dengan di Ubuntu dan Debian, CentOS tidak langsung mengaktifkan service setelah diinstal. Dia harus di-enable-kan dulu startupnya, kemudian distart. Sebaliknya, kondisi firewall service (firewalld dan iptables) justru langsung aktif. Hal ini akan banyak membuat beberapa service yang melibatkan pembukaan port, tidak langsung jalan, meski service telah menyala
systemctl enable docker systemctl start docker systemctl status docker
Agar mempermudah proses belajar, firewall kita matikan dulu ya 😁 , besok kita nyalakan lagi..
systemctl stop firewalld systemctl disable firewalld
Untuk langkah lain seperti check startup, check daemon, ps, dan netstat memiliki cara langkah yang sama.
Docker Hello World
Pelajaran pertama di dunia IT haruslah “Hello World”. Kita belum tahu, dalam server kita sudah ada container belum. Cara untuk mengetahui adalah dengan perintah :
Check Images
Untuk cek isi container yang ada dalam Docker Engine kita, dapat digunakan perintah ini:
docker images
Jika belum pernah melakukan pengisian container, maka isinya akan kosong. Namun beda dengan yang sudah berisi. Misal :
Check container yang berjalan
Untuk melihat isi container yang berjalan dapat menggunakan :
docker ps
Pada docker engine yang sudah berisi container, dan container tersebut running, maka perintah ini akan menghasilkan result listing proses docker seperti berikut :
Docker Hello World
Mari kita jalankan dulu :
docker run hello-world
Akan muncul seperti berikut :
Jangan panik dulu dengan kata Unable to … Docker akan mencari image container secara lokal terlebih dulu, jika tidak ditemukan, maka dia akan mencari keluar, yaitu ke docker hub, yaitu suatu docker repository yang berisi banyak image dan docker source di sana. Proses mengambil image docker dari luar dinamakan docker pull
Cara Mencari Docker Image
Perintah untuk mencari docker adalah dengan cara :
docker search [blabla]
Misal adalah
docker search apache2
Cara Mengambil Docker Image
Setelah didapatkan daftar docker image dari perintah docker search, maka bisa diambil nama itemnya untuk di-pull
docker pull [blabla]
misal :
Hati-hati ya, docker pull jangan dibiasakan di koneksi selular. 😁.. Kuota bisa jebol, karena biasanya pull melibatkan pengambilan image-image sebesar image OS. Kalau cuma HTTPD atau Apache mungkin belum terasa besar.
Menjalankan Docker Image
Menjalakan proses docker image sebenarnya hanyalah dengan perintah :
docker run [blabla]
Namun karena jika tanpa opsi apapun, docker tersebut tidak akan berjalan di balik layar, dan hanya akan menampilkan pesan blank. Selanjutnya di beberapa docker yang dibutuhkan portnya (port 80 misal), akan diperlukan juga statement untuk mengeluarkan port. Pada contoh ini kita coba untuk menghidupkan service docker httpd keluar pada port 9081.
docker images | grep httpd docker run -it -p 9081:80 -d httpd sudo netstat -plunt | grep 9081
Saat ini pada PC saya, dibuka dengan http://localhost:9081 sudah memunculkan : It Works
Menghentikan Proses Docker Image
Proses menghentikannya cukup mudah, yaitu mencari docker yang berjalan, kemudian distop container id yang ada.
docker ps | grep httpd docker stop [blabla]
Sampai di sini, pengantar instalasi docker. Artikel ini akan menjadi bahan rujukan kembali saat kelak kita akan mencoba instalasi beberapa aplikasi pendukung akademik yang berbasis docker. Artikel ini, juga ditulis untuk dipersembahkan untuk para developer, sysadmin, network engineer dan devops engineer kampus.