---
title: "Cara Install Docker dan Docker Compose di Ubuntu"
description: "Pasang Docker Engine dan plugin Compose dari repositori resmi di Ubuntu, atur setelah instalasi, jalankan stack pertama, dan atasi error umum."
url: "https://nivelva.com/insight/install-docker-compose-ubuntu"
category: "Server \u0026 Infrastruktur"
tags: ["docker","docker compose","ubuntu","instalasi","container"]
author: "Theresia Candiawan"
published: "2026-11-07T01:24:00+07:00"
updated: "2026-11-07T01:24:00+07:00"
language: "id"
publisher: "Nivelva (https://nivelva.com)"
---

# Cara Install Docker dan Docker Compose di Ubuntu

> **Jawaban singkat:** Hapus paket Docker tidak resmi, tambahkan repositori apt resmi Docker beserta kuncinya, lalu pasang docker-ce, docker-ce-cli, containerd.io, docker-buildx-plugin, dan docker-compose-plugin. Uji dengan hello-world, atur akses user, batasi log, lalu jalankan stack pertama dengan docker compose up -d.

Kalau kamu memasang Docker dengan `apt install docker.io`, perintah `docker compose` bisa tidak tersedia atau versinya tertinggal dari tutorial yang kamu ikuti. Penyebabnya, ada dua sumber paket Docker di Ubuntu: paket dari repositori Ubuntu sendiri dan paket dari repositori resmi Docker. Dokumentasi Docker menyarankan repositori resminya, yang sekaligus membawa plugin Compose versi baru. Langkah di bawah mengikuti dokumentasi resmi tersebut per 4 November 2026. Versi Ubuntu yang didukung menurut halaman itu: 22.04 LTS, 24.04 LTS, 26.04 LTS, dan 26.10, untuk arsitektur 64-bit. Turunan seperti Linux Mint tidak didukung resmi.

