Belajar Docker, bjir seru bat coy
Jadi dulu tuh gw pas di kampus gw pernah ngulik Docker, asli gw gak ada pengalaman khusus untuk ini, modal nekat aja pake Docker karena emang kepepet mau install Apache kafka, Hadoop, Airflow dan lainnya tanpa ribet, tapi pas gw tonton video YouTube Programmer Zaman Now asli gak ada yg masuk wkwkwkw kacau. Kek buang waktu gw nonton itu, tapi itu karena gw emang gak bisa nangkep sama sekali, alhasil ya modal pahamin aja tutorial nya, jalanin ini jalanin itu, gak gw dalemin banget itu perintah-perintah nya.
Sekarang dah lulus kuliah, kek emang penting aja sih skill Docker ini, jadi gw berupaya untuk recall lagi pengalaman gw belajar Docker ini, biar istilahnya gw gak perlu repot pusing install Airflow, susah banget kan tuh, konfig java sana sini ntah apa. Jadi di sini gw mau rekap sedikit aja apa yang udah gw pelajari 2 hari ini.
Di sini gw gak jelasin Docker itu apaan, konsep dan sebagainya, tapi langsung masuk aja ke pembahasan image dan container wkwkwk. Gw baru kepikiran analogi paling simple nya wkwkkw. Kita download aplikasi, trus kita install, image ini apk nya, sedangkan container ini aplikasi setelah kita install, karena udah bisa dipake wkwkwk. Trus Docker hub itu kayak playstore awkakwakw.
Okeh then, what is image? Image itu anggapannya kayak aplikasi yang mau kita pakai, anggaplah kita mau install Airflow, ya kita tinggal download image nya aja. Trus kita bisa langsung membuat container dari image tersebut yang nantinya dapat kita pakai untuk kebutuhan kita.
Di sini gw akan demo download image Airflow, dengan command "docker pull puckel/docker-airflow"
Jadi anggapannya, Docker ini akan mendownload image dari repository dia. Mudah nya begini, pernah install pandas kan? Caranya kan pip install pandas, nah pip ini kayak repository yang gw maksud, nama nya PyPi, sedangkan repo docker namanya Docker Hub. Segampang itu buat download image Airflow.
Berikut adalah tampilan di Docker Desktop nya kalau udah berhasil di-download
Bisa kita lihat, ada namanya puckel/docker-airflow, itu adalah nama image yang barusan kita download. Trus juga di Docker ini ada istilah tag (gampang nya ini kayak versi), kita bisa lihat dari airflow itu pakai versi paling update yang disebut latest, kemudian untuk contohnya image postgres itu pakai tag/versi 13.
Next kita jalankan command berikut
"docker run --name airflow -d -p 8080:8080 puckel/docker-airflow webserver"
Tujuannya apa? Kita akan membangun sebuah container bernama airflow, yang menggunakan image puckel/docker-airflow tersebut dengan menggunakan port 8080 sebagai host port yang kita pinjamkan ke port 8080 si Docker (jadi bisa kita buka di local kita), kemudian menjalankan perintah webserver untuk memulai UI airflow nya.
Penjelasan command:
- docker run, kita akan menjalankan sebuah container
- --name airflow, nama container yang mau dibuat, karena klo gak diberi nama, nama nya akan random
- -d artinya akan berjalan di mode detached, anggaplah kalau aplikasi nya jalan ya terminal log aplikasi nya gak nempel di terminal yang lagi kita pake, ni contohnya
Jadi itu paling atas gw bikin -d, Docker nya cukup sekedar menginfokan aja kalau container nya udah jalan dengan id sekian, tapi kalau gw hilangkan -d nya.
Log yang dikeluarkan terminal ketika menjalankan webserver akan keluar di terminal yang lagi kita pake, jadi kita perlu pakai terminal yang baru buat berinteraksi dengan Docker, atau ngestop layanan webserver airflow yang baru dijalankan tadi kalau mau pakai terminal yang sama. Okeh lanjut.
- -p artinya kita akan meneruskan port host kita ke container, jadi begini nih (localhost:container). Aplikasi webserver nya Airflow kan jalan di 8080, itu kita pinjemin slot port localhost kita yang di 8080, ke port si Airflow. Jadi gw bisa buka di localhost gw dengan port yang kebetulan sama untuk lihat UI webserver nya
Yak, udah kan? Jadi kita bisa meminjamkan slot port di localhost kita ke port container, dengan begitu kita bisa mengakses port container dari localhost kita. Next ada sedikit pembahasan mengenai volume, karena kan Airflow ini perlu dag file biar tau apa yang mau dijalankan, nah di Docker ini kita bisa melakukan file sharing dengan file di localhost kita, nama konsep nya itu volume, tapi karena gw masih agak kurang jadi ya gw bukan menjelaskan volume yang di Docker, tapi volume di luar Docker.
Komentar
Posting Komentar