Download as pdf or txt
Download as pdf or txt
You are on page 1of 70

Learn Basic

Docker
penulis
aditiya dwi ramadani
Kata Pengantar
Puji syukur bagi kehadirat Allah Swt. Atas rahmat dan
karunia nya .

Buku dengan judul “Learn Basic Docker” buku ini di


tujukan kepada seoserang yang ingin belajar docker

buku khusus memahami dasar dasar docker dan


memberikan langkah langka mudah untuk memulai
belajar docker.

Disini kita akan memahami apa itu docker sendiri,


bagaimana cara menginstall docker bagaimana cara
membuat image ,container,network dan volume.

Apakah kalian seorang software Engineer yang ingin


mengoptimalkan alur kerja pengembangan kalian,
seorang administrator sistem yang ingin mengelola
dan mengimplementasikan aplikasi dengan lebih
efisien, atau bahkan seorang penggiat teknologi yang
penasaran dengan kontainerisasi, buku ini akan
menjadi panduan praktis dan terperinci untuk
memulai perjalanan kalian dengan Docker

Demikianlah buku ini saya buat . Saya menyadari


bahwa buku ini jauh dari kata sempurna . Untuk itu
saya menerima kritik atau saran dari kalian . Nanti

1
nya bisa buat bahan evaluasi untuk menyempurnakan
buku ini.

Pasuruan , 26 Juni 2023

Aditiya Dwi Ramadani

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.

Perbedaan Docker dengan VM


Docker dan mesin virtual (VM) adalah dua
teknologi yang digunakan untuk mengisolasi dan
menjalankan aplikasi secara terpisah. Meskipun
keduanya dapat digunakan untuk mencapai tujuan
yang serupa, ada perbedaan penting antara
Docker dan VM dalam cara mereka bekerja dan
menggunakan sumber daya.

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.

● VM: VM adalah replika virtual dari


sistem komputer lengkap dengan sistem
operasi dan sumber daya perangkat keras.
Setiap VM menjalankan sistem operasi
sendiri secara independen.

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.

● VM: VM memberikan isolasi yang lebih


ketat karena setiap VM memiliki sistem
operasi sendiri. Ini berarti aplikasi di
setiap VM tidak berinteraksi langsung
dengan aplikasi di VM lainnya atau
sistem host.

3. Penggunaan Sumber Daya:

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.

● VM: VM memerlukan alokasi sumber


daya yang lebih besar karena setiap VM
menjalankan sistem operasi secara
independen. Setiap VM juga memerlukan
ruang penyimpanan terpisah untuk sistem
operasinya sendiri.

4. Portabilitas:

● Docker: Docker memungkinkan


portabilitas yang lebih baik karena
kontainer dapat dijalankan di berbagai
sistem yang memiliki Docker terpasang,
tanpa memperhatikan sistem operasi yang
digunakan.

● VM: Portabilitas VM tergantung pada


hypervisor yang digunakan. VM dapat
dipindahkan antara host dengan

6
hypervisor yang kompatibel, tetapi
mungkin memerlukan penyesuaian jika
host menggunakan arsitektur yang
berbeda.

5. Skalabilitas:

● Docker: Docker memungkinkan


skalabilitas yang lebih baik karena
kontainer dapat dengan mudah direplikasi
dan didistribusikan di berbagai mesin
atau cloud instances.

● VM: Skalabilitas VM memerlukan


pengaturan yang lebih rumit karena
setiap VM harus dikonfigurasi dan diatur
secara terpisah.

7
3.Kelebihan Docker
Dalam penggunaannya, docker memiliki beragam
manfaat atau kelebihan yang menjadikannya populer
di kalangan developer. Berikut ini adalah beberapa
kelebihannya.

● Memiliki konfigurasi yang sederhana


Docker memiliki konfigurasi yang cukup
sederhana dan dapat kamu sesuaikan dengan
kebutuhan aplikasi yang sedang kamu
kembangkan. Hanya dengan menentukan
beberapa kode, ia akan membuat environment
sendiri yang berbeda dengan environment dari
server utama.

● Tingkat keamanan yang baik


Docker memiliki tingkat keamanan yang baik.
Ia akan memastikan aplikasi yang sedang
berjalan tidak dapat memengaruhi container.
Selain itu, ia juga memiliki fitur keamanan lain
seperti pengaturan OS host mount dengan akses
read-only sehingga tidak akan mengubah

