Anda di halaman 1dari 11

Mengenal Teknologi Docker

Perkembangan teknologi dewasa ini, tidak terlepas dari dukungan


program dan aplikasi yang tersedia dan terus beragam. Pengembang dapat
dengan mudah mengembangkan suatu aplikasi dengan berbagai tools yang
sudah tersedia. Semakin lama, proses pengembangan dari awal hingga siap
didistribusikan menjadi semakin mudah. Berbagai langkah rumit dan
memusingkan, kini sudah tidak dirasakan lagi.

Dalam membangun program, pengembang biasanya menjalankan


virtualisasi pada server sehingga proses pembuatan program dapat berjalan
pada berbagai platform maupun konfigurasi hardware. Masalah yang
dihadapi dengan virtualisasi adalah perlunya menyiapkan satu sistem
operasi secara utuh, termasuk berbagai aplikasi yang dibawa sistem
tersebut. Bisa dibayangkan dengan banyaknya virtualisasi yang berjalan di
sebuah server akan memberatkan sistem tersebut.

Container kemudian datang dan membawa beberapa perubahan.


Dengan container, sebuah program diikat beserta library-nya, file
konfigurasi, dan seluruh hal yang dibutuhkannya. Perbedaan yang sangat
terlihat dibandingkan dengan virtualisasi adalah container memiliki ukuran
file yang jauh lebih kecil karena tidak perlu menyiapkan sistem operasi
secara penuh. Dalam hal ini, pengembang biasa menyebutnya sebagai
lightweight platform. Aplikasi yang berjalan menggunakan container pun
jauh lebih cepat dan lebih efisien.

Docker adalah salah satu platform yang dibangun berdasarkan


teknologi container. Docker merupakan sebuah project open-source yang
menyediakan platform terbuka untuk developer maupun sysadmin untuk
dapat membangun, mengemas, dan menjalankan aplikasi dimanapun
sebagai sebuah wadah (container) yang ringan. Dengan sangat populernya
docker, sebagian orang sering menganggap docker adalah sebutan lain
untuk container.

Docker pertama kali dikembangkan oleh Solomon Hykes sebagai


project internal di dotCloud bersama dengan beberapa koleganya seperti
Andrea Luzzardi dan Francois-Xavier Bourlet. Perilisan platform ini
secara open-source dilakukan pada mei 2013 silam. Docker terus
berkembang hingga memiliki ribuan orang yang berkontribusi membuatnya
menjadi lebih baik.

V
irtual machine VS Container (docker.com)

Berbeda dengan virtualisasi yang mana aplikasi berjalan di atas


hypervisor dan guest OS, docker dapat menjalankan aplikasi langsung tanpa
kedua hal tadi. Docker juga dilengkapi dengan fitur sandbox yang menjamin
pengerjaan pengembang dan sysadmin tidak terganggu. Sandbox pada
istilah keamanan komputer adalah mekanisme pemisahan aplikasi atau
program tanpa mengganggu host (isolasi). Bagi pengembang, sandbox
Menjamin aplikasinya dapat berjalan tanpa ada gangguan atas perubahan
lingkungan host. Sedangkan bagi sysadmin, menjamin host server yang
dikelola tidak terganggu dan dapat melakukan update tanpa takut
mengganggu aplikasi.

Dikutip dari situs resmi docker, pengembang dapat mengefektifkan


waktu mereka dengan menghilangkan proses konfigurasi yang cocok dengan
programnya. Selain itu, berkat fitur sandbox, pengembang leluasa untuk
berkreasi tanpa takut merusak programnya. Terakhir docker menjamin
program yang kita buat, akan selamanya berjalan seperti seharusnya.
Pemaketan aplikasi dan seluruh kebutuhannya, memastikan aplikasi berjalan
lancer pada kondisi lingkungan apapun.
Arsitektur docker menggunakan client dan server. Docker client
mengirimkan request ke docker daemon untuk untuk membangun,
mendistribusikan, dan menjalankan container docker. Keduanya docker client
dan daemon dapat berjalan pada sistem yang sama. Antara docker client
dan docker daemon berkomunikasi via socket menggunakan RESTful API.

