ARZI Logo
Docker 101: Apa Itu Docker dan Basic Command yang Wajib Diketahui
Kembali
6 min read

Docker 101: Apa Itu Docker dan Basic Command yang Wajib Diketahui

docker
containerization
devops
tutorial
development

Docker sudah jadi standar industri untuk deploy aplikasi. Kalau kamu developer dan belum familiar dengan Docker, ini guide untuk kamu.


Apa Itu Docker?

Docker adalah platform containerization yang memungkinkan kamu menjalankan aplikasi dalam environment yang terisolasi disebut "container".

Bayangkan container seperti kardus pengiriman. Kamu masukkan semua yang dibutuhkan aplikasi — kode, dependencies, config — ke dalam satu kardus. Kardus itu bisa dikirim dan dijalankan di machine manapun tanpa masalah khawatir "di komputer saya jalan, di server tidak".

Sebelum Docker, masalah sering muncul: "Works on my machine." Aplikasi jalan di laptop developer tapi tidak jalan di server karena perbedaan OS, library, atau versi Node.

Docker menyelesaikan masalah ini dengan prinsip "build once, run anywhere."


Container vs Virtual Machine

Orang sering bingung Docker container dengan Virtual Machine (VM). Ini bedanya:

Virtual Machine — membawa entire OS di dalam dirinya. Berat, lambat start-up, mengonsumsi banyak RAM.

Container — berbagi OS host, hanya isolation di level aplikasi. Ringan, cepat start-up, hemat resource.

Docker container bisa beroperasi dalam hitungan detik, sementara VM butuh menit untuk boot.


Image dan Container

Dua konsep utama di Docker:

Image — template hanya-baca yang berisi semua yang kamu butuhkan untuk menjalankan aplikasi. Like a recipe.

Container — instance yang dijalankan dari image. Like a dish yang kamu masak dari recipe.

Satu image bisa menjalankan banyak container sekaligus.


Basic Docker Commands

Berikut commands Docker yang paling sering digunakan:

1. Cek Version

file.bash
1docker --version

Mengecek apakah Docker sudah terinstall dan melihat versi.


2. Download Image

file.bash
1docker pull nginx:latest

Mendownload image "nginx" dengan tag "latest" dari Docker Hub. Tag "latest" adalah default, jadi bisa juga simplemente docker pull nginx.


3. Lihat Semua Image

file.bash
1docker images

atau

file.bash
1docker image ls

Menampilkan daftar semua image yang sudah terdownload di local mesin.


4. Jalankan Container

file.bash
1docker run nginx

Menjalankan container dari image "nginx". Docker akan otomatis pull image jika belum ada.

Dengan port forwarding:

file.bash
1docker run -p 8080:80 nginx

Artinya: port 8080 di host maps ke port 80 di container. Buka browser ke http://localhost:8080 untuk melihat nginx.

Dengan nama kustom:

file.bash
1docker run -p 8080:80 --name web-server nginx

Dengan detached mode (background process):

file.bash
1docker run -d -p 8080:80 --name web-server nginx

5. Lihat Running Containers

file.bash
1docker ps

Menampilkan container yang sedang berjalan.

Untuk melihat semua container (termasuk yang berhenti):

file.bash
1docker ps -a

6. Stop dan Start Container

file.bash
1docker stop web-server 2docker start web-server

stop — menghentikan container dengan grace (SIGTERM). start — menjalankan kembali container yang sudah berhenti.


7. Hapus Container

file.bash
1docker rm web-server

Menghapus container. Container harus dalam status stopped terlebih dahulu.

Untuk force delete (jika container sedang berjalan):

file.bash
1docker rm -f web-server

8. Lihat Logs

file.bash
1docker logs web-server

Melihat stdout/stderr dari container. Berguna untuk debugging.

Untuk mengikuti log secara real-time:

file.bash
1docker logs -f web-server

9. Execute Command di Dalam Container

