Di zaman modern seperti saat ini, perkembangan teknologi bisa dibilang sangat cepat. Terutama bidang yang dijalani oleh saya dan juga teman-teman, yaitu IT/Komputer.
Salah satu yang sedang booming saat ini adalah Container atau sering juga disebut Modern Application. Container sebenernya bisa diartikan dengan makna sebenarnya kata tersebut, container=container 😀 . Layaknya container di dunia nyata, container pada dunia komputer berisi 1 aplikasi dengan package-package, utilities, dependencies yang dibutuhkan aplikasi tersebut sehingga bisa berfungsi sebagaimana mestinya.
Kemudahan yang bisa didapat dari penggunaan container ini, teman-teman tidak perlu lagi instalasi/setup sebuah aplikasi dengan cara yang jadul. Melainkan, teman-teman bisa setup sebuah aplikasi dengan cara yang modern menggunakan images yang sudah tersedia pada public registry (Modern Application). Cukup deploy images, aplikasi langsung bisa dipakai.
Dengan container ini, teman-teman yang berkecimpung di bidang IT tidak perlu lagi setup aplikasi dengan cara seperti ini :
- Instalasi OS
- Instalasi Utlities, Dependencies Package
- Instalasi Aplikasi
- Konfigurasi Aplikasi
- Konfigurasi Firewall
- Gunakan Aplikasi
Tetapi cukup dengan cara seperti ini :
- Instalasi OS
- Instalasi Aplikasi Container
- Deploy Container menggunakan Image
- Gunakan Aplikasi
Lebih mudah kan?
Biasanya container ini sangat sering digunakan oleh developer aplikasi, salah satu contohnya adalah developer web. Biasanya developer web deploy apache diatas container untuk membuat ataupun mengembangkan web yang sedang dikerjakan. Secara teknis, penggunaan apache diatas container ini lebih mudah bagi developer karena tidak perlu melakukan instalasi dan konfigurasi aplikasi apache-nya.
Aplikasi container yang biasa saya gunakan adalah Docker, yang merupakan aplikasi open-source.
Selanjutnya, saya akan menunjukkan langkah-langkah instalasi Docker pada sistem operasi Centos 7.
Instalasi Docker
- Catat IP Address yang digunakan oleh Centos 7, misalnya ip yang saya gunakan adalah sebagai berikut :
IP Address Centos 7 : 192.168.11.81
- Instal dependencies yang dibutuhkan yang diperlukan oleh Docker dengan perintah berikut :
[root@centos ~]# yum install yum-utils device-mapper-persistent-data lvm2 -y
- Menambahkan repository Docker kedalam list repo Centos 7 dengan perintah berikut :
[root@centos ~]# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
- Instal Docker (stable) versi terbaru dengan perintah berikut :
[root@centos ~]# yum install docker-ce -y
- Start service Docker dan enable supaya service Docker otomatis running saat Centos 7 booting, dengan perintah berikut :
[root@centos ~]# systemctl start docker [root@centos ~]# systemctl enable docker Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
Uji Coba Docker
Selanjutnya, adalah deploy container menggunakan Docker
- Dapatkan container images yang berisi aplikasi Apache (httpd) dan Nginx dari Docker registry dengan perintah berikut :
[root@centos ~]# docker pull httpd:2.4 2.4: Pulling from library/httpd 000eee12ec04: Pull complete 32b8712d1f38: Pull complete f1ca037d6393: Pull complete c4bd3401259f: Pull complete 0213122c8c28: Pull complete Digest: sha256:a45d041cc64876eade5209784c472f373886950925e86a233f73c3f577c9d207 Status: Downloaded newer image for httpd:2.4 docker.io/library/httpd:2.4 [root@centos ~]# docker pull nginx:1.16.1 1.16.1: Pulling from library/nginx 000eee12ec04: Already exists b93d1cdc319b: Pull complete acffb274864f: Pull complete Digest: sha256:8e05c1256640382a6ea4452fb90c031ce3938315363a5fecc9bda792ee700f71 Status: Downloaded newer image for nginx:1.16.1 docker.io/library/nginx:1.16.1
- Tampilkan list Docker image yang baru saja di download dari Docker registry dengan perintah berikut :
[root@centos ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx 1.16.1 89749ed4f17d 4 days ago 126MB httpd 2.4 d4a061d58465 4 days ago
- Catatan : Saya akan gunakan container Apache (httpd).
- Membuat direktori yang akan digunakan sebagai share volume sekaligus tempat index.html container Apache. Misalnya dengan perintah berikut :
[root@centos ~]# mkdir apache [root@centos ~]# cd apache [root@centos apache]# pwd /root/apache/
- Catat hasil perintah pwd, folder tersebut akan kita gunakan untuk share volume dengan container Apache
- Buat file index.html pada direktori yang akan digunakan untuk share folder container dengan text editor yang teman-teman biasa gunakan. Berikut contoh isi file index.html-nya :
<!DOCTYPE html> <html lang="en"> <head> <title>Container Apache di Docker</title> </head> <body> <h1>Ini Web Berbasis Apache Diatas Container Docker</h1> </body> </html>
- Deploy container Apache dengan perintah berikut :
[root@centos apache]# docker run -dit -p 80:80 -v /root/apache/:/usr/local/apache2/htdocs/ httpd:2.4 a94ebb63eed3174a117e7c31076af599fa34939917dcd4efdab6750dca7eb110
- -p 80:80 = Opsi ini digunakan untuk mengarahkan traffic yang mengarah ke port 80 Centos 7 akan diarahkan ke port 80 container Apache. Dalam kasus ini kenapa sih seperti ini? Karena port default yang digunakan oleh Apache adalah 80, sehingga disini saya menggunakan port 80 untuk memudahkan saat web Apache diakses. Sebenarnya bisa saja saya menggunakan port lain misalnya 8080, yang berarti traffic yang mengarah ke port 8080 Centos 7 akan diarahkan ke port 80 container Apache, tapi hal tersebut bisa menyebabkan perubahan akses, yang awalnya hanya http://192.168.11.80 menjadi http://192.168.11.80:8080.
- -v /root/apache/:/usr/local/apache2/htdocs/ = Opsi ini digunakan untuk share volume (/root/apache/) yang diarahkan ke direktori tempat index.html aplikasi Apache (/usr/local/apache2/htdocs/)
- Menampilkan list container yang sedang berjalan dengan perintah berikut :
[root@centos apache]# docker container ls CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a94ebb63eed3 httpd:2.4 "httpd-foreground" 10 seconds ago Up 9 seconds 0.0.0.0:80->80/tcp vigorous_poitras
- Akses web Apache dengan mengetikkan IP address Centos 7 (192.168.11.80)
Cukup mudah kan? Jika dibandinkan dengan cara instal aplikasi dengan cara biasa.