Istilah istilah di dalam Docker

1. Docker Images

Docker image merupakan dasar template untuk docker container,


sebuah image biasanya berisi OS maupun aplikasi yang telah diinstall dan
telah jadi. Image ini digunakan untuk menjalankan container, di docker index
terdapat banyak image yang bisa kita pilih dan kita gunakan sebagai base
image.

2. Docker Container
Docker container sendiri merupakan sebuah image yang dapat
dikemas dan dibaca tulis, container berjalan diatas image. Pada setiap
perubahan yang disimpan pada container akan menyebabkan terbentuknya
layer baru di atas base image. Kita dapat melakukan instalasi aplikasi
didalamnya dan melakukan penyimpanan.

3. Docker Registry

Docker registri merupakan repositori distribusi kumpulan docker image


yang terpusat baik bersifat public dan private repositori. Registry public
Docker disebut dengan Docker Hub. Disini kita bisa push image kita sendiri
maupun pull image.

4. Dockerfile

Dockerfile merupakan skrip yang yang berisi atau terdiri dari


serangkaian perintah (intruksi) yang akan dieksekusi secara otomatisasi dan
berurutan untuk membangun sebuah image.

Saat ini docker hanya berjalan pada Linux, tapi kita juga bisa
menggunakan dan menjalankannya di Windows mapaun Mac OS X dengan
memanfaatkan dan menggunakan boot2docker , kedepannya akan lebih
mudah lagi dalam menginstalnya, anda dapat menggunakan kitematic.

Perintah-perintah docker

Cek info versi docker

docker info

Mengunduh images dari Docker hub

docker pull [image name]

Menghapus image dalam docker

docker rmi [image ID]

Melihat daftar image

docker images

Membuat container baru


docker run [image name] [command to run]

Menyetop container

docker stop [container ID]

Start container

docker start [container ID]

Melihat daftar kontainer

docker ps

Menghapus kontainer yang ada

docker rm [container ID]

Melakukan commit perubahan pada images

docker commit [container ID] [image name]


Membuat Container menggunakan Dockerfile

Dockerfile sendiri adalah merupakan skrip yang berisi atau terdiri dari
serangkaian perintah, intruksi (argumen) yang akan dieksekusi secara
otomatisasi dan berurutan untuk membangun sebuah image. Jadi akan
mempermudah kita untuk tidak selalu mengetikkan perintah setiap kali kita
akan menjalankan container.

1. Dockerfile Commands

Sebelum kita memulai menggunakan dockerfile untuk membuat sebuah


container, kita sedikit belajar dulu tentang perintah command yang ada pada
dockerfile.

ADD
Perintah ADD digunakan untuk mengcopy file dari suatu direktori ke direktori
tujuan.
Jika direktori asal adalah sebuah URL, perintah add akan mendownloadnya
dan menempatkannya ke direktori tujuan.

CMD
Perintah CMD hampir sama dengan perintah RUN, CMD digunakan untuk
mengeksekusi perintah yang lebih spesifik, seperti pada saat proses
pembuatan container pada image.

ENTRYPOINT
ENTRYPOINT adalah argumen untuk mengeset default aplikasi yang
digunakan setiap kali sebuah container dibuat menggunakan image.

ENV
ENV digunakan untuk mengeset environment variables.

FROM
FROM argument mendefinisikan sebuah base image yang akan digunakan
untuk memulai membangun proses pada setiap docker image apakah itu di
repositori ataupun di host kita sendiri.

WORKDIR
WORKDIR direktif digunakan untuk mengatur di mana perintah didefinisikan
dengan CMD yang akan dieksekusi.

RUN
RUN adalah perintah yang digunakan untuk membangun docker images
yang terpusat untuk mengeksekusi Dockerfiles.
MAINTAINER
MAINTAINER adalah perintah yang tidak dijalankan tetapi di deklarasikan
sebagai author field dari images.

