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
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
ataudocker container ls
- Melihat semua container baik yang aktif dan tidak aktif menggunakan
docker container ls -a
- Mengaktifkan container menggunakan perintah
docker container start [Nama container]
dan menonaktifkan container dengan perintahdocker container stop [Nama container]
- Menghapus container menggunakan perintah
docker rm [Nama container]
- Menghapus image docker dari server (biasanya untuk menghemat storage) menggunakan perintah
docker rmi [Nama image]
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!