Menginstall Docker
instal docker desktop
Jika docker tidak bisa berjalan karena virtualization :
cek enabled cpu virtualization di properties my computer kalau enabled aman tapi kalau not enabled bisa di atur di bios
kalau enabled ->
buka shell dengan admistrator ketik
wsl --installbcdedit /set hypervisorlaunchtype auto
Mengecek Docker
docker version
Docker Registry
Docker registry adalah tempat kita menyimpan Docker Image, Dengan menggunakan Docker Registry, kita bisa menyimpan image yang kita buat, dan bisa digunakan di Docker Daemon dimanapun selama bisa terkoneksi ke Docker registry.
Contoh Docker Registry
Docker Hub : http://hub.docker.com
Digital Ocean Container Registry
Goodogle Cloud Container Registry
Amazon Elastic Container Registry
Azure Container Registry
Docker Image
mirip seperti installer aplikasi, didalam terdapat aplikasi dan dependency
Sebelum kita bisa menjalankan aplikasi di DOcker, kita perlu memastikan memiliki Docker Image aplikasi tersebut.
Melihat Docker Image di dalam Docker Daemon
docker image ls
Download Docker Image
docker image pull namaimage:tag => https://hub.docker.com
Menghapus Docker Image dari Daemon
docker image rm namaimage:tag
Docker Container
Jika Docker Image seperti Installer aplikasi, maka Docker Container mirip seperti aplikasi hasil installernya.
Satu Docker mage bisa digunakan untuk membuat beberapa Docker Container, asalkan nama Docker Containernya berbeda.
Jika kita sudah membuat Docker Container, maka docker image yang digunakan tidak bisa dihapus, hal ini dikarenakan sebenarnya docker Container tidak meng copy isi dockerimage, tapi hanya menggunakan isinya saja.
Status Container
saat kita membuat Container, secara default Container tersebut tidak akan berjalan, mirip seperti ketika kita menginstall aplikasi, jika tidak kita jalankan, maka aplikasi tersebut tidak akan berjalan, begitu juga container.
Oleh karena itu, setelah membuat container, kita perlu menjalankan nya jika memang ingin menjalankan containernya.
Melihat Container yang Sedang berjalan dan Tidak
docker container ls -a
Melihat Container yang sedang berjalan saja
docker container ls
Membuat Container
docker container create --name namacontainer namaimage:tag
Menjalankan Container
docker container start containerId/namacontainer
Menghentikan Container
docker container stop containerId/namacontainer
Menghapus Container
docker container rm containerId/namacontainer
Container Log
docker container logs containerId/Namacontainer
atau secara realtime
docker container logs -f containerId/Namacontainer
Container Exec
saat kita membuat container, aplikasi yang terdapat di dalam container hanya bisa diakses dari dalam container, oleh karena itu, kadang kita perlu masuk ke dalam container nya itu sendiri. Untuk masuk ke dalam container, kita bisa menggunakan fitur Container Exec, dimana digunakan untuk mengeksekusi kode program yang terdapat di dalam container.
docker container Exec -i -t containerId/namacontainer /bin/bash
-i adalah argumen interaktif, menjaga input tetap aktif
-t adalah argumen untuk alokasi pseudo-TTY (terminal akses)
/bin/basah contoh kode program yang terdapat di dalam container
Container Port
Saat menjalankan container, container tersebut terisolasi di dalam Docker, artinya sistem Host (misal laptop kita), tidak bisa mengakses aplikasi yang ada di dalam container secara langsung, salah satu caranya adalah harus menggunakan Container Exec untuk masuk ke dalam container nya.
Biasanya, sebuah aplikasi berjalan pada port tertentu, misal saat kita menjalankan aplikasi Redis, dia berjalan pada port 6379, kita bisa melihat port apa yang digunakan ketika melihat semua daftar container.
Port Forwarding
Docker memiliki kemampuan untuk melakukan port forwarding, yaitu meneruskan sebuah port yang terdapat di sistem Host nya ke dalam Docker Container.
Cara ini cocok jika kita ingin mengekspos port yang terdapat di container ke luar melalui sistem Hostnya.
untuk melakukan port forwarding, kita bisa menggunakan perintah berikut ketika membuat containernya :
docker container create --name namacontainer --publish posthost:portcontainer image:tag
jika kita ingin melakukan port forwarding lebih dari satu, kita bisa tambahkan dua kali parameter --publish, --publish juga bisa disingkat menggunakan -p
Container Environment Variable
docker container create --name namacontainer --env KEY="value" --env KEY="value" image:tag
Container Stats
docker container stats
Container Resourse Limit
docker container create --name smallnginx --publish 8081:80 --memory 100m --cpus 0.5 nginx:latest
Bind Mount
docker container create --name namacontainer --mount "type=bind,source=folder,destination=folder,readonly" image:tag
Docker Volume
untuk melihat volume docker volume ls
untuk membuat volume docker volume create namavolume
untuk menghapus volume docker volume rm namavolume
Container Volume
urutan pembuatan adalah buat volume terlebih dahulu baru container
docker volume create mongodata
lalu
docker container create --name mongovolume --mount "type=volume, source=mongodata,destination=/data/db" --publish 27019:27017 --env MONGO_INITDB_ROOT_USERNAME=eko --env MONGO_INITDB_ROOT_PASSWORD=eko mongo:latest