Masdika Loading..
Masdika.BIZ.ID

DevOps Engineer

Cloud Engineer

System Administrator

  • Home
  • Portofolio
  • Services
  • Resume
  • Skills
  • Blog
  • Contact
Masdika.BIZ.ID

DevOps Engineer

Cloud Engineer

System Administrator

Download CV

Recent Posts

  • Cara Deploy WordPress di Kubernetes Lengkap dengan SSL Let’s Encrypt
  • Panduan Lengkap Install MetalLB di Kubernetes (VPS/Bare Metal) dengan IP Publik
  • Panduan Lengkap Deploy Ingress NGINX dan Cert-Manager Kubernetes dengan HTTPS Otomatis (Let’s Encrypt)
  • Cara Install Kubernetes dengan Ansible di 2 Server (Master dan Worker)
  • Monitoring Docker Container dengan CAdvisor, Node Exporter, Prometheus, dan Grafana

Recent Comments

  1. Masdika.BIZ.ID on Cara Install Kubernetes dengan Ansible di 2 Server (Master dan Worker)
  2. wwqqs on Cara Install Kubernetes dengan Ansible di 2 Server (Master dan Worker)
  3. Rio Ardiansyah on Panduan Lengkap Redis Docker untuk WordPress
  4. Masdika.BIZ.ID on Cara Monitoring Status Disk RAID di Server Dell Menggunakan Bash Script dan PercCLI
  5. fafiki on Cara Monitoring Status Disk RAID di Server Dell Menggunakan Bash Script dan PercCLI

Archives

  • July 2025
  • June 2025

Categories

  • Tutorial

Masddika.BIZ.ID

  • About
  • Terms & Conditions
  • Privacy Policy
Blog Post

Panduan Lengkap Mengenal Docker: Solusi Modern Container untuk Developer

June 16, 2025 Tutorial by Masdika.BIZ.ID
Panduan Lengkap Mengenal Docker: Solusi Modern Container untuk Developer

πŸ“¦ Pengenalan Container: Apa Itu Container dan Bedanya dengan Virtual Machine?

Container adalah unit ringan dan terisolasi yang memungkinkan aplikasi dan semua dependensinya dibungkus dalam satu paket agar dapat berjalan secara konsisten di berbagai sistem. Container tidak memerlukan sistem operasi tersendiri seperti halnya Virtual Machine, sehingga startup-nya jauh lebih cepat dan efisien.

πŸ” Perbedaan Container vs Virtual Machine:

  • Virtual Machine (VM):
    • Menjalankan sistem operasi lengkap (guest OS) di atas hypervisor.
    • Lebih berat dan membutuhkan lebih banyak sumber daya (RAM, CPU, storage).
    • Startup lambat.
  • Container:
    • Berjalan di atas kernel sistem operasi host.
    • Hanya membawa dependensi aplikasi.
    • Lebih ringan, portabel, dan cepat dijalankan.

Dengan container, developer bisa membuat aplikasi yang bebas konflik dependency dan environment, karena semua telah dikemas di dalam container itu sendiri.

🐳 Pengenalan Docker: Platform Container Paling Populer

Docker adalah platform containerization open-source yang membantu developer membangun, mengemas, dan menjalankan aplikasi di dalam container. Docker menyediakan CLI (command-line interface), daemon, image, registry, dan ekosistem yang kaya.

πŸ”§ Kelebihan Docker:

  • Konsistensi antar lingkungan (dev, staging, production).
  • Portabilitas tinggi antar sistem.
  • Proses build dan deployment menjadi otomatis dan cepat.
  • Mudah digunakan dan diintegrasikan ke pipeline CI/CD.

Docker mendukung sistem operasi Windows, macOS, dan Linux, serta bekerja baik di environment lokal maupun cloud.

πŸ› οΈ Menginstall Docker Desktop (Windows/macOS)

Docker Desktop adalah cara paling mudah untuk menggunakan Docker di sistem operasi Windows dan macOS. Berikut langkah-langkahnya:

  1. Akses situs https://www.docker.com/products/docker-desktop.
  2. Unduh installer sesuai OS Anda.
  3. Jalankan installer dan ikuti petunjuknya.
  4. Setelah selesai, buka terminal/command prompt dan jalankan perintah berikut:
docker --version
docker run hello-world

Jika berhasil, maka Docker telah terinstal dan berjalan dengan baik.

🧠 Arsitektur Docker

Docker terdiri dari beberapa komponen utama:

  • Docker Client: Tempat pengguna berinteraksi menggunakan CLI.
  • Docker Daemon (dockerd): Layanan background yang menangani image, container, dan resource Docker.
  • Docker Image: Blueprint atau template untuk menjalankan container.
  • Docker Container: Aplikasi yang sedang berjalan, dibuat berdasarkan image.
  • Docker Registry: Server tempat image disimpan dan didistribusikan (misalnya Docker Hub).