8
konfigurasi apa pun, kecuali ada yang memiliki
akses secara penuh.

● Dapat dijalankan pada beberapa platform


cloud
Salah satu penyebab docker banyak diminati
oleh banyak perusahaan adalah karena ia dapat
dijalankan pada beberapa platform cloud.
Dengan begitu, penggunanya akan lebih
fleksibel dalam melakukan porting aplikasi.

● Dapat melakukan debugging


Kelebihan berikutnya adalah ia dapat
melakukan debugging. Waktu yang
dibutuhkannya juga tergolong cepat, yakni
hanya sekitar satu menit saja untuk melakukan
proses debug pada Sandbox.

● Dapat digunakan pada berbagai sistem


operasi
Sebelumnya kamu sudah mengetahui fitur dari
docker yang dapat berjalan di sistem operasi
seperti Windows, Mac, dan Linux. Hal tersebut
akan memudahkan pengguna dari fleksibilitas.

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.

Selanjutnya, Docker daemon berhasil menerima


perintah yang diberikan client dan bersiap
menjalankan perintah sesuai request atau permintaan.
Beberapa perintah Docker diantaranya sebagai berikut:

● Build: membangun file image dan


container.

● Pull: mengunduh atau menarik gambar


dari registry.

● Run: menjalankan seluruh proses dalam


container.

Seperti Di bawah ini gambaran Cara kerja docker

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

jika kalian menggunakan linux kalian harus masuk


ke root dulu kalau di mac atau windows , kalian
bisa langsung ketik docker -v

12
Docker Image
Docker image seperti installer sebuah aplikasi, dimana
di dalam docker image terdapat aplikasi dan
dependensinya

Tidak seperti vm.vm itu terdapat sebuah sistem


operasi. karena isinya sistem operasi kalau kita ingin
menjalankan harus booting terlebih dahulu, kemudian
kalau mau install program atau dependensi yang kita
butuhkan masih install manual

kalau di docker image isinya aplikasi kita , dan


dependensi yang kita butuhkan di dalam aplikasi yang
kita buat.

Sebelum Kita menjalankan aplikasi kita di docker kita


perlu mendownload dulu docker image nya . Misal di
aplikasi kita kita perlu database mysql kita harus
mendownload terlebih dahulu image mysql yang di
sediakan di docker registry.

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.

Dan docker pull untuk mengambil image yang kita


inginkan , misal kita ingin mengambil mysql tinggal
ketik perintah docker pull mysql

ada beberapa Plafrom docker registry


https://hub.docker.com/ dan ada
https://jfrog.com/integration/docker-registry/ dan masih
ada beberapa docker registry lainnya.

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.

Setiap Docker container berjalan secara terisolasi dari


lingkungan host dan container lainnya, sehingga tidak
ada interaksi atau konflik yang terjadi antara
container-container yang berbeda. Hal ini
memungkinkan aplikasi yang dikemas dalam container
untuk berjalan secara konsisten di berbagai lingkungan
tanpa perlu mengkhawatirkan perbedaan konfigurasi
atau dependensi.

Docker container juga ringan dan cepat dalam hal


waktu startup dan penggunaan sumber daya, karena
mereka membagi kernel host dan menggunakan
fitur-fitur virtualisasi pada tingkat sistem operasi. Ini
membuatnya sangat efisien dalam mengelola aplikasi
dalam lingkungan yang terisolasi dan portabel.

Dengan menggunakan Docker container, pengembang


dan operator sistem dapat dengan mudah membuat,
mengelola, dan menyiapkan aplikasi dengan cepat dan

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

untuk contoh nya seperti ini. Kalian cari dulu image


nya di docker hub

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

kalain tunggu sampai selesai , kemudian kalian ketik


perintah docker images . Untuk mengecek apakah
image nya sudah terinstall atau belum

nah maka muncul seperti ini , disini sudah banyak


image yang saya gunakan jadi tidak perlu jangan

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:

Buatlah sebuah direktori baru untuk proyek Docker


Kalian.

Di dalam direktori tersebut, buat file bernama


"Dockerfile" (tanpa ekstensi) menggunakan editor teks.