file.bash
1docker exec -it web-server bash

Membuka interactive bash shell di dalam container. Kamu bisa eksplorasi filesystem dan config container.

Contoh lain:

file.bash
1docker exec -it web-server ls /usr/share/nginx/html

10. Build Docker Image

file.bash
1docker build -t my-app .

Membuat image dari Dockerfile. Flag -t untuk memberikan nama dan tag.

Contoh dengan tag specific:

file.bash
1docker build -t my-app:1.0 .

11. Hapus Image

file.bash
1docker rmi nginx

Menghapus image dari local mesin.

Hapus semua unused images:

file.bash
1docker image prune

12. Docker Compose

Untuk aplikasi yang butuh beberapa container (misalnya: app + database + redis), gunakan Docker Compose.

Contoh docker-compose.yml:

file.yaml
1version: '3.8' 2services: 3 app: 4 build: . 5 ports: 6 - "3000:3000" 7 depends_on: 8 - db 9 db: 10 image: postgres:15 11 environment: 12 POSTGRES_PASSWORD: secret

Jalankan dengan:

file.bash
1docker-compose up

Untuk background:

file.bash
1docker-compose up -d

Stop:

file.bash
1docker-compose down

Contoh Dockerfile Sederhana

Dockerfile adalah template untuk build Docker image:

file.dockerfile
1# Gunakan base image Node.js 2FROM node:18-alpine 3 4# Set working directory 5WORKDIR /app 6 7# Copy package files 8COPY package*.json ./ 9 10# Install dependencies 11RUN npm install 12 13# Copy source code 14COPY . . 15 16# Expose port 17EXPOSE 3000 18 19# Start command 20CMD ["node", "index.js"]

Penjelasan baris per baris:

  • FROM — base image yang digunakan
  • WORKDIR — direktori di dalam container
  • COPY — menyalin file dari host ke container
  • RUN — menjalankan command saat build
  • EXPOSE — deklarasi port yang digunakan
  • CMD — command yang dijalankan saat container beroperasi

Kenapa Docker Penting untuk Developer?

1. Konsistensi

Environment development, staging, dan production bisa identical. Tidak ada lagi "works on my machine".

2. Isolation

Setiap aplikasi berjalan di environment terisolasi. Tidak ada konflik antara library atau dependencies.

3. Portabilitas

Container bisa jalan di laptop, server, cloud — anywhere yang ada Docker.

4. Efisiensi Resource

Container lebih ringan dari VM. Satu server bisa menjalankan puluhan container sekaligus.

5. CI/CD Friendly

Dockerfile bisa di-commit ke Git, di-build otomatis, dan di-deploy sebagai container.


Contoh Use Case

Development Environment Kamu mau coba aplikasi Rails tapi tidak mau menginstall Ruby, Rails, PostgreSQL secara langsung. Cukup:

file.bash
1docker run -p 3000:3000 my-rails-app

Microservices Membangun system yang terdiri dari Node.js API, Python ML service, dan Go worker. Each berjalan di container terpisah, berkomunikasi via internal network.

CI/CD Pipeline Setiap pull request di-build menjadi Docker image, ditest dalam container, lalu di-deploy ke production sebagai container.


Summary

Docker adalah tool yang memungkinkan kamu mengemas aplikasi dengan semua dependencies-nya ke dalam container yang bisa dijalankan di anywhere.

Key commands:

  • docker run — menjalankan container
  • docker ps — melihat running containers
  • docker images — melihat downloaded images
  • docker build — membangun image dari Dockerfile
  • docker-compose up — menjalankan multi-container app
Menerima proyek baru

Anda butuh solusi,
Bukan sekadar aplikasi vibe-coded.

Membangun web apps dan otomatisasi yang dibuat untuk bertahan. Mari bicara tentang apa yang Anda bangun — tanpa komitmen, tanpa deck presentasi. Hanya percakapan nyata.