Apa itu Docker dan Sejarahnya
Docker adalah program komputer yang melakukan virtualisasi di tingkat sistem operasi. Pertama kali dirilis pada tahun 2013 dan dikembangkan oleh Docker, Inc.
Docker digunakan untuk menjalankan paket perangkat lunak yang disebut container. Container diisolasi satu dengan yang lainnya dan dibundel secara terpisah berdasarkan aplikasi mereka masing-masing seperti, peralatan, perpustakaan dan file konfigurasi.
Akan tetapi mereka dapat berkomunikasi satu sama lain melalui saluran yang telah ditentukan. Semua kontainer dijalankan oleh satu sistem operasi dan oleh karenanya lebih ringan dari mesin virtual.
Container dibuat dari docker image yang berisi aplikasi-aplikasi yang spesifik sesuai fungsi dari container tersebut. Docker image biasanya dibangun dengan menggabungkan dan memodifikasi image standar yang diunduh dari repositori publik.
Perbandingan Docker vs Mesin virtual
Sebuah container berjalan secara native di Linux dan membagi kernel linux untuk menjalankan banyak container.
Program di dalam container berjalan dengan penggunaan memory tidak lebih banyak dengan menjalankannya di luar container, menjadikannya ringan.
Sebaliknya, mesin virtual (VM) menjalankan sistem operasi “tamu” lengkap dengan akses virtual ke sumber daya host melalui hypervisor. Secara umum, VM menyediakan lingkungan dengan sumber daya lebih banyak dari kebutuhan yang dibutukan oleh aplikasi.
Gambar di bawah ini bisa sebagai perbandingan antara docker vs mesin virtual
DOCKER VIRTUAL MACHINE
Perbedaan versi docker
Disini saya coba jelaskan perbedaan versi docker yang ada, Sederhananya docker terbagi menjadi 3 versi yaitu docker versi EE (Enterprise Edition), docker versi CE (Community Edition) dan docker versi CS (Commercially Supported).
- Community Edition adalah standart Docker Engine yang bersifat Opensources dengan dukungan berbasis komunitas.
- Enterprise Edition adalah Docker CE Engine yang telah di sertifikasi kepada beberapa sistem dan disupport secara ekslusif oleh Docker Inc yang tentu saja versi ini berbayar untuk supportnya.
- Commercially Supported adalah Docker EE versi lama <= 1.13 yang usernya tidak ingin mengupdate ke sistem baru akan tetapi membutuhkan support untuk pembaharuan dan keamanan lebih lanjut ini pun termasuk versi berbayar untuk supportnya.
Docker Repository
Install terlebih dahulu paket-paket yang dibutuhkan oleh docker khususnya driver devicemapper.
$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2
Untuk bisa menginstall docker versi terbaru perlu di tambahkan official repo dari docker CE.
$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
Docker instalasi
Instal docker menggunakan repo yang baru saja kita tambahkan.
$ sudo yum install docker-ce
Docker.ce sudah terinstall akan tetapi user dan group belum di setting, jalankan perintah berikut untuk menambahkan group docker dan memasukan user system kita kedalam group tersebut contoh di tulisan ini adalah user aghe.
$ sudo echo $USER
aghe
$ sudo groupadd docker
$ sudo usermod -aG docker $USER
Set docker untuk berjalan otomatis setiap server di hidupkan
$ sudo systemctl enable docker.service
Jalankan docker daemon service.
$ sudo systemctl start docker.service
Tes apakah docker sudah bisa di jalankan oleh regular user tanpa perintah sudo lakukan verifikasi dengan menjalankan program hello-world.
$ 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/get-started/
Setting remote access melalui systemd file unit.
Gunakan perintah sudo systemctl edit docker.service untuk bisa merubah atau menambahkan docker.service menggunakan program text editor default di centos nano text editor.
Masukan baris dibawah berikut kedalam unit file yang sedang di edit.
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd -H fd:// -H tcp://127.0.0.1:2375
Simpan dan keluar dari text editor, kemudian muat ulang konfigurasi systemctl dan restart docker.
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker.service
Cek untuk melihat apakah hasil konfigurasi diatas sudah sesuai dengan konfigurasi yang telah kita buat dengan mengecek output dari perintah netstat.
$ sudo netstat -lntp | grep dockerd
tcp 0 0 127.0.0.1:2375 0.0.0.0:* LISTEN 18539/dockerd
Docker compose instalasi
Tambahkan Repo EPEL jika sebelumnnya belum di tambahkan
$ sudo yum install epel-release
$ sudo yum update
Instalasi python-pip
$ sudo yum install -y python-pip
Instalasi docker compose
$ sudo pip install docker-compose
Upgrade paket python di centos 7 untuk memastikan compose bisa berjalan tanpa kendala
$ sudo yum upgrade python*
Tes jalankan compose sebagai verifikasi
$ docker-compose version
docker-compose version 1.24.0, build 0aa5906
docker-py version: 3.7.2
CPython version: 2.7.5
OpenSSL version: OpenSSL 1.0.2k-fips 26 Jan 2017
Perintah-perintah di dalam docker container
Check versi docker
$ docker version
Client:
Version: 18.09.6
API version: 1.39
Go version: go1.10.8
Git commit: 481bc77156
Built: Sat May 4 02:34:58 2019
OS/Arch: linux/amd64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 18.09.6
API version: 1.39 (minimum version 1.12)
Go version: go1.10.8
Git commit: 481bc77
Built: Sat May 4 02:02:43 2019
OS/Arch: linux/amd64
Experimental: false
Melihat list docker image yang telah di download.
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest fce289e99eb9 4 months ago 1.84kB
Mencari image secara online dari Docker HUB sebagai contoh mencari image untuk nginx web server.
$ docker search nginx
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
nginx Official build of Nginx. 11375 [OK]
jwilder/nginx-proxy Automated Nginx reverse proxy for docker con… 1598 [OK]
richarvey/nginx-php-fpm Container running Nginx + PHP-FPM capable of… 712 [OK]
jrcs/letsencrypt-nginx-proxy-companion LetsEncrypt container to use with nginx as p… 509 [OK]
webdevops/php-nginx Nginx with PHP-FPM 126 [OK]
zabbix/zabbix-web-nginx-mysql Zabbix frontend based on Nginx web-server wi… 101 [OK]
bitnami/nginx Bitnami nginx Docker Image 66 [OK]
linuxserver/nginx An Nginx container, brought to you by LinuxS… 60
1and1internet/ubuntu-16-nginx-php-phpmyadmin-mysql-5 ubuntu-16-nginx-php-phpmyadmin-mysql-5 50 [OK]
zabbix/zabbix-web-nginx-pgsql Zabbix frontend based on Nginx with PostgreS… 33 [OK]
tobi312/rpi-nginx NGINX on Raspberry Pi / ARM 26 [OK]
nginx/nginx-ingress NGINX Ingress Controller for Kubernetes 19
schmunk42/nginx-redirect A very simple container to redirect HTTP tra… 15 [OK]
nginxdemos/hello NGINX webserver that serves a simple page co… 14 [OK]
blacklabelops/nginx Dockerized Nginx Reverse Proxy Server. 12 [OK]
wodby/drupal-nginx Nginx for Drupal container image 12 [OK]
centos/nginx-18-centos7 Platform for running nginx 1.8 or building n… 10
centos/nginx-112-centos7 Platform for running nginx 1.12 or building … 8
nginxinc/nginx-unprivileged Unprivileged NGINX Dockerfiles 4
1science/nginx Nginx Docker images that include Consul Temp… 4 [OK]
nginx/nginx-prometheus-exporter NGINX Prometheus Exporter 4
mailu/nginx Mailu nginx frontend 3 [OK]
toccoag/openshift-nginx Nginx reverse proxy for Nice running on same… 1 [OK]
ansibleplaybookbundle/nginx-apb An APB to deploy NGINX 0 [OK]
wodby/nginx Generic nginx 0 [OK]
Docker dan docker-compose sudah terinstall dengan sempurna, langkah selanjutnya kita bisa mulai untuk membuat project di dalam docker container,atau kita juga bisa mulai untuk membangun web server dan bahasa pemrograman php di dalam container menggunakan image-image yang bisa di unduh melalui image repository dengan url https://hub.docker.com/search?q=&type=image.
Di tulisan saya berikutnya saya akan coba membahas lebih lanjut penggunaan docker dan docker compose secara lebih lengkap lagi.
Wassalam.