Proses kerjanya:

  1. Pengguna menjalankan perintah docker run dari client.
  2. Docker client mengirim instruksi ke daemon.
  3. Docker daemon menarik image (jika belum ada), lalu menjalankan container berdasarkan image tersebut.

πŸ—‚οΈ Docker Registry: Menyimpan dan Mengelola Docker Image

Docker Registry adalah layanan penyimpanan yang digunakan untuk menyimpan, mendistribusikan, dan mengelola Docker Image. Dengan registry, developer dapat membagikan image antar tim, deploy aplikasi ke berbagai environment, serta menjaga versi image yang digunakan.

πŸ”§ Apa Itu Docker Registry?

Docker Registry bekerja layaknya “GitHub-nya Docker Image.” Saat kita melakukan docker push, image akan dikirim ke registry. Dan saat kita melakukan docker pull, image diambil dari registry ke mesin lokal.

Docker Registry terdiri dari:

  • Registry Server: Menyimpan dan mengatur image
  • Image Repository: Kumpulan image yang memiliki nama dan versi (tag)

πŸ“¦ Layanan Docker Registry yang Populer

Berikut beberapa registry umum yang sering digunakan:

  1. Docker Hub (https://hub.docker.com)
    • Registry resmi dari Docker
    • Gratis untuk image publik
    • Mendukung image privat (dengan batasan untuk akun gratis)
  2. GitHub Container Registry (https://github.com/features/packages)
    • Terintegrasi dengan GitHub Actions
    • Mendukung kontrol akses repository
  3. Google Container Registry (GCR)
    • Bagian dari Google Cloud Platform
    • Mendukung image deployment ke Google Kubernetes Engine
  4. Amazon Elastic Container Registry (ECR)
    • Terintegrasi dengan layanan AWS seperti ECS dan EKS
    • Aman dan scalable untuk perusahaan
  5. Harbor (Self-Hosted Registry)
    • Registry open-source dengan fitur enterprise
    • Bisa dijalankan di server sendiri

πŸ” Akun dan Akses Registry

Untuk menggunakan registry publik seperti Docker Hub, kamu cukup membuat akun gratis. Kamu bisa:

  • Membuat image publik yang bisa digunakan siapa saja
  • Membuat image privat untuk kebutuhan internal

Login ke Docker Hub:

docker login

Logout:

docker logout

πŸ“₯ Menarik Image dari Registry (Pull)

Untuk mendownload image dari registry:

docker pull nginx

Contoh lainnya:

docker pull redis:latest

Ini akan mendownload image nginx atau redis ke lokal agar bisa dijalankan sebagai container.

πŸ“€ Mengunggah Image ke Registry (Push)

  1. Beri tag image agar sesuai dengan format registry:
docker tag myapp username/myapp:latest
  1. Upload ke Docker Hub:
docker push username/myapp:latest

πŸ”„ Update dan Versi Image

Docker Registry mendukung sistem versioning dengan tags. Misalnya:

docker tag myapp username/myapp:v1.0.0

Dengan sistem ini, kita bisa menjaga konsistensi antar environment (dev, staging, prod) dengan versi image yang tetap.

πŸ›‘οΈ Registry Privat dan Keamanan

Jika kamu memiliki kebutuhan untuk menyimpan image secara privat:

  • Gunakan akun Docker Hub berbayar
  • Gunakan GitHub Container Registry dengan kontrol akses
  • Atau deploy registry privat menggunakan Harbor atau registry open-source lainnya

πŸ“Œ Kesimpulan

Docker Registry adalah komponen penting dalam workflow container. Ia memungkinkan:

  • Distribusi image secara mudah
  • Manajemen versi image
  • Integrasi ke pipeline CI/CD
  • Penggunaan image dari berbagai layanan cloud

Baik menggunakan registry publik seperti Docker Hub atau registry privat, pemahaman tentang cara kerja dan pengelolaan registry akan meningkatkan produktivitas dan keamanan aplikasi container-mu.

πŸ“Έ Docker Image: Blueprint Aplikasi

Docker Image adalah fondasi dari container. Ia merupakan blueprint (cetak biru) aplikasi yang berisi semua yang dibutuhkan untuk menjalankan aplikasi, termasuk:

  • Kode sumber aplikasi
  • Library dan dependensi
  • Tools dan konfigurasi

Setiap image bersifat read-only dan tersusun dari layer-layer. Setiap perintah dalam Dockerfile membentuk satu layer. Keunggulan dari pendekatan ini adalah layer yang tidak berubah bisa digunakan ulang, sehingga mempercepat proses build.

πŸ› οΈ Membuat Docker Image dengan Dockerfile

Dockerfile adalah file teks berisi instruksi cara membangun sebuah image. Berikut contoh sederhana untuk aplikasi Node.js:

FROM node:18              # Menggunakan image node versi 18 sebagai base image
WORKDIR /app              # Menentukan direktori kerja dalam container
COPY . .                  # Menyalin semua file dari host ke direktori kerja container
RUN npm install           # Menginstall dependensi
CMD ["node", "index.js"]  # Menjalankan aplikasi

πŸ”¨ Build Image dari Dockerfile

Setelah menyiapkan Dockerfile, kita bisa membangun image dengan perintah:

docker build -t myapp .

Penjelasan:

  • -t myapp: Memberikan tag (nama) untuk image
  • .: Menentukan konteks build (biasanya direktori saat ini)

πŸ“‹ Melihat Daftar Image

Untuk melihat semua image yang tersimpan secara lokal:

docker images

Hasilnya akan menampilkan:

  • REPOSITORY (nama image)
  • TAG (versi)
  • IMAGE ID
  • SIZE
  • CREATED

πŸ—‘οΈ Menghapus Docker Image

Jika ingin membersihkan image yang tidak digunakan:

docker rmi myapp

Atau menghapus berdasarkan IMAGE ID:

docker rmi <image_id>

Untuk menghapus semua image yang tidak digunakan (dangling images):

docker image prune

☁️ Berbagi Docker Image

Docker Image bisa disimpan secara lokal, atau didorong (push) ke Docker Registry agar bisa dibagikan dan digunakan oleh orang lain.

Langkah-langkah:

  1. Login ke Docker Hub:
docker login
  1. Tandai image agar sesuai format registry:
docker tag myapp username/myapp
  1. Push ke registry:
docker push username/myapp

Dengan memahami cara kerja dan manajemen Docker Image, kamu dapat membangun aplikasi yang lebih stabil, mudah didistribusikan, dan siap dijalankan di lingkungan manapun. Ini adalah dasar dari proses containerization modern dalam pengembangan perangkat lunak.

🚒 Docker Container: Menjalankan Aplikasi

Container adalah instance dari Docker Image yang dapat berjalan secara mandiri. Container bersifat efisien, ringan, dan mudah diatur.

Contoh menjalankan container:

docker run -d -p 8080:80 nginx
docker run --name myapp -d myapp

Manajemen container:

docker ps -a
docker stop <container_id>
docker start <container_id>
docker rm <container_id>

Container dapat diatur namanya, portnya, environment-nya, dan sebagainya.

πŸ” Fitur-fitur Docker Container: Penjelasan Lengkap dan Cara Menggunakannya

Docker Container bukan hanya wadah untuk menjalankan aplikasiβ€”ia juga menyediakan berbagai fitur canggih untuk mengelola dan memantau jalannya aplikasi dengan efisien. Berikut penjelasan lengkap mengenai fitur-fitur penting yang sering digunakan:

πŸ“„ 1. Melihat Log Container

Docker menyediakan perintah docker logs untuk melihat output log dari container. Ini sangat berguna untuk debugging atau memantau jalannya aplikasi.

docker logs <container_name>

πŸ”Ž Kegunaan:

  • Melihat error atau informasi penting yang dicetak oleh aplikasi.
  • Menyelesaikan masalah aplikasi tanpa harus masuk ke dalam container.

πŸ“Œ Contoh:

docker logs myapp

πŸ–₯️ 2. Menjalankan Command dalam Container (Exec)

Dengan docker exec, kita bisa menjalankan perintah secara langsung di dalam container yang sedang berjalan.

docker exec -it <container_name> bash

πŸ”Ž Kegunaan:

  • Mengakses shell container untuk troubleshooting.
  • Menjalankan perintah tambahan seperti apt install, cat, ls, dll.

πŸ“Œ Contoh:

docker exec -it myapp bash

🌐 3. Port Mapping

Port mapping digunakan untuk menghubungkan port di container dengan port di host, sehingga aplikasi bisa diakses dari luar.

docker run -p <host_port>:<container_port> image_name

πŸ”Ž Kegunaan:

  • Mengakses aplikasi web, API, dan service lainnya dari browser atau tools lain di luar Docker.

πŸ“Œ Contoh:

docker run -p 8080:80 nginx

Artinya: Port 80 di container akan diakses melalui port 8080 di host.

πŸ§ͺ 4. Environment Variable

Saat menjalankan container, kita bisa menyetel environment variable agar aplikasi dapat membaca konfigurasi dengan dinamis.

docker run -e VAR_NAME=value image_name

πŸ”Ž Kegunaan:

  • Menyediakan konfigurasi untuk aplikasi (seperti database URL, API key, dan sebagainya).

πŸ“Œ Contoh:

docker run -e NODE_ENV=production myapp

πŸ“Š 5. Statistics dan Monitoring

Docker menyediakan docker stats untuk memantau resource usage container seperti CPU, memory, dan network usage secara real-time.

docker stats

πŸ”Ž Kegunaan:

  • Memantau performa container.
  • Mendeteksi bottleneck atau aplikasi yang memakan terlalu banyak resource.

πŸ“Œ Contoh output:

CONTAINER ID   NAME     CPU %     MEM USAGE / LIMIT   NET I/O   BLOCK I/O
123abc         myapp    3.45%     128MiB / 1GiB        1MB/1MB   10MB/5MB

🧱 6. Resource Limit (Batasan CPU & Memory)

Agar container tidak memakan seluruh sumber daya host, kita bisa menetapkan batasan penggunaan CPU dan memori.

docker run --memory="512m" --cpus="1.0" image_name

πŸ”Ž Kegunaan:

  • Mencegah satu container mendominasi resource server.
  • Menjamin performa stabil dalam lingkungan multi-container.

πŸ“Œ Contoh:

docker run --memory="512m" --cpus="1.0" nginx

Artinya container hanya boleh menggunakan maksimal 512MB RAM dan 1 core CPU.

Dengan menguasai fitur-fitur ini, kamu bisa mengelola container dengan lebih baik dan profesional. Cocok untuk pemula maupun level intermediate yang ingin mengoptimalkan penggunaan Docker di projek nyata.

πŸ“‚ Bind Mounts dan Docker Volume

Docker memungkinkan file sharing antara host dan container menggunakan:

1. Bind Mounts

Mapping folder host ke container secara langsung.

docker run -v /path/host:/path/container nginx

2. Docker Volume

Storage yang dikelola Docker untuk persistensi data.

docker volume create mydata
docker run -v mydata:/data nginx

Perintah lain:

docker volume ls
docker volume inspect mydata
docker volume rm mydata

πŸ’Ύ Backup dan Restore Volume Docker

Backup volume ke file:

docker run --rm -v mydata:/data -v $(pwd):/backup ubuntu tar czf /backup/backup.tar.gz /data

Restore volume dari backup:

docker run --rm -v mydata:/data -v $(pwd):/backup ubuntu tar xzf /backup/backup.tar.gz -C /

Teknik ini berguna untuk memindahkan atau menyimpan data container dengan aman.

🌐 Docker Network: Mengatur Komunikasi antar Container

Docker menyediakan beberapa jenis network:

  • Bridge: Default network (container bisa saling komunikasi).
  • Host: Container menggunakan IP host.
  • None: Tidak ada koneksi jaringan.
  • Overlay: Jaringan antar host (biasanya dengan Docker Swarm).

Contoh membuat dan menggunakan network:

docker network create mynet
docker run --network mynet nginx
docker network inspect mynet
docker network ls

Network ini sangat penting jika kamu membuat arsitektur aplikasi multi-container.

🧩 Ekosistem Docker dan Integrasi

Docker terintegrasi dengan berbagai tool:

  • CI/CD: GitLab CI, Jenkins, GitHub Actions
  • Orkestrasi: Kubernetes, Docker Swarm
  • Monitoring: Prometheus, Grafana
  • GUI Tools: Portainer, LazyDocker

Ekosistem ini membuat Docker menjadi pilar utama dalam DevOps modern.

πŸš€ Kesimpulan

Docker adalah teknologi fundamental dalam dunia software modern. Dengan container, kita bisa membuat aplikasi yang ringan, konsisten, portabel, dan mudah dikelola.

Dalam artikel ini, kita telah mempelajari:

  • Apa itu container dan bagaimana bedanya dengan VM
  • Dasar-dasar Docker dan cara instalasinya
  • Manajemen image dan container
  • Fitur-fitur manajemen seperti logs, exec, env, dan monitoring
  • Sharing file dan backup menggunakan volume
  • Manajemen jaringan container

Terus eksplorasi lebih jauh dengan Docker Compose dan Kubernetes untuk kebutuhan yang lebih kompleks.

Share:
Tags: composedockerdockerfile

Post navigation

Prev
Next
2 Comments
  • Apoxicam 9:06 am June 16, 2025 Reply

    Terimakasih

    • Masdika.BIZ.ID 11:33 am June 16, 2025 Reply

      Siap, sama sama mas.

Write a comment Cancel Reply

Β© 2025 www.masdika.biz.id β€” Semua Hak Dilindungi