Sebagai seorang Research and Development dan sekaligus Java Software Programer, tidak jarang loh berurusan dengan product brended sekelas IBM, Oracle dan lainnya. Misalnya karena kerjaan kita adalah mendevelop aplikasi setelah itu aplikasi tersebut harus run di product IBM misalnya JBoss EAP versi 7.x.x kemudian Untuk database menggunakan product Microsoft MS-SQL Server 2017.

Permasalahnya tidak berhenti sampai situ? Permasalahan sebenarnya product branded tersebut punya spesifikasi masing-masin contohnya MS SQL Server hanya run di Microsoft Azure, dan Linux Server sedangkan tidak semua Developer memiliki platform tersebut dan spesifikasi laptop dan komputer yang memadai untuk me-runing product tersebut.

docker

Solusinya yaitu dengan virtualisasi, virtualisasi seperti apa? VMware atau Virtual box??? opppsss itu udah kuno. Perkenalkan ada teknologi yang baru-baru (2017) ini ramai di perbincangkan yaitu Docker.

what is docker

Jadi docker itu software virtual, untuk menjalankan application, operation system, engine, database dan masih banyak lagi di dalam host kita dengan menggunakan docker image yang diruning dalam docker container contohnya

Mininum System required

  • Linux
  • Mac Os Sierra or lastest
    • Mac hardware must be a 2010 or newer model, with Intel’s hardware support for memory management unit (MMU) virtualization, including Extended Page Tables (EPT) and Unrestricted Mode
    • macOS El Capitan 10.11 and newer macOS releases are supported
    • At least 4GB of RAM
  • your machine must have a 64-bit operating system running Windows 7
    • Docker for Windows requires Microsoft Hyper-V to run
    • Virtualization must be enabled in BIOS and CPU SLAT-capable

Docker Image

Docker images adalah ibaratnya installer aplikasi, aplikasi yang akan kita install kita harus pull dulu dari docker-hub konsep nya sama seperti git jadi kita pull, contohnya kalo kita mau install postgresql dalam docker container jadi kita pull dulu coba ke docker hub kemudian cara official repository untuk postgresql atau kita juga bisa menggunakan yang unofficial repository. bedanya klo yang official ada mark official atau di urlnya seperti berikut official postgres repository tapi sebelum itu kita harus login dulu klo belum punya akun daftar aja gratis kok dan tidak butuh kartu kredit :)

docker pull postgres

Setelah tadi kita pull maka daftar aplikasi yang telah siap digunakan atau di pasang di Docker container seperti berikut:

docker image ls
## output
# REPOSITORY                     TAG                 IMAGE ID            CREATED             SIZE
# mysql                          5.7                 563a026a1511        2 weeks ago         372MB
# postgres                       9.6                 0178d5af9576        4 weeks ago         229MB
# microsoft/mssql-server-linux   2017-latest         e254a7681c2f        5 weeks ago         1.44GB


Docker Container

docker container

Docker container, itu ibaratnya applikasi yang telah terinstall dari Docker image. Misalnya kita mau install postgresql, kita bisa baca2 dokumentasinya dulu properties apa aja yang harus di pasang contohnya seperti berikut:

docker container run \
    --name postgres_db \
    -p 5432:5432 \
    -v /var/lib/postgresql/data \
    -e POSTGRES_PASSWORD=postgres \
    -e POSTGRES_DB=data_db \
    -d \
    postgres:9.6

Artinya dari perintah tersebut:

  • service_name : postgres_db untuk argument --name postgres_db
  • port yang di expose : 5432 untuk argument -p 5432:5432
  • password untuk user postgres : postgres untuk argument -e POSTGRES_PASSWORD=postgres
  • database name : data_db untuk argument -e POSTGRES_DB=data_db
  • postgresql version : 9.6
  • jalankan di background, untuk argument -d

Nah sekarang kita bisa check containernya apakah udah run dengan cara perintah berikut:

docker container ls
## output console
#CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
#b91d16813041        postgres:9.6        "docker-entrypoint.s…"   2 minutes ago       Up 45 seconds       0.0.0.0:5432->5432/tcp   postgres_db

Setelah itu kita bisa connect ke postgresql dalam docker container, caranya sama seperti biasa:

psql -h 127.0.0.1 -U postgres data_db

Hanya bedanya kita tidak menggunakan database yang di install di host kita. Nah mungkin dari temen-teman buat apa nanti datanya hilang donk. Eitssss tenang klo datanya mau di keep ada fiturnya kok namanya docker volume nanti akan saya jelaskan yang pasti ini akan memudahkan developer dalam develop app apalagi untuk barang branded seperti Oracle Database, Centos os, JBoss eap dan masih banyak lagi.

Summary

Keuntungan menggunakan docker yaitu,

  • kita tidak perlu ribet set environment di host kita
  • Tidak perlu takut salah waktu install software sehingga tidak menggangu performa host kita.
  • Tidak memakan banyak memory (RAM) seperti di VM
  • Kita bisa menggunakan application yang sama dalam beberapa instance sekaligus tetapi dengan syarat port / enviroment yang berbeda (masih dalam host yang sama).
  • Jika aplikasi udah tidak kita gunakan dapat dengan mudah untuk di drop dari container (ini yang paling make me impressed) tanpa ada yang berpengaruh karena di install di virtual.