Buka file Dockerfile dan tentukan base image yang


akan Kalian gunakan sebagai dasar image baru.
Contohnya, jika Kalian ingin membuat image baru,
Kalian dapat menuliskan: FROM nama_image:tags

nama image di ambil dari nama image yang kita


butuhkan misalnya kita butuhkan yaitu nodejs , kita
buat nama_images:tags , tags disini bisa disimpulkan
sebagai versi

20
Selanjutnya, Kalian dapat menambahkan
instruksi-instruksi tambahan di dalam Dockerfile sesuai
dengan kebutuhan proyek Kalian. Instruksi-instruksi
tersebut dapat mencakup:

Menyalin file atau direktori ke dalam image


menggunakan perintah COPY.

Menjalankan perintah-perintah di dalam image


menggunakan perintah RUN.

Menentukan direktori kerja (working directory) di


dalam image menggunakan perintah WORKDIR.

Mengekspos port yang akan digunakan oleh kontainer


menggunakan perintah EXPOSE.

Menentukan perintah default yang akan dijalankan


saat kontainer berjalan menggunakan perintah CMD.

Dan banyak lagi instruksi lainnya sesuai kebutuhan.

Setelah selesai menulis Dockerfile, simpan perubahan


dan tutup file.

Buka terminal atau command prompt, lalu navigasikan


ke direktori proyek Docker Kalian.

Jalankan perintah docker build di terminal dengan


menyertakan opsi -t untuk menentukan nama dan tag

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 .

Docker akan membaca Dockerfile dan menjalankan


instruksi-instruksi yang ada untuk membangun image.
Proses ini mungkin membutuhkan beberapa saat
tergantung pada ukuran dan kompleksitas image yang
akan dibangun.

Setelah proses pembangunan selesai, Kalian dapat


melihat daftar image yang ada di Docker dengan
perintah docker images. Image yang baru saja Kalian
buat akan terdaftar di sana.

Image tersebut siap untuk digunakan untuk membuat


dan menjalankan kontainer dengan perintah docker
run

Contoh Membuat image menggunakan nodejs

kalian buat file dulu bernama index.js di editor


kesayangan kalian . Kalian bisa pakai vim vscode .
Atau yang lainya . disini saya pakai sublime text .

Berikut ini contoh file nya

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”

jalankan: menggunakan perintah node index.js seperti


di bawah ini contoh nya

23
kemudian kalian buka browser masukan alamat
localhost:8080. Maka akan muncul Hello world di
browser

seperti ini. Oke kita akan lanjutkan. Setelah ini kita


akan membuat file Dockerfile. Buka teks editor kalian
isi file DockerFile seperti di bawah ini

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.

mengatur direktori kerja: Tetapkan direktori kerja di


dalam kontainer dengan perintah "WORKDIR /app".
Ini akan mengatur direktori kerja saat ini ke "/app" di
dalam kontainer.

Menginstal dependensi: Jika proyek kita menggunakan


dependensi atau paket Node.js, Kalian perlu
menginstalnya di dalam kontainer. Gunakan perintah
"RUN" untuk menjalankan perintah instalasi
dependensi.

Disini kita tidak memakai dependensi jadi tidak perlu


run , kalau kalian. Jika project kalian tidak memiliki
dependensi maka tidak perlu yang namanya perintah
“RUN”. Tetapi kalau kalian memakai express js atau
yang lainya kalian bisa menggunakan perintah RUN.
Jadi perintah run di hapus saja.

Menjalankan aplikasi: Terakhir, kalian perlu


menentukan perintah untuk menjalankan aplikasi
Node.js di dalam kontainer. Gunakan perintah "CMD"
atau "ENTRYPOINT" untuk menjalankan perintah.

26
Perintah ini akan menjalankan file "app.js"
menggunakan Node.js di dalam kontainer

Build image Docker: Setelah Dockerfile selesai, Kalian


dapat membangun image Docker dengan menjalankan
perintah berikut di terminal atau command prompt di
direktori proyek:
docker build -t nama_image:tags .

Gantilah "nama_image:tags" disini saya menggunakan


nodejs-app:1.0. .Titik di akhir perintah menunjukkan
bahwa Dockerfile dan konteks proyek (file dan
direktori yang diperlukan) berada di direktori saat ini.

