Professional Documents
Culture Documents
Ebook-Docker Revisi 1
Ebook-Docker Revisi 1
Docker
penulis
aditiya dwi ramadani
Kata Pengantar
Puji syukur bagi kehadirat Allah Swt. Atas rahmat dan
karunia nya .
1
nya bisa buat bahan evaluasi untuk menyempurnakan
buku ini.
Penulis
2
Daftar Isi
Apa Itu Docker...........................................................4
Perbedaan Docker Dengan vm................................ 4
Cara kerja Docker................................................... 10
Instalasi Docker...................................................... 12
Docker Image.......................................................... 13
Docker Registry...................................................... 14
Docker Container.................................................... 15
Cara menggabil image di docker...........................17
Cara membuat image di docker.............................20
Membuat Container................................................ 30
Menghapus Container............................................ 34
Menghapus Image...................................................37
Docker Logs............................................................ 38
Docker Network.......................................................42
Menjalankan Perintah di docker container........... 42
Environment Variable............................................. 53
Docker Bind Mount................................................. 56
Docker Volume........................................................ 60
Akhiran.....................................................................65
3
Apa Itu Docker
Docker adalah layanan yang menyediakan kemampuan
untuk mengemas dan menjalankan sebuah aplikasi
dalam sebuah lingkungan terisolasi yang disebut
dengan container. Dengan adanya isolasi dan
keamanan yang memadai memungkinkan kamu untuk
menjalankan banyak container di waktu yang
bersamaan pada host tertentu.
1. Arsitektur:
● Docker: Docker menggunakan teknologi
kontainerisasi di tingkat sistem operasi
yang disebut "kontainer". Kontainer
berbagi kernel sistem operasi host, tetapi
4
memiliki lingkungan yang terisolasi dan
tersendiri untuk menjalankan aplikasi.
2. Isolasi:
● Docker: Container Docker memberikan
isolasi yang lebih ringan dibandingkan
VM karena mereka berbagi kernel sistem
operasi host. Setiap kontainer memiliki
lingkungan terisolasi yang memungkinkan
aplikasi berjalan secara independen.
5
● Docker: Karena container Docker berbagi
kernel sistem operasi host, mereka
menggunakan sumber daya yang lebih
sedikit dan memiliki waktu startup yang
lebih cepat. Kontainer juga lebih ringan
dalam hal penggunaan memori dan ruang
penyimpanan.
4. Portabilitas:
6
hypervisor yang kompatibel, tetapi
mungkin memerlukan penyesuaian jika
host menggunakan arsitektur yang
berbeda.
5. Skalabilitas:
7
3.Kelebihan Docker
Dalam penggunaannya, docker memiliki beragam
manfaat atau kelebihan yang menjadikannya populer
di kalangan developer. Berikut ini adalah beberapa
kelebihannya.
8
konfigurasi apa pun, kecuali ada yang memiliki
akses secara penuh.
9
Cara Kerja Docker
Pertama, docker client akan menerima perintah user
seperti pull, build, atau run. Kemudian Docker client
terhubung dengan Docker daemon (proses pengolahan
images, network dan volume storage) yang terdapat
pada Docker host.
10
11
Instalasi Docker
cara instalasi docker cukup muda , seperti install
aplikasi biasa kalian cukup kunjugi situs resmi
buat download docker
https://docs.docker.com/engine/install/https://docs.
docker.com/engine/install/ setelah kalian menginstall
docker kalian bisa buka terminal kalau di mac dan
linux , untuk yang di windows kalian bisa buka di
Cmd , ketik perintah seperti di bawah ini
12
Docker Image
Docker image seperti installer sebuah aplikasi, dimana
di dalam docker image terdapat aplikasi dan
dependensinya
13
Docker Registry
Wadah untuk menyimpan Docker image. Docker image
akan memberi reaksi sesuai perintah yang diberikan.
Misalnya, saat diberi perintah docker push, docker
image akan didorong atau dibagikan ke registry
Docker Hub.
Docker Container
Docker container adalah sebuah unit yang terisolasi
yang berjalan di dalam lingkungan Docker. Container
ini mengemas aplikasi bersama dengan semua
dependensinya, termasuk sistem operasi, perpustakaan,
14
dan alat lain yang diperlukan agar aplikasi dapat
berjalan dengan benar. Docker container memberikan
cara yang konsisten dan dapat diulang untuk
mengemas, mendistribusikan, dan menjalankan
aplikasi di berbagai lingkungan, termasuk lingkungan
pengembangan lokal, server, atau cloud.
15
konsisten, serta memastikan aplikasi berjalan dengan
benar di berbagai lingkungan yang berbeda
16
Cara menggabil Image Di docker
cara mengambil image di docker kalian bisa kunjungi
website penyedia image , yang disini saya contohkan
adalah docker hub di docker hub banyak image yang
sering digunakan misalnya nodejs, mysql, mongodb
dan masih banyak lagi jika kalian ingin mengambil
image di registry itu cukup muda kalian tinggal ketik
docker pull nama_image:tags
17
kalian bisa cari tags yang kalian inginkan misalnya
disini saya mencari node js dengan tags slim. Setelah
itu copy command nya , kalain masuk ke terminal
atau cmd . Paste command yang kalian copy tadi
seperti dibawah contohnya
18
bingung ya. Nah yang terpenting node js sudah
terdownload
19
Cara membuat image di docker
untuk membuat image di Docker, Kalian perlu
membuat sebuah file bernama Dockerfile yang berisi
instruksi-instruksi untuk membangun image. Berikut
adalah langkah-langkah umum untuk membuat image
di Docker:
20
Selanjutnya, Kalian dapat menambahkan
instruksi-instruksi tambahan di dalam Dockerfile sesuai
dengan kebutuhan proyek Kalian. Instruksi-instruksi
tersebut dapat mencakup:
21
untuk image yang akan dibuat, dan sertakan titik (.)
di akhir perintah untuk menunjukkan bahwa
Dockerfile ada di direktori saat ini. Contohnya: docker
build -t nama_image:tag .
22
saya jelasin dulu ya secara singkat . Pertama kita
ambil module http. Http udah default di nodejs kalian
langsung bisa menggunakanya . Kemudian
http.createServer kita membuat sebuah server baru.
Kemudian di ada dua parameter yaitu req res. Req
sendiri adalah request dan res sendiri adalah response.
Disini kita membuat http server yang merespon
sebuah teks “Hello world”
23
kemudian kalian buka browser masukan alamat
localhost:8080. Maka akan muncul Hello world di
browser
24
saya jelasin ya pertama kita . Menentukan image
dasar, image yang kita gunakan , yang kita singgung
sebelumnya. Kita mengambil image lain yang kita
butuhkan. Kemudian kita Menyalin file proyek: Salin
file proyek Kalian ke dalam container Docker. Kalian
dapat menggunakan perintah "COPY" untuk menyalin
file atau direktori ke dalam kontainer. Kalau
Dockerfile nya berada di project kita. COPY . /app
25
Perintah ini akan menyalin semua file dan direktori
dari direktori proyek saat ini ke direktori "/app" di
dalam kontainer.
26
Perintah ini akan menjalankan file "app.js"
menggunakan Node.js di dalam kontainer
27
Disini perintah “RUN” saya hapus karena tidak
memerlukan dependensi. Setelah itu kalian bisa
menjalankan perintah
28
Jika sudah seperti ini berarti kalian sudah sukses
build docker image kalian sendiri , boom kalian bisa
membuat image kalian sendiri. Setelah ini kita akan
membuat container
29
Membuat Container
cara membuat container di docker , kita ambil dari
image yang kita buat sebelumnya, untuk membuat
container di docker itu cukup mudah kalian bisa ketik
perintah docker container create –name
nama_container nama_images:tags
30
dalam container melalui port yang diberikan pada
host.
docker ps -a
31
oke kita coba , untuk melihat semua container , buka
terminal kalian kemudian ketik docker docker ps -a
32
boom kalau sudah seperti gambar diatas container
kalian sudah berjalan , karena port nya kita sudah
expose , kita bisa langsung mengakses di browser
dengan mengetikan localhost:8080, maka akan muncul
seperti gambar di bawah ini
33
Menghentikan Container
Untuk menghentikan container , kalian dapat
menggunakan perintah docker container stop. Perintah
ini mengirimkan sinyal ke proses di dalam container
yang mengindikasikan untuk menghentikan diri. Proses
tersebut akan dihentikan dengan cara yang aman dan
bersih, mirip dengan saat kalian menghentikan sebuah
aplikasi dengan baik.
Menghapus Container
sekarang kita sudah stop kontainer nya , nah
gimana cara menghapus container nya , cara
cukup mudah kalian tinggal ketik perintah docker
34
container rm nama_container , makan docker
akan menghapus container yang kita buat
sebelumnya .
35
kalau sudah seperti ini container kalian sudah
terhapus . Setelah ini kita akan juga menghapus
image
36
Menghapus Image
cara menghapus image di docker cukup lah mudah ,
dengan menggunakan perintah docker image rm,
sebelum menghapus image alangka baiknya kalian
hapus dulu container yang terkait dengan image
tersebut .
37
Docker Logs
Ketika sebuah container Docker berjalan, aplikasi atau
layanan yang berada di dalam container tersebut
dapat menghasilkan log sebagai bagian dari prosesnya.
Login penting untuk pemantauan, debugging, dan
pemecahan masalah, karena mereka memberikan
wawasan tentang apa yang terjadi di dalam container.
38
saat kita menjalankan file index.js maka akan muncul
logs “Hello word” , dengan menggunakan
console.log(“”) console.log sendiri di javascript untuk
menampilkan teks di console itu penjelasan singkat
tentang console.log di javascript, jika kalian sudah
memahami javascript mungkin kalian sudah mengerti
console.log di javascript.
39
40
Docker Network
Docker network adalah fitur dalam Docker yang
memungkinkan container Docker untuk berkomunikasi
satu sama lain dan dengan host secara terisolasi dan
aman. Dalam istilah yang mudah dipahami, Docker
network adalah jaringan virtual yang diciptakan oleh
Docker yang memungkinkan container berbicara satu
sama lain.
41
terisolasi di antara container, yang memungkinkan
container-container tersebut berinteraksi satu sama
lain dalam lingkungan yang aman dan terkontrol.
Membuat Network
Oke mari kita coba membuat docker network .
Sebelum kalian membuat docker network kalian bisa
download source code yang ada link ini , kalau sudah
kalian download source code nya kalian bisa ambil
image nya mongodb yang ada di docker hub cara
cukup mudah kalian bisa ketik docker pull mongo.
Kalau langsung seperti ini dia akan mengambil image
yang terbaru , kita ambil versi yang terbaru saja ,
atau kalian bisa ambil versi sesuai kebutuhan kalian .
Tetapi disini saya lebih menyarankan versi yang
terbaru.
42
Setelah ambil image mongo kalian bisa membuat
container menggunakan mongo image , docker
container create –name mongodb -p 27017:27017
mongo:latest
43
Setelah build image nya kalian buat container .
Dengan port 8080 seperti yang kita buat
sebelumnya.Disini saya menggunakan nama con
container nya nodejs-apps , kalian bisa samakan biar
tidak bingung.
44
untuk nama kalian bisa menggunakan nama sesuka
hati kalian sendiri
Menghubungkan Network
disini sudah kelihatan network yang kita buat
sebelumnya , kemudian kita akan menghubungkan
45
container yang kita buat ke network . Cara nya cukup
mudah dengan menggunakan printah docker network
connect network_name container name
Seperti di bawah ini contoh kita menghubungkan
kontainer yang kita buat sebelumnya ke network
Network inspect
Untuk melihat container kita sudah terdaftar di dalam
network kita bisa menggunakan docker network inspect
nama_network , fungsi inspect ini sendiri digunakan
untuk mendapatkan informasi terperinci tentang
sebuah Docker network. Perintah ini memberikan
tampilan JSON yang mencakup konfigurasi, container
yang terhubung, dan detail lainnya tentang network
tersebut.
46
Kalau sudah kalian bisa kunjungi localhost:8080 ,
tetapi kalian harus mendownload aplikasi postman ,
atau aplikasi api testing lainya. Disini saya
menggunakan postman biar lebih mudah.
47
Menghapus Network
Untuk menghapus network kalian bisa menggunakan
perintah docker network rm nama_network
48
Menjalankan Perintah Di dalam
Container
jika kalian ingin menjalankan perintah di dalam
container , kalian bisa menggunakan perintah docker
exec .
49
Jika sudah semua kalian bisa jalankan docker exec
nama_container -it bash
-it adalah untuk menjalankan perintah dalam mode
interaktif dan terminal
50
untuk keluar dari shell kalian bisa menggunakan
perintah exit
51
Environment variables
Dalam Docker, kalian dapat mengatur variabel
lingkungan (environment variables) untuk kontainer
menggunakan opsi -e atau --env saat menjalankan
kontainer
52
mengambil env variable . Di nodejs untuk mengambil
env variable menggunakan
process.env.NAMA_VARIABLE.
53
seperti yang dijelaskan sebelumnya , kita gunakan
MONGO_HOST buat host nya mongodb nya dan
MONGO_PORT buat port.
54
Docker Bind Mount
55
mana kita meletakan datanya , misalnya di taruh
/home/nama_user/Document/blalablala . Dan target
nya sendiri yaitu target dir yang ada di container.
56
kalau sudah di install image nya kalian bisa membuat
container , kalian bisa membuat kontainer
menggunakan command seperti di bawah ini
57
Kalau sukses maka seperti ini , Oke mari kita coba
cek folder di local kita
58
Docker Volume
ketika kalian membuat container, semua datanya ada
di container , nah untuk mengatasi ini ada docker
volume , Docker volume adalah mekanisme yang
digunakan untuk menyimpan dan berbagi data antara
container Docker dan host sistem. Dengan
menggunakan volume, kalian dapat memisahkan data
yang dihasilkan atau digunakan oleh kontainer dari
siklus hidup kontainer itu sendiri. Berikut adalah
beberapa konsep yang mungkin dibahas dalam
artikel-artikel tersebut:
59
data terpisah, kalian dapat menggunakan
volume untuk menyimpan data basis data yang
dapat diakses oleh kontainer web.
Membuat Volume
Cara membuat volume di docker , kali ini kita
membuat kontainer yang menggunakan mongodb ,
60
nah kita harus tau dimana mongodb menaruh
database folder , untuk mencari itu kalian bisa ke
docker hub kemudian cari image mongodb , kalau
sudah ketemu kalian bisa cek , mongodb menaruh
Mysql dan yang lainya juga kalian haru cari tau dulu
di mana mereka menaruh folder nya kalau di
mongodb folder nya ada di /data/db. Tetapi kalau
kalian ingin membuat volume di aplikasi kalain
sendiri , caranya seperti di bind mount yang kita
bahas sebelumnya.
61
sebelumnya . docker run -d –name mongo-container
-v mongo-da:/data/db -p 27017:27017 mongo
Sama seperti sebelumnya kita menggunakan docker
run , biar kita bisa langsung menjalankan container ,
perbedaan nya sama bind mount , kalau di bind
mount kita mendefinisikan folder nya , tetapi kalau di
volume kita menggunakan nama volume yang dibuat
sebelumnya .
62
untuk lebih lanjut tentang volume kalian bisa
membaca dokumentasinya disini:
https://docs.docker.com/storage/volumes/
Menghapus Volume
untuk menghapus volume kalian bisa menggunakan
docker volume rm , tetapi sebelum menghapus
volume kalian hapus terlebih dahulu container nya
63
Menghapus Semua container, image ,
network dan volume
untuk menghapus semua container, image , network
dan volume kalian bisa menggunakan perintah prune .
Kalau di image beda harus ada argument -fa kalau di
image.
64
di bawah sendiri biasanya ada total reclaimed, ini
total punya saya , sekitar 1.6gb lumayan besar
65
Akhiran
IG : @aditiyadwiramadani87
Telegram: @Kanutku
66
Hak cipta dilindungi undang-undang. Dilarang
mengutip atau memperbanyak sebagian atau
seluruh isi buku ini tanpa izin tertulis dari penulis
67
Referensi
https://www.dicoding.com/blog/apa-itu-docker/
https://docs.docker.com/
https://cloudraya.com/blog/pelajari-pengertian-docke
r-fungsi-dan-cara-kerjanya
https://www.konsepkoding.com/2022/11/tutorial-dock
er-pengenalan-mengenai-docker.html?m=1
68
69