i
IMPLEMENTASI TEKNIK VIRTUALISASI CONTAINER
DENGAN DOCKER UNTUK PENGELOLAAN APLIKASI
WEB DI DINAS KOMUNIKASI DAN INFORMATIKA
KOTA PAYAKUMBUH
TUGAS AKHIR
Oleh:
ENDAH SRI MAULANA SARDI
1401081009
PROGRAM STUDI TEKNIK KOMPUTER
JURUSAN TEKNOLOGI INFORMASI
POLITEKNIK NEGERI PADANG
2017
ii
IMPLEMENTASI TEKNIK VIRTUALISASI CONTAINER
DENGAN DOCKER UNTUK PENGELOLAAN APLIKASI
WEB DI DINAS KOMUNIKASI DAN INFORMATIKA
KOTA PAYAKUMBUH
TUGAS AKHIR
Diajukan sebagai salah satu syarat untuk mendapatkan gelar Ahli Madya pada Jurusan Teknologi Informasi Program Studi Teknik Komputer
Oleh:
ENDAH SRI MAULANA SARDI
1401081009
PROGRAM STUDI TEKNIK KOMPUTER
JURUSAN TEKNOLOGI INFORMASI
POLITEKNIK NEGERI PADANG
2017
iii
IMPLEMENTASI TEKNIK VIRTUALISASI CONTAINER
DENGAN DOCKER UNTUK PENGELOLAAN APLIKASI
WEB DI DINAS KOMUNIKASI DAN INFORMATIKA
KOTA PAYAKUMBUH
TUGAS AKHIR
Diajukan sebagai salah satu syarat untuk mendapatkan gelar Ahli Madya pada Jurusan Teknologi Informasi Program Studi Teknik Komputer
Oleh:
ENDAH SRI MAULANA SARDI
1401081009
Tugas Akhir ini telah diperiksa dan disetujui oleh :
Pembimbing I Pembimbing II
Deni Satria, S.Kom.,M.Kom Fitri Nova, S.ST.,MT NIP. 19780928 200812 1 002 NIP. 19850529 201404 2 001
Disahkan oleh :
Ketua Jurusan Ketua Program Studi Teknologi Informasi Teknik Komputer
Ronal Hadi, ST.,M.Kom Deni Satria, S.Kom.,M.Kom NIP. 19760129 200212 1 001 NIP. 19780928 200812 1 002
iv
IMPLEMENTASI TEKNIK VIRTUALISASI CONTAINER
DENGAN DOCKER UNTUK PENGELOLAAN APLIKASI
WEB DI DINAS KOMUNIKASI DAN INFORMATIKA
KOTA PAYAKUMBUH
Oleh:
ENDAH SRI MAULANA SARDI
1401081009
Tugas Akhir ini telah diuji dan dipertahankan didepan tim penguji sidang Tugas Akhir Diploma III Politeknik Negeri Padang
Pada hari Sabtu Tanggal 07 Oktober 2017 Tim Penguji,
Ketua Sekretaris
Deni Satria, S.Kom.,M.Kom Indri Rahmayuni, ST.,MT NIP. 19780928 200812 1 002 NIP. 19830625 200801 2 004
Anggota I Anggota II
Hidra Amnur, S.E.,S.Kom.,M.Kom Ervan Asri, S.Kom.,M.Kom NIP. 19820415 201212 1 002 NIP. 19780901 200812 1 001
v
ABSTRAKSI
Teknologi virtualisasi digunakan untuk menjalankan service atau aplikasi tertentu dan sudah menjadi hal umum yang di implementasikan ke dalam server. Teknik ini bertujuan untuk mengurangi penggunaan resources dan memudahkan dalam management server. Linux Containers (LXC) ialah teknologi virtualisasi berbasis level sistem operasi yang mampu menjalankan beberapa sistem operasi linux yang terisolasi di dalam satu host linux dengan menggabungkan linux kernel sehingga container dapat menjalankan aplikasi. Dengan dimanfaatkannya linux kernel tanpa harus emulasi hardware, LXC mampu membuat virtualisasi dengan resource yang sedikit. Docker ialah salah satu software yang mengusung teknik ini dan semakin diterapkan dalam lingkungan web hosting. Docker merupakan open source project yang mengembangkan aplikasi ke dalam sebuah container secara otomatis. Docker menjadi sebuah solusi bagi web developer untuk bereksperimen atau mengembangkan aplikasi ke dalam container tanpa mempengaruhi sistem host. Dengan menggunakan LXC dan Docker akan menyediakan Lightweight Virtualization terhadap aplikasi dengan lingkungan dan fasilitas yang memadai di setiap infrastruktur.
Kata Kunci: Sistem Operasi, Linux, Virtualization, LXC, Docker, Container, Aplikasi web
vi
ABSTRACT
Virtualization Technology on Computing is being used for running particular services and also being commonly implemented into a server in order to reduce resource usages and managing it. Linux Containers (LXC) is an operating system-level of Virtualization Technology, capable to run multiple isolated Linux operating systems into one single Linux host by combining their kernels so that the container is able to run a certain application. By using Linux system kernel without the hardware emulation, LXC is able to virtualize the system with minimum resource usages. Docker is one of the software with the Virtualization Technology that is being used today on web hosting environtment. Docker is an open-source project that automatically encalpusating applications into a container. This is also a solution for web developers to doing experiments or develop their applications into the system. Using LXC and Docker will provide lightweight Virtualization method for applications with compatible resources in any server infrastructure.
Keywords: Operating System, Linux, Virtualization Technology, LXC, Docker, Web Application
vii
KATA PENGANTAR
Puji syukur diucapkan kepada Tuhan Yang Maha Esa, karena atas berkat dan rahmat-Nya, laporan ini dapat diselesaikan. Penulisan laporan Tugas Akhir ini dilakukan dalam rangka memenuhi salah satu syarat untuk mencapai gelar Diploma Tiga Politeknik Negeri Padang. Tanpa bantuan dan bimbingan dari berbagai pihak, dari masa perkuliahan sampai pada penyusunan laporan Tugas Akhir, sangatlah sulit untuk menyelesaikan laporan Tugas Akhir ini. Oleh karena itu, diucapkan terima kasih kepada:
1. Allah SWT yang telah memberikan Rahmat dan Karunia-Nya kepada penulis sehingga penulis dapat menyelesaikan Praktek Kerja Lapangan beserta laporannya;
2. Orang tua dan keluarga penulis yang telah memberikan bantuan dukungan material dan moral;
3. Bapak Deni Satria, S.Kom,. M.Kom, selaku dosen pembimbing I yang telah menyediakan waktu, tenaga, dan pikiran untuk mengarahkan dalam penyusunan laporan Tugas Akhir ini;
4. Ibu Fitri Nova, SST,.MT, selaku dosen pembimbing II yang telah memberikan semangat dan membimbing untuk penyelesaian laporan Tugas Akhir ini;
5. Dosen-dosen dan sahabat-sahabat yang telah memberikan bantuan dan dukungan material dan moral dalam menyelesaikan laporan Tugas Akhir ini. 6. Teman-teman yang selalu menemani penulis selama masa kuliah dan
memberikan support yang terbaik kepada penulis.
Akhir kata, semoga Tuhan Yang Maha Esa berkenan membalas segala kebaikan semua pihak yang telah membantu. Semoga laporan Tugas Akhir ini membawa manfaat bagi pengembangan ilmu.
Padang, Oktober 2017
viii
DAFTAR ISI
Lembar Judul Tugas Akhir ... i
Lembar Perolehan Gelar ... ii
Lembar Pengesahan Tugas Akhir ... iii
Lembar Penguji Tugas Akhir ... iv
Abstraksi (Indonesia) ... v
Abstract (in English) ... vi
Kata Pengantar ... vii
Daftar Isi ... viii
Daftar Tabel ... x Daftar Gambar ... xi BAB I PENDAHULUAN ... 1 1.1 Latar Belakang ... 1 1.2 Rumusan Masalah ... 4 1.3 Tujuan... 4 1.4 Batasan Masalah ... 5
1.5 Metodologi Pelaksanaan Tugas Akhir ... 5
BAB II LANDASAN TEORI ... 7
2.1 Jaringan Komputer ... 7
2.1.1 Jenis-jenis Jaringan Komputer ... 7
2.2 Sistem Operasi Linux ... 8
2.2.1 Kelebihan dan Kekurangan Sistem Operasi Linux ... 8
2.2.2 Linux Ubuntu 14.04 ... 10
2.3 Virtualisasi ... 11
2.4 Hypervisor ... 12
2.5 Tipe Virtualisasi ... 13
2.6 Docker ... 15
2.6.1 Arsitektur dan Komponen Docker ... 15
2.6.2 Perbedaan Antara VM dan Container Docker ... 18
2.6.3 Keuntungan Penggunaan Virtualisasi Docker ... 19
BAB III ANALISIS DAN PERANCANGAN ... 21
3.1 Analisis ... 21
ix
3.3 Topologi Jaringan Dinas Kominfo Kota Payakumbuh ... 22
3.4 Perancangan Sistem... 23
3.5 Hardware dan Software yang digunakan ... 27
BAB IV IMPLEMENTASI DAN PENGUJIAN ... 29
4.1 Konfigurasi Sistem ... 29
4.1.1 Persiapan instalasi ... 29
4.1.2 Proses Instalasi Ubuntu 14.04.5 Dekstop LTS ... 29
4.2 Konfigurasi Docker ... 35
4.2.1 Instalasi Package Docker ... 35
4.2.2 Docker Pull dan Docker Run ... 39
4.2.3 Instalasi Container Web Server dengan konfigurasi manual . 45 4.2.4 Docker Commit dan Docker Push ... 51
4.2.5 Instalasi Container Web Server menggunakan Dockerfile .... 53
4.2.6 Instalasi Multi Container menggunakan Docker-Compose ... 60
4.3 Hasil Pengujian ... 70 BAB V PENUTUP ... 80 5.1 Kesimpulan... 80 5.2 Saran ... 81 DAFTAR PUSTAKA ... 82 LAMPIRAN ... 83
x
DAFTAR TABEL
xi
DAFTAR GAMBAR
Gambar 2. 1 Hypervisor Tipe 1 [7] ... 12
Gambar 2. 2 Hypervisor Tipe 2 [7] ... 13
Gambar 2. 3 Full Virtualization [7]... 13
Gambar 2. 4 Paravirtualization [7] ... 14
Gambar 2. 5 Operating System-Level Virtualization [7] ... 15
Gambar 2. 6 Perbandingan VM dengan Container [7] ... 19
Gambar 3. 1 Denah Lantai 1 gedung Balaikota ... 21
Gambar 3. 2 Topologi Jaringan yang sedang Berjalan ... 22
Gambar 3. 3 Topologi Jaringan yang akan dibangun ... 24
Gambar 3. 4 Rancangan container docker di host... 25
Gambar 4. 1 Memilih bahasa sistem operasi ... 30
Gambar 4. 2 Requirements Instalasi Linux Ubuntu ... 30
Gambar 4. 3 Tipe Instalasi Ubuntu ... 31
Gambar 4. 4 Mengatur partisi swap area ... 31
Gambar 4. 5 Mengatur partisi / (root) ... 32
Gambar 4. 6 Memilih zona waktu ... 32
Gambar 4. 7 Memilih keyboard layout ... 33
Gambar 4. 8 Mengatur identitas user ... 33
Gambar 4. 9 Installing file system ... 34
Gambar 4. 10 Installation complete ... 34
Gambar 4. 11 Mode terminal Ubuntu Desktop ... 35
Gambar 4. 12 Perintah konfigurasi network interfaces ... 35
Gambar 4. 13 Konfigurasi IP Address host ... 35
Gambar 4. 14 Update repository Ubuntu ... 36
Gambar 4. 15 Install package linux-image-extra ... 36
Gambar 4. 16 Install beberapa package ... 37
Gambar 4. 17 Menambahkan GPG Key Docker ... 37
Gambar 4. 18 Verifikasi fingerprint docker ... 38
Gambar 4. 19 Menambahkan repository docker ... 38
Gambar 4. 20 Install package Docker CE ... 39
Gambar 4. 21 Menjalankan image hello-world... 39
Gambar 4. 22 Docker search ... 40
Gambar 4. 23 Repositori Hub Docker ... 41
Gambar 4. 24 Repository official Ubuntu ... 41
Gambar 4. 25 Docker pull centos ... 42
Gambar 4. 26 List image menggunakan docker image ... 42
Gambar 4. 27 Contoh penggunaan perintah docker run ... 44
Gambar 4. 28 Container web server manual ... 45
Gambar 4. 29 Update repo container dan install apache2 php5 ... 46
Gambar 4. 30 Konfigurasi file apache2 sites-available ... 47
Gambar 4. 31 Melakukan restart service apache2 ... 47
Gambar 4. 32 Konfigurasi file apache2.conf ... 48
Gambar 4. 33 Webserver dari Container ubuntuwebserver ... 49
Gambar 4. 34 Docker cp untuk copying file ... 49
Gambar 4. 35 Edit DocumentRoot dan File Permission ... 50
xii
Gambar 4. 37 Docker commit container ubuntuwebserver ... 51
Gambar 4. 38 Membuat repositori image di Hub Docker ... 52
Gambar 4. 39 Docker Login ... 52
Gambar 4. 40 Docker Push repository/tag ... 53
Gambar 4. 41 Website Template Dockerfile... 55
Gambar 4. 42 Pembuatan direktori dan Salin Website Template ... 56
Gambar 4. 43 Konfigurasi Dockerfile dengan editor Sublime Text ... 56
Gambar 4. 44 File konfigurasi apache-config.conf ... 58
Gambar 4. 45 Build image dari Dockerfile ... 59
Gambar 4. 46 Docker Run dan Docker ps ... 59
Gambar 4. 47 Test Website container tugasakhirweb ... 60
Gambar 4. 48 Download docker-compose dengan cURL ... 61
Gambar 4. 49 Executable docker-compose ... 62
Gambar 4. 50 Cek versi docker-compose ... 62
Gambar 4. 51 Download wordpress wp-content ... 62
Gambar 4. 52 docker-compose.yml ... 63
Gambar 4. 53 Docker-compose up... 64
Gambar 4. 54 Cek container wordpress ... 64
Gambar 4. 55 Halaman utama PhpMyadmin ... 65
Gambar 4. 56 Halaman awal instalasi Wordpress ... 65
Gambar 4. 57 Wordpress wp-admin ... 66
Gambar 4. 58 Membuat postingan di wp-admin ... 66
Gambar 4. 59 Tampilan website wordpress dengan postingan ... 67
Gambar 4. 60 Konfigurasi docker-compose haproxy ... 68
Gambar 4. 61 Konfigurasi dockerfile haproxy ... 68
Gambar 4. 62 Konfigurasi haproxy.cfg... 69
Gambar 4. 63 Akses container web1 dan web2 dengan haproxy ... 70
Gambar 4. 64 List containers yang berjalan... 71
Gambar 4. 65 Monitoring resources host dengan htop ... 72
Gambar 4. 66 Konfigurasi IPv4 Komputer Client ... 72
Gambar 4. 67 Webserver pada container tugasakhir:testing ... 73
Gambar 4. 68 Website Wordpress hasil docker-compose ... 74
Gambar 4. 69 Website PhpMyAdmin hasil docker-compose ... 74
Gambar 4. 70 Dua container webserver dengan haproxy ... 75
Gambar 4. 71 Server di VMware Workstation ... 76
BAB I
PENDAHULUAN
1.1 Latar Belakang
Perkembangan aplikasi berbasis web sangat pesat, seiring dengan perkembangan komputer dan internet. Selain itu, aplikasi berbasis web juga semakin banyak digunakan karena dapat diakses di berbagai platform komputer hanya dengan menjalankan web browser. Sehingga, kemudahan proses deployment (penyebaran) aplikasi web beserta software pendukung seperti web server, database server, dependensi dan environment lain ke server sangat dibutuhkan.
Secara umum ada dua metode deployment aplikasi web kedalam server. Pertama menginstall web aplikasi beserta environment yang dibutuhkan ke dalam server tunggal, kelebihannya adalah setup server mudah, simple dan cepat dalam proses deployment. Tetapi metode tersebut memiliki kekurangan yaitu setiap aplikasi tidak terisolasi, sehingga apabila mengembangkan beberapa aplikasi yang masing-masing memiliki ketergantungan dengan paket versi tertentu dapat menimbulkan konflik dependensi (dependecy hell) [4].
Metode yang kedua yaitu dengan memanfaatkan teknologi virtualisasi berbasis hypervisor, jadi setiap aplikasi dan dependency yang dibutuhkan dideploy kedalam Virtual Machine (VM) yang berbeda. Dengan metode ini dapat meningkatkan skalabilitas, karena setiap aplikasi berjalan pada resource (CPU, memory, I/O) yang berbeda sehingga dapat dengan mudah ditambahkan sesuai kebutuhan. Akan tetapi masalah klasik menjalankan virtual machine berbasis
hypervisor adalah membutuhkan resource yang besar. Karena setiap VM menjalankan guest OS beserta kernelnya sendiri terpisah dari host. Sehingga ketika menjalankan aplikasi yang mungkin besarnya hanya puluhan MB, VM juga harus menjalankan guest OS yang besarnya bisa mencapai 10GB. Maka dibutuhkan teknologi yang dapat menyediakan virtualisasi ringan (Lightweight Virtualization) yang mengisolasi aplikasi beserta environment yang dibutuhkan dengan kebutuhan resource minimal yang dapat berjalan di berbagai infrastruktur untuk memudahkan proses deployment aplikasi [4].
Berdasarkan analisis yang telah dilakukan, teknologi yang tepat untuk mewujudkan sistem web hosting yang high availability adalah dengan mengadopsi teknologi virtualiasi sistem operasi berbasis container, bukan berbasis virtual machine. Teknologi ini relatif baru dan cepat perkembangannya. Salah satu software yang mengadopsi konsep ini adalah LXC (Linux Container). Impementasi dalam LXC tersebut kemudian diadopsi lebih lanjut oleh Docker. Teknologi ini tidak membangun mesin virtual sendiri, lebih hemat memory, processor dan storage. Waktu yang diperlukan untuk startup Docker juga sangat cepat bahkan jauh lebih cepat daripada host. Ini terjadi karena Docker berbagi pakai kernel Linux dengan host-nya, tidak memerlukan instalasi OS di dalam container. Container hanya berisi aplikasi web dan beberapa pustaka atau software yang dibutuhkan oleh aplikasi web.
Dinas Komunikasi dan Informatika (DISKOMINFO) Kota Payakumbuh adalah dinas yang mempunyai tugas melaksanakan kewenangan daerah di bidang pengelolaan teknologi informasi dan komunikasi serta melaksanakan tugas pembantuan yang diberikan oleh pemerintah dan atau pemerintah provinsi dimana
dalam setiap kegiatannya selalu berhubungan dengan pembangunan dan pengembangan sistem informasi, pengembangan dan pemeliharaan jaringan komputer antar bidang, pengelolaan produksi informasi dan publikasi, pengelolaan dan pengembangan komunikasi publik. Pada DISKOMINFO Kota Payakumbuh sudah terdapat banyak server yang mana didalamnya sudah menampung banyak aplikasi web dari dinas-dinas maupun pihak swasta di kota Payakumbuh. Untuk mengoptimalkan penggunaan server, pihak DISKOMINFO Kota Payakumbuh menerapkan native hypervisor menggunakan sistem operasi khusus virtualisasi yaitu Proxmox. Sedangkan docker sendiri termasuk kedalam hosted hypervisor yang berarti docker di install diatas sebuah sistem operasi. Proxmox sendiri mengadopsi teknik yang sama dengan OpenVZ atau Linux Containers yang mana image template yang digunakan berisikan keseluruhan sistem operasi. Sedikit berbeda dengan docker, image template yang digunakan bisa berisikan aplikasinya saja ataupun sistem operasi dengan kernel images menggunakan kernel host sehingga instalasi, proses, dan resource lebih efisien.
Berdasarkan permasalahan di atas maka didapatkan ide untuk melakukan implementasi mengenai teknik virtualisasi berbasis Linux Container menggunakan Docker dalam meningkatkan kinerja sebuah server yang dituangkan ke dalam bentuk tugas akhir yang berjudul Implementasi Teknik Virtualisasi Container dengan Docker untuk Pengelolaan Aplikasi Web Di Dinas Komunikasi Dan Informatika Kota Payakumbuh.
1.2 Rumusan Masalah
Berdasarkan latar belakang yang diuraikan di atas, maka dirumuskan permasalahan diantaranya sebagai berikut :
1. Bagaimana langkah instalasi docker pada Linux Ubuntu serta melakukan virtualisasi container di DISKOMINFO Kota Payakumbuh?
2. Bagaimana langkah menggunakan repository hub docker untuk proses unduh dan unggah images?
3. Bagaimana langkah instalasi web server pada container docker?
4. Bagaimana docker bisa mempermudah pekerjaan admin serta meringankan kinerja server?
1.3 Tujuan
Tujuan yang ingin dicapai dan diperoleh dalam penulisan tugas akhir ini adalah sebagai berikut :
1. Melakukan instalasi docker pada Linux Ubuntu serta virtualisasi container di DISKOMINFO Kota Payakumbuh.
2. Dapat menggunakan repository hub docker untuk proses unduh dan unggah images aplikasi web.
3. Dapat menjalankan aplikasi web pada container docker yang bisa diakses oleh client di Dinas Komunikasi dan Informatika Kota Payakumbuh. 4. Docker mampu men-deploy aplikasi web dengan konfigurasi yang mudah
dan cepat serta tidak memberatkan kinerja server karena penggunaan resource yang sedikit.
1.4 Batasan Masalah
Dalam penulisan tugas akhir ini dapat dibatasi masalah yang akan dibahas diantaranya yaitu :
1. Menggunakan sistem operasi Linux Ubuntu 14.04.5 Desktop sebagai host docker.
2. Menerapkan beberapa container yang nantinya akan di install web server menggunakan bootstrap dan wordpress.
3. Melakukan proses push and pull images dari repositori Hub Docker. 4. Menggunakan dockerfile dan docker-compose untuk pembuatan web server
pada docker images serta container.
5. Penerapan docker hanya sebatas menerapkan virtualisasi sistem operasi serta deployment aplikasi web, implementasi tidak mencakup security dari host docker, docker maupun hardening web server.
1.5 Metodologi Pelaksanaan Tugas Akhir
Ada beberapa metode yang digunakan dalam penulisan tugas akhir ini, yaitu:
1. Studi Literatur
Melakukan studi pustaka dengan mempelajari buku-buku, website dan informasi lainnya yang berkaitan dengan Linux Ubuntu, administrator server, virtualisasi docker, web server pada linux, serta reverse proxy.
2. Konsultasi
Melakukan konsultasi dengan dosen pembimbing maupun dengan pihak lain yang mendukung dalam perancangan tugas akhir. Termasuk kepada Dinas Komunikasi dan Informatika Kota Payakumbuh.
3. Analisis sistem yang sedang berjalan
Melakukan analisis terhadap sistem jaringan komputer yang sedang berjalan di Dinas Komunikasi dan Informatika Kota Payakumbuh agar saat memudahkan saat implementasi dan mengurangi resiko terjadinya permasalahan pada jaringan.
4. Perancangan sistem
Melakukan perancangan sistem virtualisasi level OS menggunakan docker di Dinas Komunikasi dan Informatika Kota Payakumbuh.
5. Implementasi
Melakukan pembuatan serta pengujian terhadap virtualisasi container apakah dapat menjalankan fungsi yang di inginkan dan sesuai dengan rencana yang telah dibuat sebelumnya.
6. Analisis hasil dan penarikan kesimpulan
Melakukan analisis dari hasil pengujian yang telah dilakukan, dan melakukan penarikan kesimpulan dari hasil pembuatan tugas akhir ini.
BAB II
LANDASAN TEORI
2.1 Jaringan Komputer
Jaringan computer yang dimaksud adalah suatu himpunan interkoneksi sejumlah computer yang saling terhubung menggunakan media tertentu sehingga antar computer dapat saling berhubungan untuk berbagi data, informasi, perangkat keras dan lain sebagainya [3].
2.1.1 Jenis-jenis Jaringan Komputer
Jaringan komputer dapat dibedakan berdasarkan luas area yang dapat dijangkau oleh jaringan itu sendiri. Secara umum, jaringan komputer dibagi menjadi tiga jenis, yaitu [3];
a) LAN (Local Area Network)
Local Area Network adalah jaringan dengan area yang relatif kecil. Jaringan ini biasanya menghubungkan beberapa komputer yang mana jangkauannya tidak terlalu jauh dengan radius antara 100 meter hingga 2000 meter, tetapi akan lebih baik dan optimal jika jangkauan untuk LAN terimplementasikan di lingkungan perumahan atau perkantoran.
b) MAN (Metropolitan Area Network)
Secara teknis tidak berbeda dengan LAN, hanya saja cakupan area dari MAN lebih luas yang mana biasanya digunakan untuk koneksi antar gedung, kota hingga provinsi.
c) WAN (Wide Area Network)
WAN merupakan gabungan beberapa jaringan LAN ataupun WAN yang mana telah mengalami pengembangan infrastruktur sehingga radius area semakin luas yaitu antar negara maupun benua. WAN menggunakan saran fasilitas transmisi seperti telepon, wireless, satelit ataupun fiber optic.
Jika dilihat dari fungsinya, WAN tidak berbeda jauh dengan LAN. WAN juga mempunyai fungsi yang sama seperti LAN mengkoneksikan antar node, printer, ataupun perangkat lainnya dalam satu jaringan.
2.2 Sistem Operasi Linux
Pengertian sistem operasi adalah perangkat lunak yang digunakan untuk mengendalikan resources selama proses berlangsung. Fungsi sistem operasi adalah mengalokasikan memori dan pekerjaan, dan penjadwalan pekerjaan.
Linux adalah sistem operasi turunan dari UNIX, yang merupakan implementasi dari standar IEEE untuk OS yang bernama POSIX (Portable Operating System Interface). Linux mempunyai kemampuan yang berbasis standar POSIX meliputi multitasking, virtual memory, shared libraries, proper memory management, dan multiuser [1].
2.2.1 Kelebihan dan Kekurangan Sistem Operasi Linux
Adapun kelebihan dan kekurangan yang dimiliki oleh sistem operasi linux adalah sebagai berikut [1];
a) Kelebihan sistem operasi linux :
1. Open Source, lebih dari sekedar gratis karena lisensi Linux adalah GNU/GPL sehingga orang bebas mendistribusikan kembali, menulis
ulang dan lain sebagainya selama masih mengikuti aturan dari lisensi GNU/GPL.
2. Dokumentasi dan akses informasi yang lengkap dan mudah untuk didapatkan.
3. Mengurangi ketergantungan pada vendor perangkat lunak tertentu. 4. Kultur dan dukungan komunitas yang menyenangkan.
5. Pengembangan yang sangat cepat karena source code-nya dapat dikembangkan oleh siapa saja yang ingin berpatisipasi dalam proyek tersebut.
6. Lingkungan yang ideal buat penerapan server, misalnya Web Server, FTP Server.
7. Memiliki fasilitas yang lengkap serta tangguh dalam masalah jaringan. b) Kekurangan sistem operasi linux :
1) Banyak pengguna yang belum terbiasa dengan linux dan masih menggunakan windows minded. Hal ini dapat diatasi dengan pelatihan-pelatihan atau edukasi kepada pengguna agar terbiasa dengan linux. 2) Dukungan perangkat keras dari vendor-vendor tertentu yang tidak
terlalu baik pada linux.
3) Proses instalasi software atau aplikasi yang tidak semudah di windows. Instalasi software di Linux, akan menjadi lebih mudah bila terkoneksi ke internet atau bila mempunyai CD / DVD repository-nya.
2.2.2 Linux Ubuntu 14.04
Ubuntu versi 14.04 “Trusty Tahr” merupakan distribusi Linux yang paling populer menggunakan User Interface Unity yang khas dan disesuaikan. Trusty Tahr merupakan edisi dengan dukungan jangka panjang “Long Term Support” (LTS) selama lima tahun, berupa dukungan keamanan berikut jalur upgrade yang lebih mudah dibandingkan rilis versi LTS (12.04) sebelumnya [2].
Untuk dunia Server, Trusty Tahr membawa perubahan yang lebih substansial. Secara khusus adalah sebuah platform open source yang mendukung otomatisasi manajemen infrastruktur jaringan berupa Puppet yang disertakan dalam versi 3. Peningkatan yang cukup penting ini bisa berguna bagi mereka yang mengimplementasikan lingkungan server Ubuntu skala besar. Puppet telah dirombak dan dalam versi baru ini diklaim kini telah benar-benar kompatibel satu dengan lainnya.
Ubuntu 14.04 Server juga mengemas versi 4.4 dari hypervisor virtualisasi open source Xen. Paket ini tidak lupa mendapatkan beberapa tweaking yang mendongkrak Xen menjadi lebih cepat dan disamping menyediakan fitur tambahan untuk membantu menjaga keragaman ekosistem virtualisasi pada server Ubuntu, termasuk dengan berbagai hypervisors seperti VMware (VMW) dan KVM dan lainnyalai. Versi Kernel Ubuntu 14.04 yang didasarkan pada Linux 3.13, juga dengan sendirinya telah memberikan perbaikan fitur pada kinerja Solid-State Disk (SSD).
2.3 Virtualisasi
Virtualisasi dapat diartikan sebagai pembuatan suatu bentuk atau versi virtual dari sesuatu yang bersifat fisik, misalnya sistem operasi, penyimpanan data atau sumber daya jaringan. Beberapa keuntungan yang didapat dari virtualisasi dibandingkan dengan infrastruktur tradisional [5];
a) Pengurangan biaya investasi hardware
Dengan virtualisasi, tak perlu ada penambahan perangkat komputer, server dan peripheral secara fisik. Dan jika ada, itu ditujukan untuk meningkatkan peforma dari komputer induk yang digunakan sebagai host virtualisasi.
b) Kemudahan backup dan recovery
Server-server yang dijalankan secara virtual dapat disimpan dalam 1 file image yang berisikan seluruh konfigurasi sistem. Jika terjadi crash pada server, admin hanya perlu mengambil salinan image yang sudah disimpan, merestore data terakhir dan server berjalan seperti seda kala.
c) Kemudahan deployment
Server virtual dapat dikloning sebanyak mungkin dan dapat dijalankan pada mesin lain dengan mengubah konfigurasi. Mengurasi beban kerja admin dan mempercepat proses implementasi.
d) Kemudahan dalam maintenance dan pengelolaan
Jumlah server yang sedikit otomatis mengurangi waktu dan biaya dalam pengelolaan serta lebih mudah ditangani.
2.4 Hypervisor
Hypervisor atau Virtual Machine Monitor (VMM) adalah software komputer yang digunakan untuk mengatur virtualisasi. Hypervisor mempunyai fungsi membuat lingkungan virtual dimana mesin virtual dapat berjalan. Secara umum, Hypervisor di bagi menjadi 2 jenis yaitu[7];
a) Hypervisor Type 1 (Native / Bare-Metal Hypervisors)
Tipe ini berjalan langsung di hardware server tanpa adanya perantara Sistem Operasi. Karena alasan inilah tipe ini dikenal dengan nama bare-metal. Hypervisor ini diinstallkan layaknya sistem operasi tetapi bukan sistem operasi seperti linux/windows/unix, melainkan sistem operasi khusus untuk virtualisasi. Contoh hypervisor type 1 adalah Sun’s Logical Domain, VMware ESX, Oracle VM, Microsoft Hyper-V, Parallel Servers dan Proxmox.
Gambar 2. 1 Hypervisor Tipe 1 [7] b) Hypervisor Type 2 (Hosted Hypervisors)
Hypervisor tipe ini merupakan sebuah software yang berjalan diatas sistem operasi host. Host OS yang mengelola seluruh sumber daya hardware dan hypervisor akan memanfaatkan itu. Berbeda dengan tipe 1, tipe 2 cenderung ke para virtualization dan juga full virtualization.
Gambar 2. 2 Hypervisor Tipe 2 [7]
2.5 Tipe Virtualisasi
Virtualisasi perangkat keras mengacu pada upaya menciptakan mesin virtual yang bekerja layaknya sebuah komputer lengkap dengan sistem operasinya. Berikut adalah tiga jenis virtualisasi hardware[7];
a) Emulation
Emulation atau yang biasa dikenal dengan full virtualization ini menjalankan mesin virtual dengan sistem operasi lengkap dengan kernelnya. Jenis ini termasuk kedalam hypervisor tipe 2 karena virtualisasi ini berdiri diatas Host OS. Contoh software yang termasuk dalam kategori ini adalah VMware Player, VirtualBox, QEMU, Parallels dan lainnya.
b) Paravirtualization
Paravirtualization termasuk kedalam hypervisor tipe 1 yang mana langsung berjalan diatas hardware tanpa diperantarai Host OS dan virtualisasinya berada di level kernel OS, jadi tidak ada pembuatan emulasi hardware. Contohnya adalah Xen, KVM, VMware SXi, dan VMware ESXi.
Gambar 2. 4 Paravirtualization [7] c) Container-based Virtualization
Container-based Virtualization atau yang dikenal dengan Operating System-level Virtualization adalah metode virtualisasi server dimana kernel dari sistem operasi mengijinkan beberapa beberapa user space instance terisolasi. Guest hanya dapat menjalankan OS yang sama dengan Host OS. Metode ini memberikan performa yang lebih baik, tanpa overhead dan management sumber daya yang lebih dinamis. Contohnya adalah LXC, Virtuozzo, Docker, dan FreeBSD Jail.
Gambar 2. 5 Operating System-Level Virtualization [7]
2.6 Docker
Docker menurut Sugianto [6] adalah suatu platform terbuka bagi pengembang perangkat lunak dan pengelola sistem jaringan untuk membangun, mengirimkan dan menjalanan aplikasi-aplikasi terdistribusi. Definisi tersebut membawa pengertian praktis bahwa Docker merupakan suatu cara memasukkan layanan ke dalam lingkungan terisolasi bernama container, sehingga layanan tersebut dapat dipaketkan menjadi satu bersama dengan semua pustaka dan software lain yang dibutuhkan.
2.6.1 Arsitektur dan Komponen Docker
Arsitektur docker mneggunakan mekanisme client dan server, docker client mengirimkan request ke docker server untuk membangun, mendistribusikan, dan menjalankan container docker. Docker client dan server dapat berjalan pada sistem yang sama, antar docker client dan docker server berkomunikasi via socket menggunakan restful SPI [6].
Docker memiliki banyak komponen, setiap komponen saling membutuhkan. Beberapa komponen-komponen pembentuk docker [6];
a) Docker Images
Docker images merupakan read-only template untuk menjalankan containers. Sebuah Image dapat terdiri dari sistem operasi dan beberapa aplikasi yang sudah terinstall images dapat ditumpuk berlapis dengan images lainnya, image yang paling atas disebut dengan parent image dan image yang paling bawah disebut dengan base image. Contohnya sebuah image yang berisi sistem operasi Ubuntu dengan Apache dan aplikasi Web yang telah di istall Image ini digunakan untuk menjalankan container.
b) Docker Container
Docker Container merupakan sebuah image bersifat read-write yang berjalan diatas image. Docker menggunakan union-file sistem sebagai back-end file sistem containernya, dimana setiap perubahan yang disimpan pada container akan membentuk layer baru di atas base image. Masing-masing container yang berjalan terisolasi dalam satu lingkungan dan platform aplikasi yang aman, tidak saling bentrok dengan aplikasi lain di host yang sama.
c) Docker Registry
Docker registry adalah sebuah repositori (public atau private) yang menyedikan ribuan docker images. Public docker registries disebut dengan Docker hub. User dapat melakukan perintah push melalui docker client ke docker registry untuk penyimpanan dan sharing. Dan pengguna lain dapat melakukan perintah pull untuk mendownload dan menjalakannya secara langsung.
d) Docker File
Docker File merupakan sebuah skrip otomasi (builder) yang membangun sebuah image. Sebuah Docker File merupakan dokumen text atau skrip yang berisi semua perintah yang bisaanya kita lakukan manual untuk membangun sebuah image. Dengan menggunakan perintah docker build dari terminal, akan terlihat docker membangun image secara bertahap berdasarkan eksekusi perintah dalam script.
e) Repository
Docker menggunakan kata mirip dengan yang digunakan pada Github dan source control system lainnya, namun jenis yang berbeda. Repository berupa ID untuk setiap image yang disimpan dalam registry. Ketika menjalankan perintah docker commit maka image itu akan kita beri nama denga format username/name image. Dan dengan menggunakan perintah docker push image yang telah diberi format akan di unggah ke repository.
f) Docker Index
Docker index terkait dengan Hub Registry, meski keduanya memiliki fungsi yang berlainan, Index mengatur user account, permission, search, tagging dan hal lain yang tersimpan pada web interface public. Ketika menjalankan perintah docker pull ataupun docker push, index akan menentukan apakah diijinkan untuk mengakses atau memodifikasi image, dan selanjutnya registry adalah bagian yang akan menyimpan image tersebut setelah mendapatkan hak akses dari index.
2.6.2 Perbedaan Antara VM dan Container Docker
Dalam bidan virtualisasi, terdapat istilah VM (Virtual Machine) dan Container. Secara prinsip keduanya sama-sama menggunakan skema virtualisasi, namun ada yang membedakan diantara kedua istilah tersebut. Berikut beberapa perbedaan dari segi mendasar antara VM dan Container [6];
a) VM menggunakan keseluruhan resource hardware yang ada pada host, sehingga jika diibaratkan host langsung menjalankan dua sistem operasi sekaligus, sedangkan container bersifat seperti aplikasi, dan hanya menggunakan sedikit resource dari host, docker seolah-olah juga seperti menjalankan aplikasi biasa.
b) VM menggunakan kernel tersendiri sehingga menjadi beban bagi host dan akan sangat memberatkan. Berbeda dengan docker yang menggunakan kernel dari host lalu membaginya ke container yang ada saja sehingga lebih efisien.
c) Alokasi spesifikasi pada VM jika sudah di atur untuk VM A, maka VM B tidak bisa menggunakan spesifikasi yang telah dipakai VM A. Berbeda dengan docker, jika ada sebuah container A sedang sibuk melayani trafik, sedangkan container B idle, maka container A bisa menggunakan resource milik container B.
Gambar 2. 6 Perbandingan VM dengan Container [7] 2.6.3 Keuntungan Penggunaan Virtualisasi Docker
Keuntungan yang didapat dari penggunaan virtualisasi docker dibandingkan dengan yang lainnya [6];
a) Konfigurasi yang Mudah
Pada virtualisasi docker, ketika user membutuhkan sebuah VM diatas docker, hanya dengan menjalankan satu baris perintah untuk menciptakan sebuah container yang dapat menjalankan images. Images tersebut berisi sistem operasi yang dapat langsung digunkanan. Hal ini dapat membuat konfigurasi lebih mudah dan menghemat waktu instalasi sistem operasi.
b) Aplikasi Terisolasi
Docker menggunakan sistem aplikasi terisolasi. Jika diibaratkan, container-container docker seperti sebuah komputer yang berada di router yang telah di NAT, sehingga container tidak langsung terhubung ke jaringan luar. Antar container juga dapat berjalan tanpa mengganggu container lainnya.
c) Optimalisasi Resource
Penggunaan resource hardware pada docker sangatlah efisien, dan tidak memakan banyak sumber daya, sehingga ketika menjalankan banyak container, host masih dapat mampu menanganinya.
d) File System Protection
Docker menggunakan sistem proteksi file read-only mount point dan copy on write denfan tingkatan keamanan dari yang rendah hingga keamanan tingkat sangat tinggi. Dengan pemasangan sistem file sebagai read-only, kernel linux dapat dipertahankan dan pengguna pun aman tanpa ada resiko kegagalan file sistem.
e) Multi Cloud Platform
Dalam beberapa tahun terakhir, semua penyedia layanan cloud seperti Amazon Web Service, Google Compute Platform, Digital Ocean, Linode, Vultr, dan lain-lain mulai mengadopsi docker sebagai platform virtualisasi. Container docker dapat dijalankan dalam mesin Amazone EC2, Google Compute Engine maupun pada berbagai cloud provider dengan sistem operasi Linux yang beragam. Dengan perkembangan tersebut, docker termasuk kedalam Multi Cloud Platform yang sangat handal.
BAB III
ANALISA DAN PERANCANGAN
3.1 Analisis
Analisis ini digunakan untuk menentukan kebutuhan apa saja yang diperlukan dalam perancangan virtualisasi container menggunakan docker untuk memudahkan administrator dalam deployment aplikasi web di Dinas Komunikasi dan Informatika Kota Payakumbuh. Kantor DISKOMINFO Kota Payakumbuh berada di lantai dasar gedung perkantoran Balaikota Kota Payakumbuh.
Analisis perancangan ini dimulai dengan menganalisa denah lokasi implementasi, analisis jaringan yang sedang berjalan, perancangan jaringan yang akan dibangun, serta menentukan hardware dan software yang akan dibutuhkan saat melakukan implementasi.
3.2 Denah Lokasi Implementasi
\
Pada gambar 3.1 terlihat ada beberapa ruangan pada lantai satu gedung Balaikota Kota Payakumbuh. Untuk mendukung tugas dan fungsi dari DISKOMINFO kota Payakumbuh, pemerintah kota menyediakan beberapa ruangan diantaranya yaitu ruangan untuk Pegawai Kedinasan, ruangan Pusat Komunitas Kreatif (PUSKOM) dan ruangan Data Center.
Data Center merupakan ruangan yang digunakan untuk meletakkan server-server yang dikelola dan menjadi tanggung jawab dari Dinas Komunikasi dan Informatika Kota Payakumbuh. Data Center Kota Payakumbuh saat ini memiliki tiga buah server yang digunakan untuk penunjang kinerja setiap Organisasi Pemerintahan Daerah (OPD) Kota Payakumbuh.
3.3 Topologi Jaringan Dinas Kominfo Kota Payakumbuh
Gambar 3.2 adalah gambaran dari jaringan yang sedang berjalan di Dinas Komunikasi dan Informatika Kota Payakumbuh. Di Data Center terdapat sebuah rak dengan berisikan tiga buah server yang sudah berjalan, modem, router, switch, access point, dan perangkat lainnya.
Setiap server terhubung ke DMZ switch dan selanjutnya terhubung ke core switch. Router distribusi bertugas untuk membagi jaringan keseluruh OPD yang ada di Kota Payakumbuh baik itu melalui jaringan kabel ataupun nirkabel.
3.4 Perancangan Sistem
Sebelum membangun dan mengimplementasikan virtualisasi container dengan sistem operasi Ubuntu, maka terlebih dahulu dilakukan perancangan sistem yang akan dibangun. Perancangan dimulai dari membangun topologi, dan membangun sistem yang akan diimplementasikan nanti.
Topologi jaringan merupakan rancangan dari penempatan perangkat-perangkat jaringan komputer yang digunakan sehingga proses pembangunan sistem yang dirancang akan mudah dimengerti dan menjadi lebih jelas. Dengan adanya sketsa topologi jaringan, administrator dapat mempelajari, serta menganalisa jaringan agar nantinya saat terjadi kendala pada proses implementasi dapat diatasi dengan mudah.
Perancangan topologi yang dibuat tidak merubah topologi yang telah ada di Dinas Kominfo Kota Payakumbuh. Penambahan satu buah server pada jaringan yang sama dengan ketiga server lainnya. Hal ini dilakukan agar tidak merubah topologi dasarnya sehingga admin pun tidak kesulitan dalam proses maintenance. Penambahan server dapat dilihat pada gambar 3.3 dibawah ini.
Gambar 3. 3 Topologi Jaringan yang akan dibangun
Rancangan sistem meliputi instalasi sistem operasi Ubuntu 14.04, instalasi docker, menambahkan container dengan image Ubuntu ataupun image aplikasi web serta melakukan konfigurasi agar virtual container bisa diakses diluar host server. Server yang digunakan adalah server HP Proliant DL 380G5 dengan kapasitas harddisk satu Terabyte (1000 GB). Server ini nantinya akan digunakan untuk men-deploy aplikasi web yang sudah dibuat, karna proses instalasi virtualnya yang lebih efektif dan efisien. Dengan adanya docker, proses instalasi server semakin cepat karna admin hanya perlu mengambil Ubuntu yang siap pakai dari repository hub menggunakan perintah pull dan untuk pengembangannya bisa menggunakan docker compose. Compose sendiri membutuhkan dockerfile yang mana didalam file tersebut sudah ada syntax instalasi dan konfigurasi. Sebagai contoh untuk instalasi webserver apache yang dibutuhkan adalah instalasi apache, php5, database serta konfigurasinya. Semua itu bisa digabungkan kedalam satu file, dan di eksekusi
menggunakan compose.dengan menggunakan compose, proses tersebut bisa dilakukan dengan 1 baris perintah saja.
Setelah docker menjalankan container aplikasi server, yang dibutuhkan selanjutnya adalah akses client menuju container karena secara default, container hanya bisa diakses oleh host saja. Agar client dapat mengakses container, ip:port yang digunakan oleh container tersebut harus di-publish. Saat server menjalankan beberapa webserver bersamaan diperlukan subdomain karena host server hanya mempunyai satu buah ip address. Untuk bagian ini diperlukan sebuah reverse proxy yang akan menjembatani client dengan web server yang ada didalam container. Pada reverse proxy akan dilakukan konfigurasi subdomain untuk setiap web server. Reverse proxy bisa dibuat menggunakan Nginx pada host server, menjalankan container traefik ataupun container haproxy.
Gambar 3. 4 Rancangan container docker di host
Seperti yang dijelaskan sebelumnya, gambar 3.4 ialah rancangan container yang akan dibangun ke dalam host docker. Setelah proses instalasi docker, akan di
install tool docker-compose. Container 1 akan dijalankan dengan base image ubuntu, lalu dilakukan konfigurasi apache untuk penggunaan webserver. Begitu juga untuk container 2 akan menggunakan base image ubuntu, hanya saja proses konfigurasi tidak dilakukan secara manual. Penggunaan dockerfile akan sangat memudahkan developer dalam pengembangan webserver, dikarenakan konfigurasi dockerfile yang mudah dan cepat saat instalasi service-nya. Untuk dockerfile harus dilakukan expose port agar bisa digunakan saat image hasil dockerfile dijalanakan. Selanjutnya untuk container 3, container 4, dan container 5 akan di install service wordpress, mysql dan phpmyadmin menggunakan tool docker-compose. Docker-compose difungsikan untuk membuat beberapa container dengan satu file konfigurasi. Untuk ke-tiga container diatas, akan saling tehubung karena wordpress akan membutuhkan database untuk meyimpan datanya. Database akan dipegang oleh container mysql dan sebagai management database-nya akan digunakan container phpmyadmin. Dengan menggunakan docker-compose, user bisa mengatur volumes yang berfungsi untuk menghubungkan direktori filesystem dengan direktori pada container. Ini difungsikan agar saat terjadi perubahan pada direktori filesystem yang diarahkan, maka akan terjadi pula perubahan di container, begitu juga sebaliknya. Sebagai contoh ialah untuk konfigurasi webserver, database dan data dari webserver.
Setelah itu akan ditambahkan container haproxy yang nantinya akan digunakan sebagai pinpoint url ke masing-masing container tanpa menuliskan port. Didalam konfigurasi docker-compose untuk container haproxy, akan dijalankan juga container yang akan di pinpoint. Konfigurasi haproxy dengan fungsi binding port 80 ke masing-masing container. Dan terakhir, konfigurasi path untuk masing
–masing container. Jadi container web1 diatur dengan url 172.28.1.101/web1 dan container web2 diatur dengan url 172.28.1.101/web2. Container-container selanjutnya akan ditambahkan jika ada perubahan pada implementasi.
3.5 Hardware dan Software yang digunakan
Perangkat keras yang digunakan dalam sebuah sistem sangat berpengaruh terhadap kinerja dari sistem tersebut. Adapun perangkat keras yang diperlukan adalah sebagai berikut:
a. 1 unit server dengan minimal spesifikasi sebagai berikut : 1. Linux kernel versi 3.10 atau yang lebih tinggi. 2. CS Docker Engine versi 1.10 atau lebih. 3. 2.00 GB RAM
4. Minimal harddisk kosong 3.00 GB 5. IP Address static untuk host server
Perangkat lunak yang digunakan untuk membangun virtualisasi container menggunakan docker adalah perangkat lunak yang bersifat Open Source. Berikut adalah beberapa software yang digunakan.
a. Linux Ubuntu 14.04
Merupakan distribusi Linux yang paling populer menggunakan User Interface Unity yang khas dan disesuaikan. Trusty Tahr merupakan edisi dengan dukungan jangka panjang “Long Term Support” (LTS) selama lima tahun, berupa dukungan keamanan berikut jalur upgrade yang lebih mudah dibandingkan rilis versi LTS (12.04) sebelumnya
b. 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.
c. Putty
Merupakan software remote console atau terminal yang digunakan untuk me-remote komputer dengan terhubungnya menggunakan port ssh atau sebagainya.
BAB IV
IMPLEMENTASI DAN PENGUJIAN
4.1 Konfigurasi Sistem
Langkah pertama yang harus dilakukan sebelum melakukan virtualisasi container menggunakan docker adalah melakukan instalasi sistem operasi pada komputer yang mana nantinya akan digunakan sebagai host dari docker. Sistem operasi yang digunakan untuk menjalankan virtualisasi docker adalah Ubuntu 14.04.5 Desktop LTS yang merupakan sistem operasi linux turunan dari Debian.
Berikut ini adalah langkah-langkah instalasi Ubuntu 14.04.5 Desktop pada komputer yang akan dijadikan host docker:
4.1.1 Persiapan instalasi
Sebelum instalasi dilakukan, berikut adalah bahan untuk instalasi Ubuntu yang harus dipersiapkan:
1. DVD atau USB Installer Linux Ubuntu 14.04.5 Desktop Latest
2. Masukkan DVD installer ke dalam DVD Drive komputer yang akan digunakan.
3. Masuk ke BIOS lalu atur boot priority menjadi CD/DVD, kemudian simpan dan reset komputer.
4.1.2 Proses Instalasi Ubuntu 14.04.5 Dekstop LTS Langkah-langkah instalasi Linux Ubuntu Desktop:
Gambar 4. 1 Memilih bahasa sistem operasi
Langkah pertama untuk melakukan proses instalasi adalah mimilih bahasa yang akan digunakan pada sistem operasi Ubuntu, pilih bahasa “English” agar lebih mudah digunakan karena bahasa inggris sudah awam bagi orang di dunia, sehingga jika terjadi masalah pada sistem mudah untuk mencari solusinya.
2. Requirements untuk persiapan instalasi. Jika sudah memenuhi syarat, langsung saja klik Continue.
Gambar 4. 2 Requirements Instalasi Linux Ubuntu
Requirements yang dibutuhkan yaitu komputer mempunyai free space sekurangnya 6.7 GB dan terkoneksi ke internet. Pilihan dibawahnya adalah melakukan proses update saat instalasi dan menginstall
third-party software. Jika ada kebutuhan akan hal tersebut, centang lalu klik continue.
3. Selanjutnya adalah tipe instalasi yang akan digunakan. Pilih Something Else.
Gambar 4. 3 Tipe Instalasi Ubuntu
Ada dua pilihan yang aktif yaitu Erase disk and install Ubuntu dan Something Else. Ambil pilihan yang kedua agar bisa mengatur partisi apa yang akan digunakan dan berapa ukuran partisi tersebut.
4. Pilih free space yang akan digunakan, lalu tambahkan partisi yang diperlukan yaitu minimal / (root) dan swap area.
Partisi akan dibagi menjadi dua yaitu / (root) dan swap area. Yang pertama untuk swap area sebesar 4 GB, biasanya untuk swap area diberi ukuran 2 kali lipat dari RAM komputer.
5. Pembuatan partisi untuk / (root) dengan menggunakan ext4.
Gambar 4. 5 Mengatur partisi / (root)
Selanjutnya adalah membuat partisi / (root) yang mana digunakan untuk menyimpan sistem dari package yang akan di install nantinya. Gunakan seluruh free space yang tersisa dan arahkan mount point ke / dengan format ext4. Setelah selesai, klik install now.
6. Tampilan selanjutnya adalah mengatur zona waktu yang digunakan.
Memilih zona waktu sesuai dengan lokasi saat ini. Kemudian tekan Enter atau continue untuk melanjutkan installasi.
7. Tampilan selanjutnya yaitu memilih keyboard layout yang akan digunakan.
Gambar 4. 7 Memilih keyboard layout
Pengaturan keyboard layout yang fungsinya untuk mengkonfigurasi keyboard sesuai dengan format keyboard yang akan digunakan oleh user.
8. Pada halaman ini, user diminta untuk mengisi identitas. Mulai dari nama, nama komputer, nama user dan password. Lanjutkan dengan klik continue.
Pada bagian ini, user harus mengisikan nama dan nama komputer yang mana nantinya akan dijadikan hostname. Selanjutnya menambahkan username dan password, ini akan digunakan saat login ke sistem operasi.
9. Setelah settingan pada gambar 4.8 dilakukan, akan berlanjut ke proses menginstall sistem.
Gambar 4. 9 Installing file system
10. Setelah proses install files selesai, akan muncul tampilan bahwa instalasi telah selesai dilakukan. Klik restart untuk agar sistem berjalan dengan normal.
Saat proses restart dilakukan, keluarkan DVD Installer dari DVD drive. Lalu atur kembali boot priority ke harddisk komputer. Dan semua proses instalasi selesai.
4.2 Konfigurasi Docker
4.2.1 Instalasi Package Docker
Langkah-langkah untuk melakukan instalasi Docker CE adalah sebagai berikut:
1. Login terlebih dahulu ke dalam sistem operasi, lalu buka terminal dengan menekan tombol CTRL + Alt + T.
Gambar 4. 11 Mode terminal Ubuntu Desktop
2. Selanjutnya atur IP Address host yang berada pada direktori “/etc/network/interfaces” menggunakan perintah nano.
Gambar 4. 12 Perintah konfigurasi network interfaces
Atur ip address sebagai alamat dari host yang digunakan agar host bisa terhubung dengan internet dan komputer client. Nantinya ip address host akan dijadikan sebagai alamat url untuk mengakses web server yang dibuat menggunakan container.
3. Kemudian lakukan update melalui terminal.
Gambar 4. 14 Update repository Ubuntu
Update dilakukan agar sistem operasi mendapatkan package-package sistem yang LTS (latest version). Update juga harus dilakukan jika melakukan penambahan ataupunperubahan repository Ubuntu.
4. Selanjutnya menginstall package extra dan linux-image-extra-virtual menggunakan perintah sudo apt-get install.
Guna menginstall package tersebut agar docker dapat menggunakan aufs storage driver. Aufs adalah default storage driver yang digunakan untuk mengatus image dan layer Docker untuk Ubuntu.
5. Selanjutnya install beberapa package yang akan digunakan untuk menginstall docker.
Gambar 4. 16 Install beberapa package
Package yang dinstall akan mengizinkan perintah apt menggunakan repository via HTTPS.
6. Kemudian tambahkan GPG key resmi milik Docker.
Gambar 4. 17 Menambahkan GPG Key Docker
GPG adalah suatu software enskripsi yang mana penggunanya harus mempunyai key untuk mengaksesnya. Dengan GPG Key yang ditambahkan tadi, berarti user sudah bisa mengakses paket yang diberi enskripsi.
7. Lakukan verifikasi kunci dengan fingerprint 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88, dengan cara mencari 8 karakter terakhir dari fingerprint yang didapat. Perintah yang digunakan adalah $ sudo apt-key fingerprint 0EBFCD88.
Gambar 4. 18 Verifikasi fingerprint docker
Verifikasi di gunakan agar public key yang di tambahkan tadi cocok dengan fingerprint yang di berikan oleh docker. Jika tidak cocok, ada kemungkinan salah di proses penambahan public key, dan cek ulang gambar 4.17.
8. Langkah selanjutnya menambahkan repository yang akan digunakan untuk menginstall docker.
Gambar 4. 19 Menambahkan repository docker
Perintah tersebut akan menambahkan repository docker ke file sources.list pada direktori /etc/apt/sources.list. setelah file disimpan, lakukan proses update agar package dari repository yang ditambahkan tadi dapat digunakan.
9. Setelah melakukan update, instalasi docker ce baru bisa dilaksanakan. Gunakan perintah $ sudo apt-get install docker ce untuk menginstall docker via internet.
Gambar 4. 20 Install package Docker CE
Pada saat menjalankan perintah tersebut, aka nada beberapa package tambahan yang akan di install bersamaan dengan docker ce. Ketik Y untuk melanjutkan proses instalasi.
10. Setelah instalasi selesai, lakukan verifikasi apakah docker telah terinstall dengan menjalankan image hello-world dengan perintah $sudo docker run hello-world
Gambar 4. 21 Menjalankan image hello-world
Pada gambar 4.21 menjelaskan bahwa instalasi docker berhasil dengan munculnya isi dari container hello-world.
4.2.2 Docker Pull dan Docker Run
Sebelum melakukan proses docker pull, ada baiknya user terlebih dahulu mencari image yang akan digunakan. Untuk mencari image yang akan digunakan bisa menggunakan perintah $ sudo docker search atau mengambil perintah docker pull dari website Docker Hub.
Gambar 4. 22 Docker search
Pada gambar 4.22 digunakan perintah $ docker search centos yang berarti docker akan menampilkan image yang mengandung nama centos berdasarkan repository yang ada. Sesuai dengan deskripsi masing-masing image, ambil image sesuai yang dibutuhkan karena setiap image memiliki services yang berbeda tergantung oleh creator yang menggunggah image-nya.
Docker pull ialah perintah yang digunakan untuk mengunduh image yang ada di repository. Perintah yang digunakan adalah $ docker pull image_name:tag. Jika user menggunakan perintah docker pull tanpa menuliskan tag, docker akan otomatis melakukan pull dengan tag:latest sebagai default tag. Tag yang digunakan tergantung pembuat repositori, untuk lebih jelas bisa di cek melalui website Hub Docker agar tidak terjadi kesalahan saat proses pull.
Gambar 4. 23 Repositori Hub Docker
Pada Hub Docker, sudah banyak image yang di simpan, baik itu service ataupun sistem operasi. Berikut gambar dari repository resmi Ubuntu dengan tag yang bisa digunakan user untuk mendapatkan image yang cocok dalam membangun sistemnya.
Gambar 4. 24 Repository official Ubuntu
Dari gambar 4.24, terlihat perintah pull untuk mengambil image Ubuntu adalah $ docker pull Ubuntu. Untuk melakukan pull image sesuai keinginan, gunakan tag yang telah disediakan. Misalnya user ingin menggunakan Ubuntu 14.04 maka tag yang dipilih adalah 14.04 atau trusty.
Gambar 4. 25 Docker pull centos
Gambar 4.25 menjelaskan, image yang di download adalah centos dan tanpa tag. Jika melakukan docker pull tanpa tag, maka repositori biasanya akan mengambil image dengan default tag:latest.
Saat image berhasil di unduh, cek image yang ada di dalam sistem menggunakan perintah $ docker image.
Gambar 4. 26 List image menggunakan docker image
Dari image-image tersebut barulah sebuah container dapat dibuat. Seperti yang dijelaskan pada bab sebelumnya, container adalah image bersifat read-write yang berjalan menggunakan image. Dan juga docker yang menggunakan unfs sebagai back-end file sistem containernya, yang mana setiap perubahan yang tersimpan di container akan membentuk layer baru di atas base image. Jadi container merupakan sebuah layer dimana user melakukan instalasi aplikasi. Untuk menjadikan container sebagai base image di perlukan docker commit.
Selanjutnya menjalankan sebuah image menjadi container menggunakan perintah $ docker run. Masing-masing container yang berjalan saling terisolasi dengan yang lainnya. Container berjalan diatas host sehingga host bisa menjadi local maupun remote. Saat docker run dijalankan, proses container yang berjalan
telah terisolasi dan mempunyai file system, jaringan tersendiri dan juga punya proses yang terisolasi dari host.
Docker run mempunyai perintah dasar yaitu : $ docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]. Sebagai dasar pengetahuan dalam docker run, ada beberapa [OPTIONS] yang perlu di mengerti karena user akan sering menggunakan options tersebut. Berikut beberapa [OPTIONS] docker run yang biasa digunakan:
1. Detached (-d)
Saat menjalankan container, user harus memilih apakah container akan dijalankan di background atau foreground. Detached mode [-d=true/-d] akan menjalankan container di background yang akan exit ketika root yang menjalankannya berhenti atau menggunakan option –rm. Contoh perintah: $ docker run -d -p 80:80 my_image
2. Foreground
Ini adalah mode default yang akan menjalankan proses didalam container dan console container bisa di attach ke proses input, output, dan error. Option yang digunakan untuk mode ini adalah –t dan –i yang digunakan secara bersamaan, fungsinya untuk mengaktifkan tty dan stdin (standard input).
3. Network setting
Secara default, semua container sudah diberikan konfigurasi network. Untuk disable network, saat proses docker run gunakan option – network none. Saat kasus seperti ini, STDIN dan STDOUT yang bisa digunakan.
Publish port dan linking ke container lain hanya berlaku jika menggunakan bridge. Tipe koneksi yang didukung docker adalah bridge, host, container:<named|id>, dan network. Bridge menggunakan veth, host akan memberikan stack network ke container, container:named juga memberikan stack network ke container lainnya, sedangkan network user harus membuat network sendiri menggunakan docker network driver.
Publish port akan digunakan disaat suatu package/app yang disediakan container akan digunakan host dan client. Publish port bisa dalam bentuk range ataupun satu port saja. Sebagai contoh option –p 8080:80 dimaksudkan untuk publish port 80 dari container ke port 8080 di host.
4. Restart policies
Flag –restart saat docker run digunakan untuk menentukan apakah container akan restart atau tidak disaat exit. Flag yang biasa digunakan adalah --restart=always yang akan menjalankan kembali container disaat exit dilakukan.
Berikut adalah contoh penggunaan perintah docker run dengan beberapa options flag:
Gambar 4. 27 Contoh penggunaan perintah docker run
Dari gambar 4.27, perintah yang digunakan adalah $ docker run –it –p 8081:80 --name ubuntuwebserver ubuntu:14.04.2 . Fungsi flag diatas menghasilkan container dengan nama “ubuntuwebserver” dengan publish port 80
ke port 8081, container menggunakan image “ubuntu:14.04.2”, dan juga container berjalan di foreground. Disaat menggunakan options –it, user akan dibawa masuk kedalam tty file system container. Di dalam tty tersebutlah, konfigurasi nantinya akan dilakukan untuk proses manual konfigurasi.
4.2.3 Instalasi Container Web Server dengan konfigurasi manual
Web Server adalah salah satu web aplikasi yang bisa di –deploy menggunakan container. Untuk melakukan instalasi web server secara manual dibutuhkan beberapa tahapan yaitu menyediakan base image yang akan digunakan sebagai tempat instalasi aplikasi, menentukan service yang akan digunakan untuk web server seperti apache2 atau nginx.
Berikut langkah-langkah untuk instalasi container web server secara manual:
1. Melakukan pull image ubuntu:trusty atau ubuntu:14.04.2 seperti pada gambar 4.25.
2. Buat container baru dengan perintah $ docker run menggunakan image ubuntu:14.04.2 dengan publish port 80.
Gambar 4. 28 Container web server manual
Perintah pada gambar akan menghasilkan sebuah container dengan nama ubuntuwebserver yang berjalan di foreground, port 80 container akan di publish ke host port 8081. Port ini nantinya akan digunakan oleh host ataupun client untuk mengakses webserver yang dijalankan container.
Setelah docker run dijalankan, user akan masuk ke tty container dan untuk keluar dari container melakukan exit harus menekan tombol CTRL + P + Q. Perintah exit akan menonaktifkan container, jadi untuk menjalankan kembali container, gunakan perintah $ docker start nama_container.
3. Setelah masuk kedalam container ubuntuwebserver, lakukan update repositori dan install service apache2 beserta nano dan php5.
Gambar 4. 29 Update repo container dan install apache2 php5 Untuk perintah yang digunakan, user bisa menggabungkan 2 perintah menggunakan tanda “&&” seperti gambar 4.29. Perintah & digunakan untuk menjalankan perintah lainnya setelah perintah pertama selesai. Untuk menginstall service apache2, package nano dan php5 digunakan perintah # apt-get install nano apache2 php5.
4. Setelah service terinstall, dilanjutkan dengan konfigurasi file apache2 000-default.conf yang berada di direktori /etc/apache2/sites-available/. Gunakan perintah # nano /etc/apache2/sites-available/000-default.conf
Gambar 4. 30 Konfigurasi file apache2 sites-available Yang perlu diganti dari settingan default tersebut adalah:
a. ServerName diatur menjadi IP Address server atau alamat dns-server seperti diskominfo.xyz.
b. ServerAdmin atur menjadi [email protected]
c. DocumentRoot diatur menjadi lokasi direktori dari file web server yang akan ditampilkan, baik itu index.php, bootstrap, ataupun info.php.
5. Simpan file 000-default.conf, lalu restart service apache2 menggunakan perintah # service apache2 restart atau #/etc/init.d/ apache2 restart.
Gambar 4. 31 Melakukan restart service apache2 Saat proses restart, muncul pemberitahuan yang menjelaskan bahwa ServerName berbeda dengan IP Address.
6. Permasalahan yang muncul pada gambar 4.31, dapat diatasi dengan menambahkan ServerName sesuai IP Address server pada file apache2.conf di direktori /etc/apache2/ menggunakan editor nano.
Gambar 4. 32 Konfigurasi file apache2.conf
Simpan file dan ulangi perintah service apache2 restart seperti pada gambar 4.31.
7. Setelah restart service apache2 berhasil, buka browser untuk mengakses webserver yang dibuat di container ubuntuwebserver. Seperti yang dijelaskan pada gambar 4.28, container ubuntuwebserver dijalankan dengan port 80 yang dipublish ke port 8081 milik host. Jadi untuk mengakses webserver container ubuntuwebserver bisa menggunakan IP Address server:8081.
Gambar 4. 33 Webserver dari Container ubuntuwebserver Gambar diatas adalah tampilan default website yang diberikan oleh Apache2. Untuk tampilan website bisa diganti dengan template website lainnya sesuai dengan langkah dibawah ini.
8. Selanjutnya jika user akan mengganti template webserver dengan yang lain misalnya dengan template bootstrap. Terlebih dahulu download template dan ekstrak ke sebuah direktori. Untuk proses ini digunakan perintah $ docker cp yang berfungsi menyalin file atau direktori dari local system ke container ataupun sebaliknya. Terlebih dahulu keluar dari shell container menggunakan CTRL + P + Q tanpa stop container.
Gambar 4. 34 Docker cp untuk copying file
Dari local system copy direktori dimana template berada menggunakan perintah seperti pada gambar 4.35. Maksud dari perintah tersebut adalah copy direktori webbootstrap/ ke container ubuntuwebserver, direktori /var/www/. Lalu cek menggunakan perintah ls /var/www/.