Skip to main content

Masa Brooding Ayam

Pengenalan Docker (apa itu docker secara singkat)

Pengenalan Docker

Singkat-singkat aja ya. Lama klo dijelasin jentre satu2. Pertama dari kasus. Kasusnya adalah, ketika coder dgn berbagai latar belakang, skill dan alat tempur (laptop/PC dan OS nya).. Ketika setup environment untuk ngode, selalu ada kendala tidak kompatibel dsb, termasuk sampai implementasi / deployment di server. Sering terdengar “Jalan kok di komputer saya” .. 
Docker adalah virtual machine management, yg mana sebuah VM bisa dishare across coders sehingga semua coders selalu menggunakan image yang seragam. Nah perubahan2 pada image pun didistribusikan dan dikelola sebagaimana dikelolanya source code oleh GIT. Sehingga dapat dipastikan keseragaman sistem yg dipake tiap coders.
Docker muncul menyaingi Vagrant. Vagrant itu setiap imagenya full seperti VirtualBox, yang dikelola snapshotnya. Otomatis kalau VM yg dibuat banyak, bakal berat. Bedanya Docker, dia menggunakan teknologi Linux container LxC dan AuFS. LxC memastikan VM jalan tanpa virtualisasi / hypervisor. Sedangkan AuFS tidak memotret snapshot, tapi merekam delta/perubahan antar snapshot (sebagaimana git menyimpan delta perubahan source code). Intinya Docker lebih cepat (startup/bootnya saja hitungan milidetik) dan ringkas. Kelemahannya, VM yg dikelola cuma bisa linux.
To the point aja, kita coba Docker:
  1. Install
    Windows: https://docs.docker.com/installation/windows/
    Mac: https://docs.docker.com/installation/mac/
  2. Cobain. Buka shortcutnya yg ada di desktop, atau utk mac buka saja terminal
     docker run hello-world
  3. Pull salah satu image yg readily available. Misalnya centos. Docker akan unduh imagenya, sekitar 150MB. Gede ya? Ya tunggu saja :).
     docker pull centos
    Kalau pingin sekalian kerja, ya bisa pull image yg kita punya. Di situ sudah banyak setting yang dibuat.
    docker pull zaunaf/xond
  4. Image centos cukup kumplit. Kita coba command biasa dulu.
     docker run centos /bin/echo 'Halo Abah Kasep'
    atau jika image xond yg dipake:
    docker run zaunaf/xond /bin/echo 'Halo Abah Kasep'
    Dapat dilihat bahwa virtual os bekerja sangat cepat, tanpa lama2 booting langsung menjalankan program “echo” kemudian keluar kembali.
  5. Sekarang kita coba masuk shellnya.
     docker run -t -i centos /bin/bash
    atau jika image xond yg dipake:
    docker run -t -i zaunaf/xond /bin/bash
    Coba main2 di situ, eksplorasi si image dengan df, fstab, ls, dsb2.
  6. Sekarang coba buat perubahan di image yang sedang anda mainkan. Misalnya buatlah file di /root.
    bash$ touch /root/file_baru.txt
  7. Kemudian keluarlah dari shell
    bash$ exit
  8. Coba masuk kembali
    docker run -t -i centos /bin/bash
  9. Cek lah ke /root. Apakah file tadi masih ada ?
    bash$ ls -la /root
    Ternyata filenya HILANG !!!
  10. Jangan kuatir. File tsb bukanlah hilang. Yang anda lakukan terakhir tadi adalah membuat “container” baru. Snapshot kalau di bahasa VMWare/Virtualbox. Bayangkan anda punya sebuah VMDK atau VDI, anda gandakan, kemudian anda play, lakukan perubahan, kemudian pause. State “paused” tadi adalah container. Jika anda buat lagi VM baru, dgn VMDK/VDI duplikatnya, maka anda kembali dari kondisi awal. Nah VMDK / VDI tadi, itulah image. Sebelum lanjut anda harus mengerti konsep container ini.  Semua container yg pernah anda bikin, dapat dilihat dengan perintah berikut:
    docker ps -a
    Perhatikan hasilnya. Contohnya seperti ini :
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    c288a04382c0 zaunaf/xond:latest /bin/bash 4 hours ago Exited (127) 4 seconds ago berserk_engelbart
    303b56360f80 zaunaf/xond:latest /bin/bash 4 hours ago naughty_carson
  11. Ada dua container yang anda buat.. Yang anda tambahkan file tadi mungkin yang paling bawah. Setiap container otomatis diberi ID, nah container yg saya maksud tadi adalah yg id nya 303b56360f80. Perhatikan kolom paling kanan, “naughty_carson” .. Itu adalah nama yang otomatis diberikan docker pada tiap container. Nah hebatnya, anda bisa kembali ke kondisi yang anda buat tadi. Untuk kembali ke container di mana anda telah buat perubahan, jalankan command berikut:
    docker start naughty_carson
    Setelah itu masuklah kembali meneruskan shell anda tadi
    docker attach naughty_carson
    Tekan enter setelah itu, maka anda akan kembali ke bash. Periksa file yg anda buat pertama, apakah ada?
    bash$ ls -la /root
    Ternyata ada !! Nah seharusnya dengan eksperimen sederhana ini anda dapat mulai memahami konsep docker yang memang sepertinya agak membingungkan.
