# 1. Pengenalan Docker

[![image.png](https://www.32inside.com/uploads/images/gallery/2026-04/scaled-1680-/v5gimage.png)](https://www.32inside.com/uploads/images/gallery/2026-04/v5gimage.png)

#### **1. Apa Itu Docker?**

Docker adalah **alat untuk membuat dan menjalankan "container"**, yaitu kotak kecil yang berisi aplikasi lengkap dan bisa berjalan di komputer mana pun.

Bayangkan kamu membuat mie instan:

- **Kompor = Komputer**
- **Panci &amp; air = Sistem operasi**
- **Bumbu + Mie = Aplikasi**
- Nah, Docker seperti **rice cooker**: siap pakai, tidak peduli dapurnya di mana.

##### **Istilah Penting**

- **Image** = resep aplikasi (contoh: `nginx`, `mysql`, `node`)
- **Container** = aplikasi yang sudah jadi dari image
- **Dockerfile** = file resep untuk membuat image
- **Docker Hub** = tempat download image (mirip Play Store untuk Docker)

---

#### **2. Kenapa Harus Pakai Docker?**

- 💼 **Portabel**: Bisa dijalankan di laptop, server, atau cloud.
- ⚡ **Cepat**: Lebih ringan dari virtual machine (VM).
- 💻 **Konsisten**: Tidak ada lagi masalah “kok di laptop saya jalan?”

---

#### **3. Perbedaan Docker dan Virtual Machine**

Sebelum ada Docker, biasanya aplikasi diinstal langsung di sistem operasi (OS). Cara ini punya banyak kekurangan, seperti:

- Susah setup: perlu install banyak library manual
- Tidak konsisten: beda OS → bisa beda hasil
- Aplikasi bisa konflik: misalnya dua versi PHP bentrok

Dengan Docker, semua **konfigurasi, library, dan environment** dikemas ke dalam 1 box/container yang bisa langsung dijalankan di mana saja.

##### **Perbandingan :**

[![image.png](https://www.32inside.com/uploads/images/gallery/2026-04/scaled-1680-/hS5image.png)](https://www.32inside.com/uploads/images/gallery/2026-04/hS5image.png)

<div class="_tableContainer_80l1q_1" id="bkmrk-fitur-instal-langsun"><div class="_tableWrapper_80l1q_14 group flex w-fit flex-col-reverse" tabindex="-1"><table class="w-fit min-w-(--thread-content-width)" data-end="2241" data-start="881" style="width: 100%; height: 318.563px;"><thead data-end="1017" data-start="881"><tr data-end="1017" data-start="881" style="height: 29.7969px;"><th data-col-size="sm" data-end="914" data-start="881" style="width: 24.7563%; height: 29.7969px;">Fitur</th><th data-col-size="sm" data-end="947" data-start="914" style="width: 22.0108%; height: 29.7969px;">Instal Langsung di OS</th><th data-col-size="sm" data-end="982" data-start="947" style="width: 24.5126%; height: 29.7969px;">Virtual Machine (VM)</th><th data-col-size="sm" data-end="1017" data-start="982" style="width: 28.6012%; height: 29.7969px;">Docker Container</th></tr></thead><tbody data-end="2241" data-start="1154"><tr data-end="1289" data-start="1154" style="height: 46.5938px;"><td data-col-size="sm" data-end="1186" data-start="1154" style="width: 24.7563%; height: 46.5938px;">Kebutuhan OS</td><td data-col-size="sm" data-end="1219" data-start="1186" style="width: 22.0108%; height: 46.5938px;">Langsung pakai OS utama</td><td data-col-size="sm" data-end="1254" data-start="1219" style="width: 24.5126%; height: 46.5938px;">Perlu OS lengkap di atas host</td><td data-col-size="sm" data-end="1289" data-start="1254" style="width: 28.6012%; height: 46.5938px;">Share OS kernel dengan host</td></tr><tr data-end="1425" data-start="1290" style="height: 29.7969px;"><td data-col-size="sm" data-end="1322" data-start="1290" style="width: 24.7563%; height: 29.7969px;">Isolasi Aplikasi</td><td data-col-size="sm" data-end="1355" data-start="1322" style="width: 22.0108%; height: 29.7969px;">Minim</td><td data-col-size="sm" data-end="1390" data-start="1355" style="width: 24.5126%; height: 29.7969px;">Sangat terisolasi</td><td data-col-size="sm" data-end="1425" data-start="1390" style="width: 28.6012%; height: 29.7969px;">Cukup terisolasi</td></tr><tr data-end="1561" data-start="1426" style="height: 29.7969px;"><td data-col-size="sm" data-end="1458" data-start="1426" style="width: 24.7563%; height: 29.7969px;">Setup</td><td data-col-size="sm" data-end="1491" data-start="1458" style="width: 22.0108%; height: 29.7969px;">Ribet (manual install)</td><td data-col-size="sm" data-end="1526" data-start="1491" style="width: 24.5126%; height: 29.7969px;">Lewat template atau ISO</td><td data-col-size="sm" data-end="1561" data-start="1526" style="width: 28.6012%; height: 29.7969px;">Lewat Dockerfile + image</td></tr><tr data-end="1697" data-start="1562" style="height: 29.7969px;"><td data-col-size="sm" data-end="1594" data-start="1562" style="width: 24.7563%; height: 29.7969px;">Konflik antar aplikasi</td><td data-col-size="sm" data-end="1627" data-start="1594" style="width: 22.0108%; height: 29.7969px;">Bisa terjadi</td><td data-col-size="sm" data-end="1662" data-start="1627" style="width: 24.5126%; height: 29.7969px;">Tidak (karena OS terpisah)</td><td data-col-size="sm" data-end="1697" data-start="1662" style="width: 28.6012%; height: 29.7969px;">Tidak (pakai container)</td></tr><tr data-end="1833" data-start="1698" style="height: 46.5938px;"><td data-col-size="sm" data-end="1730" data-start="1698" style="width: 24.7563%; height: 46.5938px;">Ukuran</td><td data-col-size="sm" data-end="1763" data-start="1730" style="width: 22.0108%; height: 46.5938px;">Ringan</td><td data-col-size="sm" data-end="1798" data-start="1763" style="width: 24.5126%; height: 46.5938px;">Berat (GB-an)</td><td data-col-size="sm" data-end="1833" data-start="1798" style="width: 28.6012%; height: 46.5938px;">Ringan (puluhan MB – ratusan MB)</td></tr><tr data-end="1969" data-start="1834" style="height: 29.7969px;"><td data-col-size="sm" data-end="1866" data-start="1834" style="width: 24.7563%; height: 29.7969px;">Kecepatan boot/start</td><td data-col-size="sm" data-end="1899" data-start="1866" style="width: 22.0108%; height: 29.7969px;">Instan</td><td data-col-size="sm" data-end="1934" data-start="1899" style="width: 24.5126%; height: 29.7969px;">Lambat (menit)</td><td data-col-size="sm" data-end="1969" data-start="1934" style="width: 28.6012%; height: 29.7969px;">Cepat (detik)</td></tr><tr data-end="2105" data-start="1970" style="height: 29.7969px;"><td data-col-size="sm" data-end="2002" data-start="1970" style="width: 24.7563%; height: 29.7969px;">Portabilitas</td><td data-col-size="sm" data-end="2035" data-start="2002" style="width: 22.0108%; height: 29.7969px;">Sulit pindah</td><td data-col-size="sm" data-end="2070" data-start="2035" style="width: 24.5126%; height: 29.7969px;">Bisa, tapi besar &amp; lambat</td><td data-col-size="sm" data-end="2105" data-start="2070" style="width: 28.6012%; height: 29.7969px;">Sangat portabel &amp; cepat</td></tr><tr data-end="2241" data-start="2106" style="height: 46.5938px;"><td data-col-size="sm" data-end="2138" data-start="2106" style="width: 24.7563%; height: 46.5938px;">Cocok untuk DevOps &amp; CI/CD</td><td data-col-size="sm" data-end="2171" data-start="2138" style="width: 22.0108%; height: 46.5938px;">Tidak cocok</td><td data-col-size="sm" data-end="2206" data-start="2171" style="width: 24.5126%; height: 46.5938px;">Kurang fleksibel</td><td data-col-size="sm" data-end="2241" data-start="2206" style="width: 28.6012%; height: 46.5938px;">Sangat cocok</td></tr></tbody></table>

</div></div>Bayangkan kamu ingin install aplikasi Laravel + MySQL:

- **Cara tradisional:** install PHP, Composer, MySQL, atur environment manual.  
    Bisa error kalau beda OS atau library tidak cocok.
- **Pakai Docker:** tinggal pakai `docker-compose.yml` dan semua langsung jalan — tidak perlu install PHP atau MySQL di laptop! `docker-compose up -d`

Semua jalan di container masing-masing.

---


#### **4. Cara Kerja Docker**

1. **Kita ambil image** dari Docker Hub (misalnya `nginx`)
2. **Docker menjalankan image jadi container**
3. Kita bisa **akses aplikasi** dari browser atau terminal

```
[ Docker Image ] --> [ Docker Container ] --> [ Aplikasi Jalan ]

```

---

#### **5. Instalasi Docker (Ubuntu/Linux)**

```bash
sudo apt update
sudo apt install docker.io -y
sudo systemctl enable docker
sudo systemctl start docker

```

---

#### **6. Perintah Dasar Docker**

<table id="bkmrk-perintah-fungsi-dock"><thead><tr><th>Perintah</th><th>Fungsi</th></tr></thead><tbody><tr><td>`docker --version`</td><td>Cek versi Docker</td></tr><tr><td>`docker run hello-world`</td><td>Jalankan contoh pertama</td></tr><tr><td>`docker ps`</td><td>Lihat container yang aktif</td></tr><tr><td>`docker images`</td><td>Lihat daftar image</td></tr><tr><td>`docker pull nginx`</td><td>Download image dari Docker Hub</td></tr><tr><td>`docker run -d -p 8080:80 nginx`</td><td>Jalankan nginx di port 8080</td></tr><tr><td>`docker stop <id>`</td><td>Hentikan container</td></tr><tr><td>`docker rm <id>`</td><td>Hapus container</td></tr><tr><td>`docker rmi <id>`</td><td>Hapus image</td></tr></tbody></table>

---

#### **7. Contoh Praktik: Web + Database dengan Docker Compose**

Buat file `docker-compose.yml`:

```yaml
version: '3'
services:
  web:
    image: nginx
    ports:
      - "8080:80"
  db:
    image: postgres
    environment:
      POSTGRES_PASSWORD: rahasia

```

Jalankan:

```bash
docker-compose up -d

```

Akses `localhost:8080` di browser.

---

#### **8. Kesimpulan**

Docker adalah alat keren yang membantu kita menjalankan aplikasi dengan cara cepat, ringan, dan konsisten. Cocok untuk yang ingin masuk ke dunia DevOps, sistem administrator, dan cloud.

**Docker tidak hanya soal performa, tapi soal cara kerja modern yang membuat aplikasi lebih fleksibel, konsisten, dan mudah dipindah.**  
Dengan Docker, kamu tidak lagi "install aplikasi" — kamu **menjalankan aplikasi siap pakai**, lengkap dengan semua konfigurasinya.

---

#### **Sumber Belajar Lanjut**

- https://docker.com
- https://play-with-docker.com