27
Disini perintah “RUN” saya hapus karena tidak
memerlukan dependensi. Setelah itu kalian bisa
menjalankan perintah

docker build -t nodejs-app:1.0.

tags itu terserah kalian tidak hanya cuma angka ,


kalian bisa custom sesuai hati kalian kalian bisa
menggunakan slim atau laters.

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

--name di docker container membuat nama yang ingin


kalian costume sendiri, kalau tidak di tambahkan
–name docker akan mengeneret nama secara otomatis
, jadi lebih baik gunakan –name ya biar kalian tidak
bingung

disini saya akan membuat docker container


menggunakan image nodejs yang kita buat
sebelumnya. Untuk membuat nya cukup muda kalian
bisa ketik perintah docker container

docker container create --name nodejs-apps -p


8080:8080 nodejs-app:1.0

-p disini adalah, untuk mengekspos port dari


container ke host. Port yang ditentukan akan
dihubungkan antara host dan container, sehingga
kalian dapat mengakses layanan yang berjalan di

30
dalam container melalui port yang diberikan pada
host.

Format umum untuk opsi -p adalah


<host-port>:<container-port>. Ini berarti port di host
akan meneruskan lalu lintas ke port yang sesuai di
dalam container. kalian dapat mengakses layanan yang
berjalan di dalam container melalui localhost:8080
atau host-ip:8080

oke selanjutnya kalian buka terminal kalain kemudian


kalian ketik perintah di atas untuk membuat container

kalau sudah membuat container makan akan muncul


seperti gambar diatas. Setelah itu kalian bisa cek
container nya sudah ada atau belum untuk mengecek
nya kalian bisa menggunakan perintah

docker ps -a

docker ps -a perintah untuk melihat semua container


yang belum berjalan maupun yang sedang berjalan ,
untuk melihat container yang sudah berjalan kalian
bisa menggunakan perintah docker ps saja

31
oke kita coba , untuk melihat semua container , buka
terminal kalian kemudian ketik docker docker ps -a

kalian bisa melihat semua container nya . Jangan


bingung ya disini memang banyak container yang saya
buat sebelumnya . Setelah melihat list kalian bisa
menjalankan container yang kita buat . Caranya cukup
simple kalian bisa menggunakan perintah .

docker container start nama_container

oke kita langsung coba untuk menjalankan container


yang kita buat sebelumnya,

ketik perintah berikut docker container start


nodejs-apps

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.

Oke kita coba perintah berikut ini dengan


kontainer yang kita lakukan sebelumnya , ketik
perintah ini docker container stop nodejs-apps

kalau kalian sudah melakukan perintah di atas


maka akan muncul seperti gambar berikut ini

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 .

Oke kita langsung coba dengan container yang


kita buat sebelumnya . Dengan mengetik perintah
docker container rm nodejs-apps. Kalau kalian
sudah melakukan perintah nya maka muncul
seperti gambar di bawah ini

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 .

Oke kita langsung coba saja untuk menghapus image


di docker , karena sebelumnya kita sudah menghapus
container yang terkait dengan image dengan image
nodejs-app, sekarang kita sudah bisa menghapus
image nya mari kita coba . Buka terminal kalian
kemudian ketik

docker image rm nodejs-apps:1.0

kalau sudah maka muncul seperti di bawah ini

yess . image yang kita buat sebelumnya sudah


terhapus

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.

Perintah docker logs memungkinkan kalian untuk


mengakses log yang dihasilkan oleh container Docker
tersebut. Dengan menjalankan perintah ini, kalian
dapat melihat log secara langsung di terminal atau
command prompt.

Berikut adalah contoh penggunaan perintah docker


logs:

docker logs nama_container

oke kita langsung mencobanya docker logs , sebelum


mencobanya kalian bisa mengganti file index.js yang
kita buat sebelumnya , menjadi seperti di bawah ini

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.

Oke kalau kita sudah menggantinya kalian build lagi


image nya , kita sudah bahas sebelumnya untuk
membuild image. Setelah kalian membuild image
kalian bisa membuat container nya

oke kalau sudah kalian lakukan container nya ,


kemudian kalian ketik docker logs nama_container

maka akan muncul seperti di bawah ini, karena kita