USER
USER direktif digunakan untuk mengatur UID (atau nama pengguna) yang
menjalankan sebuah container berdasarkan dari image yang sedang
dibangun.

VOLUME
Perintah VOLUME digunakan untuk mengaktifkan akses dari kontainer kita ke
direktori pada mesin host.

EXPOSE
Perintah EXPOSE digunakan untuk menghubungkan port tertentu untuk
mengaktifkan network antara proses yang berjalan di dalam container dan
mesin host.
Membuat Dockerfile dan Build Image

Sekarang kita langsung saja mencoba membuat dockerfile untuk membuat


suatu image yang berisi container. Sebagai contoh disini saya akan membuat
container yang berisi Nginx web server. Pertama buat dulu file dockerfile
dengan editor yang biasa anda gunakan, disini saya menggunakan vi

vi Dockerfile

Kemudian kita tambahkan konfigurasi docker yang didalamnya terdapat


perintah dan argument untuk membuat container Nginx web server. Saya
akan menggunakan sebuah base image ubuntu. Lebih lengkapnya
tambhakan konfigurasi dibawah ini

# Pull base image.


FROM ubuntu:14.04

RUN apt-get install -y no-install-recommends software-properties-common

# Install Nginx.
RUN \
add-apt-repository -y ppa:nginx/stable && \
apt-get update && \
apt-get install -y nginx && \
rm -rf /var/lib/apt/lists/* && \
echo \ndaemon off; >> /etc/nginx/nginx.conf && \
chown -R www-data:www-data /var/lib/nginx

# Define mountable directories.


VOLUME ["/etc/nginx/sites-enabled, "/etc/nginx/certs, "/etc/nginx/conf.d,
"/var/log/nginx, "/var/www/html]

# Define working directory.


WORKDIR /etc/nginx

# Define default command.


CMD ["nginx["nginx]Expose ports.
EXPOSE 80
EXPOSE 443

Anda dapat melihat dengan perintah EXPOSE, saya menghubungkan dan


mengaktifkan port http dan https antara container dan mesin host. Save file
diatas dan keluar dari editor.
Langsung saja kita build image nya dengan menggunakan dockerfile diatas,
untuk mulai membuild jalankan perintah berikut

docker build -t nginx_webserver .

Cek hasilnya dengan perintah

docker images

disitu terlihat dengan image ID 5d62ac5f7514


Membuat sebuah Docker Container

Dengan menggunakan image yang barusan kita build, kita akan membuat
sebuah container yang berjalan didalam instance web server Nginx. Jalankan
perintah berikut

docker run name nginx_webserver_instance -p 80:80 -d nginx_webserver

Kita telah berhasil membuat container Nginx dan memforwardnya ke port 80.
Untuk mengeceknya bisa menggunakan docker ps -a

docker ps -a

Kita coba jalankan perintah curl ke localhost

curl localhost

Sukses, container Nginx web server telah berjalan base image ubuntu, atau
coba buka browser.
untuk menyetop container yang berjalan kita tinggal mengetikkan docker
stop <container id> ,

docker stop ca0e122c7cab

Sampai disini dulu tutorialnya untuk membuat container mengggunakan


dockerfile. Sebenarnya pada satu mesin ubuntu dengan specs standar kita
bisa membuat sampai dengan ratusan docker container dan setiap container
itu masing-masing bisa kita manfaatkan sebagai web/app server, db server,
filesystem, ataupun load balancer, jadi kita bisa mencoba untuk membuat
sebuah clustering didalamnya.

Untuk materi tentang docker sendiri masih banyak sebenarnya, seperti


manajemen update docker, membuat multi container, melink-kan container,
clustering docker, manage image repositori, dan yang lainnya, anda bisa
menuju ke halaman official docs-nya untuk dokumentasi lebih lengkapnya.
Sejauh ini saya melihat official docs nya sangat lengkap dan yang jelas selalu
update dan diperbaharui.

Referensi:
Docker.com
CIO.com

Anda mungkin juga menyukai