Tutorial : Menjalankan docker di VPS (KVM)

Apa itu Docker? Kapan kita memerlukan Docker?

Docker merupakan platform yang memungkinkan bagi developer untuk menyatukan semua software pendukung yang diperlukan oleh aplikasi tertentu. Konsepnya mirip dengan teknologi yang digunakan oleh Virtual Private Server, dimana setiap aplikasi akan dijalankan pada sebuah “container” tersendiri supaya tidak terpengaruh oleh aplikasi yang digunakan oleh user lain walaupun sama-sama berada di server fisik yang sama. Namun dalam hal ini, Docker dibuat untuk memudahkan developer untuk mempersiapkan environment untuk aplikasinya.

Persiapan

  • VPS berbasis KVM. Kali ini saya menggunakan OS CentOS 7.2
  • Login menggunakan non-root user

Langkah installasi Docker

User yang saya gunakan “indra”, supaya user dapat menjalankan perintah yang hanya dapat dijalankan oleh root dengan perintah sudo. Maka user ini harus ditambahkan ke group “wheel”

usermod -a -G wheel indra

Setelah akses yang diperlukan ditambahkan ke non-root user, dapat dilanjutkan dengan langkah-langkah berikut untuk instalasi Docker CE (Community Edition):

$ sudo yum install yum-utils
$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
$ sudo yum makecache fast
$ sudo yum install docker-ce
$ sudo systemctl start docker

Testing instalasi Docker

Setelah Docker berhasil terinstal, saatnya kita mencoba membuat menjalankan image dari aplikasi “hello-world” dari library docker.

$ sudo docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
9bb5a5d4561a: Pull complete 
Digest: sha256:f5233545e43561214ca4891fd1157e1c3c563316ed8e237750d59bde73361e77
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/engine/userguide/

Jalankan perintah dibawah untuk menjalankan service Docker secara otomatis pada saat server baru saja dinyalakan :

$ sudo systemctl enable docker

Cara menjalankan Docker dari user non-root

Supaya non-root user mendapatkan akses untuk dapat menjalankan perintah-perintah yang berkaitan dengan management Docker. Maka kita cukup menambahkan user yang kita ijinkan untuk mengelola Docker kedalam group “docker” yang memang dibuat pada saat instalasi paket docker di server.

Login sebagai non-root user yang sudah diberikan permisi untuk menjalankan perintah sudo dan jalankan perintah berikut :

$ sudo usermod -aG docker $USER

Setelahnya, jalankan perintah docker berikut untuk memastikan non-root user yang kita gunakan dapat menjalankan perintah docker tanpa menggunakan “sudo” :

[indra@vps root]$ whoami
indra
[indra@vps root]$ docker run hello-world

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/engine/userguide/

[indra@vps root]$ 

 

Docker Compose

Paket docker-compose, merupakan tool yang memudahkan untuk men-deploy, mengkonfigurasi dan menjalankan lebih dari satu docker container.

$ sudo -i
$ sudo curl -L https://github.com/docker/compose/releases/download/1.21.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
$ chmod +x /usr/local/bin/docker-compose

Membuat container dengan docker-compose

Selanjutnya, saya akan mencoba membuat container dengan bantuan docker-compose. Container yang saya perlukan adalah container untuk php script saya.

$ mkdir $HOME/webserver && cd $HOME/webserver
$ printf '' > phpinfo.php
$ docker run -d --name=webserver -p 80:80 -v $HOME/webserver:/var/www/html php:apache

docker_run

Keterangan perintah :

docker run :  perintah untuk membuat dan menjalankan container baru di docker platform. Di contoh menggunakan opsi -d, tujuannya agar setelah container selesai dideploy maka terminal akan langsung keluar (detach) dari container tersebut. Opsi -d dapat dihilangkan dari perintah diatas, jika kita ingin langsung berada didalam container untuk menjalankan beberapa perintah tambahan.

--name=webserver : Opsi untuk memberi nama untuk container.
-p 8080:80 : Opsi untuk port redirection dari luar container ke port didalam container.
-v $HOME/apache:/var/www/html : Opsi untuk mengaktifkan virtual mapping dari direktori yang ada di host ke direktori yang ada didalam container.
php:apache : Bagian ini menunjukkan image yang akan digunakan untuk membuat container. Daftar image ini dapat kita temui https://store.docker.com/

Setelah container webserver berhasil dibuat, kita dapat mencoba untuk mengakses apache server dari URL berikut http://YOUR-SERVER-IP:8080

Beberapa perintah yang penting di Docker

  • Melihat hanya container yang aktif di docker, bisa menggunakan docker ps atau docker container ls
    Docker_list
  • Melihat semua container baik yang aktif dan tidak aktif menggunakan docker container ls -aDocker_list_all
  • Mengaktifkan container menggunakan perintah docker container start [Nama container] dan menonaktifkan container dengan perintah docker container stop [Nama container]Docker_start
  • Menghapus container menggunakan perintah docker rm [Nama container]
  • Menghapus image docker dari server (biasanya untuk menghemat storage) menggunakan perintah docker rmi [Nama image]Docker_delete

Okay. Itu tadi sekilas pengenalan tentang Docker dan perintah-perintah yang sangat dasar. Masih banyak hal yang bisa dilakukan dengan Docker dan sangat jelas hal ini akan memudahkan developer untuk men-deliver produk nya dengan cepat. Semoga bermanfaat!

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *

This site uses Akismet to reduce spam. Learn how your comment data is processed.