sebelumnya menambahkan code console.log(“Hallo
dunia”) maka ia muncul sebagai logs

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.

Oke kita lihat penjelasan rinci tentang docker


network:

Saat kalian menjalankan container Docker, secara


default, container-container tersebut terisolasi satu
sama lain dan dari host. Ini berarti mereka tidak
dapat berkomunikasi secara langsung atau mengakses
layanan yang berjalan pada container lain atau host.
Di sinilah Docker network masuk.

Docker network memungkinkan kalian membuat


jaringan virtual yang diatur oleh Docker, di mana
kalian dapat menempatkan beberapa container.
Container yang berada dalam jaringan yang sama
dapat saling berkomunikasi melalui alamat IP internal
yang diberikan oleh Docker network. Dengan Docker
network, kalian dapat membuat lingkungan yang

41
terisolasi di antara container, yang memungkinkan
container-container tersebut berinteraksi satu sama
lain dalam lingkungan yang aman dan terkontrol.

Cara membuat docker network cukup mudah kalian


bisa menggunakan perintah docker network create
nama_network .

Untuk menyambungkan container ke network kalian


bisa menggunakan printah docker network connect
nama_container

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

Setelah itu Kalian masuk ke directory source code


yang di download tadi build image nya . Disini saya
buat image nya dengan nama node-mongo:1.0
.sebelum di build kalian bisa ganti nama url mongo
nya dengan nama container mongodb nya , contoh
nya seperti di bawah ini

build image kalian, kalau sudah ganti url nya , kalian


bisa melihat contoh seperti di bawah ini kalau kalian
sudah build image nya

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.

Setelahnya kalian bisa membuat network , dengan


menggunakan perintah docker network create
nodejs-mongodb

44
untuk nama kalian bisa menggunakan nama sesuka
hati kalian sendiri

seperti di bawah ini contoh membuat network

Menampilkan Daftar Network


untuk menampilkan daftar network yang telah kita
buat menggunakan printah docker network ls

Seperti dibawah ini contoh nya

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.

Seperti di bawah ini contoh docker network inspect

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.

disini untuk method post itu , untuk menambahkan


data , menabahkan data ke dalam database mongodb
, untuk method get nya kalian bisa melihat semua
data yang telah di insert. Seperti di bawah ini untuk
melihat semua data yang telah di tambahkan

47
Menghapus Network
Untuk menghapus network kalian bisa menggunakan
perintah docker network rm nama_network

sebelum kalian menghapus network kalian bisa


melihat daftar network yang ada menggunakan docker
network ls , yang kita jelasin sebelumnya

mari kita coba hapus network yang kita buat


sebelumnya. Buka terminal kalian , kemudian ketik
perintah di bawah ini

docker network rm nodejs-mongodb

maka akan seperti gambar di bawah ini

kalau sudah seperti ini , maka network yang kita buat


sebelumnya sudah terhapus.

hapus juga container yang terkait dengan network.


Disini yang kita buat container mongodb dan
container nodejs-apps

48
Menjalankan Perintah Di dalam
Container
jika kalian ingin menjalankan perintah di dalam
container , kalian bisa menggunakan perintah docker
exec .

1. Sebelum menggunakan docker exec kalian


tentukan container apa yang kalian ingin
jalakan

2. Jalakan container nya terlebih dahulu sebelum


menggunakan docker exec

oke mari kita coba , sebelumnya kita buat dulu


container nya . Sebagai contoh disini saya
menggunakan container mongodb , yang kita pernah
buat sebelumnya , kalian bisa membuat nya lagi.
Karena sebelumnya dihapus.

Kalau sudah membuat container nya kalian bisa


menjalankan container nya.

49
Jika sudah semua kalian bisa jalankan docker exec
nama_container -it bash
-it adalah untuk menjalankan perintah dalam mode
interaktif dan terminal

bash adalah kita menjalankan perintah bash , terserah


kalian bisa menggunakan perintah ls dan mongosh
untuk menjalankan mongodb shell

sebagai contoh disini kita menggunakan bash , maka


seperti dibawah ini jika kalian menjalankan bash

jika kalian menjalankan mongosh maka seperti di


bawah ini

50
untuk keluar dari shell kalian bisa menggunakan
perintah exit