Masih banyak materi mengenai docker, misalnya bagaimana menjalankan service, mapping portnya, manajemen update docker yang seperti git, dsb. Insya Allah di post-post berikutnya.

sumber copas : https://subcoder77.wordpress.com/2014/08/14/pengenalan-docker/

Comments

Popular posts from this blog

Pengertian DataBase, MySQL dan phpMyAdmin

Pengertian DataBase, MySQL dan phpMyAdmin Pengertian DataBase DataBase adalah kumpulan informasi yang disusun berdasarkan cara tertentu dan merupakan suatu kesatuan yang utuh. Dengan sistem tersebut data yang terhimpun dalam suatu database dapat menghasilkan informasi yang berguna. Asal Mula Istilah Database Istilah “Database” berawal dari ilmu komputer. Meskipun kemudian artinya semakin luas, memasukkan hal-hal di luar bidang elektronika, postingan saya kali ini mengenai database komputer. Catatan yang mirip dengan database sebenarnya sudah ada sebelum revolusi industri yaitu dalam bentuk buku besar, kuitansi dan sekumpulan data yang berhubungan dengan bisnis. Konsep Dasar Database Konsep dasar dari database adalah kumpulan dari catatan-catatan, atau potongan dari pengetahuan. Sebuah database memiliki penjelasan terstruktur dari jenis fakta yang tersimpan di dalamnya: penjelasan ini disebut skema. Skema menggambarkan obyek yang diwakili suatu database, dan hubungan di antar...

Contoh aplikasi konversi Suhu java console (cmd) If Else

Contoh aplikasi konversi Suhu java console (cmd) If Else package tugas; import java.util.Scanner; public class KonversiSuhu { public static void main (String[] args){ int menu; double Suhuawal, Suhu; System.out.println("Aplikasi Konversi Suhu"); System.out.println("Menu Aplikasi"); System.out.println("[1] Dari Celcius ke Reamur"); System.out.println("[2] Dari Celcius ke Farenheit"); System.out.println("[3] Dari Reamur ke Celcius"); System.out.println("[4] Dari Reamur ke Farenheit"); System.out.println("[5] Dari Farenheit ke Celcius"); System.out.println("[6] Dari Farenheit ke Reamur"); System.out.print("Masukan Kode menu : "); Scanner Scanner = new Scanner(System.in); menu = Scanner.nextInt(); if(menu == 1){ System.out.println("Konversi Dari Celcius ke Reamur"); System.out.print("Inputkan Nilai Suhu Celcius: "); Suhuawal = Sca...

Menambahkan custom connection in symfony 4 (multiple connection)

add ini service.yml app.event.authentication_success_listener : class : App\EventListener\AuthenticationSuccessListener tags : - { name : kernel.event_listener, event : lexik_jwt_authentication.on_authentication_success, method : onAuthenticationSuccessResponse } # abc def ghi # ------------ app.date_normalizer : class : Symfony\Component\Serializer\Normalizer\DateTimeNormalizer arguments : - { 'datetime_format' : 'Y-m-d H:i:s' } and create file doctrine.yml parameters : # Adds a fallback DATABASE_URL if the env var is not set. # This allows you to run cache:warmup even if your # environment variables are not available yet. # You should not need to change this value. env(DATABASE_URL) : '' doctrine : dbal : default_connection : default connections : default : driver : 'pdo_sqlsrv' server_version : '11.0' url : ...