Belum terlalu paham konsep image dan container? Baca dulu [apa itu Docker](https://nivelva.com/insight/apa-itu-docker).

## Langkah instalasi

1. **Hapus paket yang bisa bentrok.** Paket tidak resmi seperti `docker.io`, `docker-compose`, `podman-docker`, serta `containerd` dan `runc` versi distribusi perlu disingkirkan lebih dulu. Wajar bila apt bilang paket-paket itu memang tidak terpasang.
2. **Tambahkan kunci GPG resmi Docker.** Kunci ini dipakai apt untuk memastikan paket benar-benar dari Docker.
3. **Tambahkan repositori Docker** dalam format deb822, lalu perbarui daftar paket.
4. **Pasang Docker Engine dan plugin-pluginnya**, termasuk Compose.
5. **Uji instalasi** dengan image hello-world.

Berikut perintah untuk setiap langkah.

### 1. Hapus paket yang bentrok

```
sudo apt remove $(dpkg --get-selections docker.io docker-compose docker-compose-v2 docker-doc docker-buildx podman-docker containerd runc | cut -f1)
```

Image, container, dan volume lama di `/var/lib/docker/` tidak ikut terhapus oleh perintah ini.

### 2. Tambahkan kunci GPG

```
sudo apt update
sudo apt install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
```

### 3. Tambahkan repositori

```
sudo tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF

sudo apt update
```

Bagian `Suites` otomatis terisi kode nama versi Ubuntu-mu, jadi perintah yang sama bisa dipakai di semua versi yang didukung.

### 4. Pasang paket

```
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
```

Paket terakhir, `docker-compose-plugin`, yang menyediakan perintah `docker compose` (dengan spasi). Perintah lama `docker-compose` (dengan tanda hubung) adalah program terpisah dan tidak dipasang di sini.

### 5. Uji

```
sudo systemctl status docker
sudo docker run hello-world
docker compose version
```

Bila hello-world mencetak pesan sambutan, Docker Engine sudah berjalan. Di Ubuntu dan Debian, layanan Docker otomatis aktif saat boot.

## Pengaturan setelah instalasi

### Menjalankan docker tanpa sudo

Tambahkan user ke grup `docker`:

```
sudo groupadd docker
sudo usermod -aG docker $USER
newgrp docker
```

Logout lalu login lagi agar keanggotaan grup berlaku di semua sesi.

> **Grup docker setara root:**
>
> Dokumentasi Docker menegaskan grup docker memberi hak setingkat root. Siapa pun di grup ini bisa mengendalikan seluruh server lewat container. Masukkan hanya akun yang memang mengelola server, atau pertimbangkan mode rootless.

### Membatasi ukuran log

Driver log bawaan, `json-file`, menyimpan log container di host dan terus membesar. Buat atau edit `/etc/docker/daemon.json`:

```
{
  "log-driver": "local"
}
```

Driver `local` merotasi log secara default. Muat ulang dengan `sudo systemctl restart docker`. Pengaturan ini hanya berlaku untuk container yang dibuat setelahnya.

### Perhatikan firewall

Dokumentasi Docker juga mencatat bahwa port container yang dipublikasikan melewati aturan ufw dan firewalld. Jadi jangan mengandalkan UFW untuk menutup port container. Publikasikan port ke `127.0.0.1` untuk layanan internal. Ini salah satu poin di [kesalahan umum Docker di produksi](https://nivelva.com/insight/kesalahan-docker-di-produksi).

## Menjalankan stack compose pertama

Buat folder proyek dan file `compose.yaml`:

```
mkdir ~/web-contoh && cd ~/web-contoh
```

Isi `compose.yaml`:

```
services:
  web:
    image: nginx:1.30
    restart: unless-stopped
    ports:
      - "127.0.0.1:8080:80"
    volumes:
      - ./html:/usr/share/nginx/html:ro
```

Tag `nginx:1.30` hanya contoh versi yang dikunci. Ganti dengan versi yang sesuai kebutuhanmu, asal bukan `latest`. Buat halaman sederhana lalu jalankan:

```
mkdir html && echo "Halo dari Docker" > html/index.html
docker compose up -d
docker compose ps
curl http://127.0.0.1:8080
```

Perintah sehari-hari yang perlu kamu ingat:

- `docker compose logs -f`: melihat log.
- `docker compose down`: menghentikan dan menghapus container (volume tetap ada).
- `docker compose pull && docker compose up -d`: memperbarui image lalu menjalankan ulang.

Port sengaja diikat ke `127.0.0.1`. Untuk membukanya ke publik dengan HTTPS, letakkan reverse proxy di depannya, seperti di [cara pasang Caddy sebagai reverse proxy](https://nivelva.com/insight/pasang-caddy-reverse-proxy).

## Error yang sering muncul

| Pesan error | Penyebab | Solusi |
|:--|:--|:--|
| permission denied while trying to connect to the Docker daemon socket | User belum di grup docker atau belum login ulang | Jalankan langkah grup docker, lalu logout dan login |
| docker: 'compose' is not a docker command | Plugin Compose belum terpasang | `sudo apt install docker-compose-plugin` |
| Conflicting values set for option Signed-By | Ada file repositori Docker lama dengan kunci berbeda | Hapus file lama di `/etc/apt/sources.list.d/` |
| port is already allocated | Port host sudah dipakai proses lain | Ganti port host atau hentikan proses itu |
| permission denied pada ~/.docker/config.json | Folder dibuat saat menjalankan docker dengan sudo | `sudo chown "$USER":"$USER" ~/.docker -R` |

## Pertanyaan yang sering diajukan

### Apakah boleh tetap memakai paket docker.io dari Ubuntu?

Boleh, paket itu berfungsi. Hanya saja versinya mengikuti siklus Ubuntu, dan dokumentasi resmi Docker meminta paket itu dihapus sebelum memasang dari repositori Docker agar tidak bentrok.

### Apa bedanya docker-compose dan docker compose?

docker-compose adalah program lama yang berdiri sendiri. docker compose adalah plugin untuk perintah docker yang dipasang lewat docker-compose-plugin. Format file compose-nya sama, dan dokumentasi terbaru memakai versi plugin.

### Bagaimana cara memperbarui Docker nanti?

Karena berasal dari repositori apt, cukup sudo apt update lalu sudo apt upgrade. Container bisa berhenti sesaat ketika Docker Engine dimulai ulang saat pembaruan, dan hanya hidup lagi otomatis bila punya restart policy. Lakukan di jam sepi.

### Bagaimana cara menghapus Docker sepenuhnya?

Hapus paketnya dengan apt purge untuk docker-ce dan paket terkait, lalu hapus folder /var/lib/docker dan /var/lib/containerd bila datanya memang tidak diperlukan lagi. Langkah kedua menghapus semua image, container, dan volume.

## Checklist

- Paket Docker tidak resmi sudah dihapus
- Repositori resmi Docker dan kuncinya terpasang
- `docker run hello-world` dan `docker compose version` berhasil
- User pengelola masuk grup docker, tidak lebih
- Driver log dibatasi di `daemon.json`
- Port layanan internal diikat ke `127.0.0.1`

## Sumber

- <https://docs.docker.com/engine/install/ubuntu/>
- <https://docs.docker.com/engine/install/linux-postinstall/>

---

Diterbitkan oleh Nivelva Insight (https://nivelva.com/insight/). Artikel ini: https://nivelva.com/insight/install-docker-compose-ubuntu
Kontak Nivelva: WhatsApp https://wa.me/6285111245007, email hello@nivelva.com