untuk beberapa printah docker exec kalian bisa


mengujungi dokumentasi nya disini
https://docs.docker.com/engine/reference/commandline/e
xec/

51
Environment variables
Dalam Docker, kalian dapat mengatur variabel
lingkungan (environment variables) untuk kontainer
menggunakan opsi -e atau --env saat menjalankan
kontainer

kalian bisa menggunakan perintah docker container


create –name nama-container -e VAR=value_var

Mari kita coba! Sebelum mencoba kalian harus


merubah source code yang kalian download
sebelumnya ya , kalian bisa ubah seperti ini

sedikit penjelasan , saya membuat sebuah variable


mongo_host dan mongo_port , nah variable tersebut

52
mengambil env variable . Di nodejs untuk mengambil
env variable menggunakan
process.env.NAMA_VARIABLE.

Disini memngabil env variable MONGO_HOST dan


MONGO_PORT nah mongo_host untuk mengambil
host nya dan mongo_port untuk mengambil port dari
env variable

Oke itu penjelasan singkat tentang kode nya

mari kita build!!

docker build -t node-image .


kalau sudah build kalian bisa membuat container nya

caranya seperti ini

docker container create –name nodejs-container -e


MONGO_HOST=mongo-container -e
MONGO_PORT=27017 -p 3000:3000 node-image:1.0
disini kita membuat container dengan dengan nama
nodejs-container disini -e membuat env variable , kita
membuat env MONGO_HOST dan MONGO_PORT

53
seperti yang dijelaskan sebelumnya , kita gunakan
MONGO_HOST buat host nya mongodb nya dan
MONGO_PORT buat port.

Setelah membuat container nodejs-container , kita


buat mongodb container

docker container create –name mongo-container -p


27017:27017 mongo:laters

kalau sudah kita buat network nya

docker network create node-network


kalau sudah koneksi kan container ke network nya

docker network connect node-network


mongo-container
docker network connect node-network nodejs-container
jika sudah coba jalakan container nya , kalian buka
browser kemudian ketik localhost:3000 , nah kalau
berjalan berarti tidak ada error , kalau ada error
kalian bisa cek lagi step by step nya . Yaa

54
Docker Bind Mount

Saat kita membuat container semua data yang kita


buat atau file yang kita buat , misalnya kita punya
database dan kita ingin backup datanya. kalian bisa
menggunakan bind mount biar lebih mudah backup
datanya , tetapi kita bisa menggunakan volume yang
akan kita bahas setelah Bind Mount . Apa itu Bind
Mount itu ? Bind Mount adalah tempat penyimpanan
(berkas/direktori) pada mesin lokal yang tersedia di
dalam kontainer kalian. Jadi, setiap perubahan yang
kalian lakukan pada ruang penyimpanan
(berkas/direktori) ini dari luar kontainer akan
tercermin di dalam container docker dan sebaliknya.

Untuk contoh bind mount kalian seperti ini


docker run -it --name nama_container -v
“local_folder”:”target” image:tags

Disini saya menggunakan docker run , beda dengan


docker container create docker run , kita bisa
membuat dan menjalankan container, tetapi sama saja
dengan create container

Penjelasanya: kita membuat container seperti biasa


tetapi kita menambahkan sebuah argument –v disitu
ada “local_dir” local_dir sendiri untuk tentukan di

55
mana kita meletakan datanya , misalnya di taruh
/home/nama_user/Document/blalablala . Dan target
nya sendiri yaitu target dir yang ada di container.

Oke mari kita coba di sebelum itu kalian bisa


download image ubuntu di docker hub , kalian bisa
cari di docker hub atau kalian bisa menggunakan
command berikut ini untuk menginstall image ubuntu
nya: docker pull ubuntu

56
kalau sudah di install image nya kalian bisa membuat
container , kalian bisa membuat kontainer
menggunakan command seperti di bawah ini

docker run -it --name ubuntu-contaner -v


~/Desktop/coba_docker:/data ubuntu

maka sukses dan tidak ada masalah maka seperti di


bawah ini

Oke kalau sudah seperti ini , kalian bisa membuat


folder atau file di dalam folder data , kalian bisa
menggunakan perintah cd , atau change dir , untuk
masuk ke folder /data nya , kalau sudah masuk ke
folder data coba kalian membuat folder baru , untuk
membuat folder baru kalian bisa menggunakan
perintah mkdir , contoh seperti di bawah ini untuk
membuat folder

57
Kalau sukses maka seperti ini , Oke mari kita coba
cek folder di local kita

kalau sudah ada folder nya di local kita , berarti kita


sukses membuat folder nya di dalam datanya .

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:

1. Persistensi Data: Docker volume memungkinkan


kalian menyimpan data secara persisten, bahkan
setelah kontainer dihapus atau dimulai ulang.
Ini berguna ketika kalian ingin menjaga data
penting yang harus selalu tersedia, misalnya
basis data atau konfigurasi aplikasi.

2. Berbagi Data Antar Kontainer: Dengan


menggunakan volume, kalian dapat berbagi data
antara beberapa kontainer. Misalnya, jika kalian
memiliki kontainer web dan kontainer basis

59
data terpisah, kalian dapat menggunakan
volume untuk menyimpan data basis data yang
dapat diakses oleh kontainer web.

3. Tipe Volume: Docker menyediakan beberapa


tipe volume yang dapat digunakan, seperti
volume yang di host pada sistem host, volume
yang dibagikan antar kontainer, atau volume
yang diinisialisasi menggunakan data eksternal.
Pemilihan jenis volume yang tepat tergantung
pada kebutuhan aplikasi kalian.

4. Mengelola Volume: Docker menyediakan


perintah dan API untuk membuat, menghapus,
dan mengelola volume. kalian dapat
menggunakan perintah docker volume untuk
mengelola volume dari baris perintah, atau
menggunakan API Docker dalam skrip atau alat
pengelolaan Docker lainnya.

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.

oke mari kita coba membuat container dengan volume


nya sebelum itu kalian membuat volume nya terlebih
dahulu . Dengan menggunakan perintah docker
volume create data-mongo
maka seperti ini kalau sudah membuat volumenya

oke mari kita membuat containernya mongodb nya ,


caranya sama seperti bind mount yang kita bahas

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 .

Maka seperti ini kalau kalian sudah membuat


container nya

untuk mengecek apakah volume nya masuk ke


container kalian bisa menggunakan docker inspect
mongo-container

kalau sudah maka cari yang seperti ini di logs

62
untuk lebih lanjut tentang volume kalian bisa
membaca dokumentasinya disini:
https://docs.docker.com/storage/volumes/

Melihat Daftar Volume


untuk melihat daftar volume yang perna kita buat
kalian bisa menggunakan perintah docker volume
seperti di bawah ini contoh melihat daftar volumenya

Menghapus Volume
untuk menghapus volume kalian bisa menggunakan
docker volume rm , tetapi sebelum menghapus
volume kalian hapus terlebih dahulu container nya

seperti di bawah ini contoh menghapus volume

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.

Contoh menghapus semua container dengan prune

karena saya sudah menghapus semua container saya


jadi total reclaimed space nya 0B , tetapi jika belum
makan ada total space nya .

Kalau di image menggunakan argument -fa seperti ini

kalau di image biasanya agak lama karena file yang


di hapus itu lumayan besar bisa beberapa ratus mb

64
di bawah sendiri biasanya ada total reclaimed, ini
total punya saya , sekitar 1.6gb lumayan besar

oke itu tentang prune, kalau kalian ingin


mengosongkan storage kalian. kalian bisa
menggunakan prune

Oke terimakasih sudah membaca sampai sejauh


ini, terimakasih buat semua , semoga ilmu ini
bermanfaat bagi kalian.

65
Akhiran

Masih ada materi lagi yaitu docker-compose dan


juga push ke registry . Saya bakalan bahas di
ebook selanjutnya kalian kalau kalian tertarik bisa
hubungi saya , nanti kalau banyak yang tertarik
saya bakalan tulis tentang docker-compose dan
push ke registry

Kalau kalian ingin menghubungi penulis bisa via,


kalau kalian ingin bertanya seputar programming
atau devops kalian bisa hubungi saya yaa

IG : @aditiyadwiramadani87

Telegram: @Kanutku

jika kalian ingin bergabung di komunitas kalian


bisa join ya link nya disini menggunakan grup
telegram.

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

You might also like