Semua Panduan VPS GratisTutorial LinuxDocker & DeployWebsite & WordPressBot & OtomasiKeamanan ServerFree Tier CloudBelajar DevOps
VPSGratis.ID›Cara Install Docker di VPS Ubuntu dan Jalankan C
Docker & Deploy

Cara Install Docker di VPS Ubuntu dan Jalankan Container Pertama

✍️ Bagus Santoso 📅 27 Oktober 2026 ⏱️ 8 mnt baca 👁️ 0×

Bayangkan Docker sebagai kotak bekal. Nasi, lauk, dan sambal sudah tertata di dalamnya, sehingga ke mana pun dibawa isinya tetap sama. Aplikasi Anda pun begitu: kode, runtime, dan pustaka dibungkus dalam satu paket bernama image, lalu dijalankan sebagai container di server mana saja. Tidak ada lagi alasan "di laptop saya jalan, kok di server error".

Bagi pemula, Docker sering terdengar menakutkan. Padahal inti pemakaiannya hanya beberapa perintah. Artikel ini membawa Anda dari VPS Ubuntu yang masih kosong sampai container pertama yang bisa diakses dari browser, sambil menjelaskan alasan di balik setiap langkah agar Anda tidak sekadar menyalin perintah.

Mengapa Docker Cocok Dipelajari di VPS, Bukan Hanya di Laptop

Banyak tutorial menyuruh Anda memasang Docker Desktop di laptop. Itu tidak salah, tetapi ada tiga alasan kuat untuk belajar langsung di VPS.

  • Lingkungan mirip produksi. Anda berlatih di Linux sungguhan, tempat aplikasi nyata akan berjalan.
  • Bisa diakses dari internet. Container Anda punya alamat IP publik, jadi bisa dites dari ponsel atau dibagikan ke teman.
  • Aman untuk bereksperimen. Salah konfigurasi? Hapus, ulang, dan laptop Anda tetap bersih.

Jika belum punya server, Anda bisa memulai dengan free vps trial agar bebas mencoba tanpa khawatir merusak apa pun. Detail penawaran terkini selalu tersedia di www.vpsgratis.id.

Poin Penting: Docker bukan mesin virtual. Container berbagi kernel dengan sistem induk, sehingga jauh lebih ringan dan cepat dinyalakan. Itulah sebabnya Docker nyaman dipakai bahkan di VPS berskala kecil.

Persiapan Sebelum Install: Cek Server Anda

Sebelum mengetik perintah instalasi, pastikan dasar-dasarnya beres. Langkah ini sering dilewati, lalu menjadi sumber error yang membingungkan.

1. Masuk lewat SSH dan gunakan user non-root

Hubungkan ke server dari terminal Anda:

ssh namauser@IP_SERVER

Idealnya Anda bekerja dengan user biasa yang punya hak sudo, bukan langsung sebagai root. Kebiasaan ini melindungi Anda dari salah ketik yang fatal.

2. Periksa versi Ubuntu dan arsitektur

lsb_release -a
uname -m

Docker mendukung rilis Ubuntu LTS yang masih mendapat pembaruan, seperti 22.04 dan 24.04. Untuk arsitektur, x86_64 dan aarch64 sama-sama didukung.

3. Perbarui paket dan hapus sisa instalasi lama

sudo apt update && sudo apt upgrade -y
for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt remove -y $pkg; done

Perintah kedua membuang paket yang bisa bentrok dengan Docker Engine resmi. Jika tidak ada yang terpasang, apt hanya melaporkan bahwa paket tidak ditemukan. Itu normal.

Install Docker Engine dari Repositori Resmi

Ada jalan pintas berupa skrip instalasi satu baris, dan ada juga paket docker.io bawaan Ubuntu. Untuk belajar, saya sarankan repositori resmi Docker. Alasannya: versi lebih baru, pembaruan keamanan lebih cepat, dan Anda memahami apa yang terpasang di server Anda.

Langkah 1: Tambahkan kunci GPG dan repositori

sudo apt install -y 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

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] \
  https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt update

Kunci GPG berfungsi seperti segel keaslian. Tanpanya, apt tidak bisa memastikan paket yang diunduh benar-benar dari Docker.

Langkah 2: Pasang paketnya

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

Satu perintah ini memasang mesin Docker, antarmuka CLI, runtime container, plugin build, dan Docker Compose versi plugin.

Langkah 3: Pastikan layanan berjalan

sudo systemctl status docker
sudo systemctl enable docker

Status active (running) berarti Docker siap. Perintah enable memastikan Docker menyala otomatis setiap kali server di-reboot, hal kecil yang sering terlupa.

Langkah 4: Izinkan user Anda memakai Docker tanpa sudo

sudo usermod -aG docker $USER
newgrp docker

Setelah ini Anda tidak perlu mengetik sudo di depan setiap perintah Docker. Satu catatan keamanan: anggota grup docker praktis memiliki akses setara root di server. Jadi jangan masukkan user yang tidak Anda percayai ke grup ini.

Container Pertama: Dari Hello World ke Web Server Sungguhan

Sekarang bagian yang menyenangkan. Kita mulai dari tes paling dasar.

Uji dengan hello-world

docker run hello-world

Di balik layar, terjadi urutan yang layak dipahami: Docker mencari image hello-world di server, tidak menemukannya, mengunduh dari registry publik (Docker Hub), membuat container, menjalankannya, lalu container berhenti setelah mencetak pesan. Jika pesan sambutan muncul, instalasi Anda sehat.

Jalankan Nginx dan buka dari browser

Hello-world hanya tes. Mari jalankan sesuatu yang benar-benar bisa dilihat:

docker run -d --name web-pertama -p 8080:80 nginx:stable

Bedah setiap bagiannya:

  • -d menjalankan container di latar belakang (detached).
  • --name web-pertama memberi nama yang mudah diingat, jadi Anda tidak perlu menghafal ID acak.
  • -p 8080:80 memetakan port 8080 di server ke port 80 di dalam container.
  • nginx:stable adalah nama image beserta tag versinya.

Buka http://IP_SERVER:8080 di browser. Jika halaman "Welcome to nginx!" tampil, selamat: Anda baru saja menjalankan web server tanpa memasang Nginx langsung di sistem.

Jika halaman tidak terbuka, penyebab paling umum adalah firewall. Pada Ubuntu dengan UFW aktif, izinkan port tersebut:

sudo ufw allow 8080/tcp
sudo ufw status

Cek juga firewall di panel penyedia VPS Anda, karena sebagian penyedia memiliki lapisan firewall tersendiri di luar server.

Mengganti isi halaman dengan file milik Anda

Buat folder dan satu halaman HTML sederhana:

mkdir -p ~/situs-saya
echo '<h1>Halo dari container saya</h1>' > ~/situs-saya/index.html

docker rm -f web-pertama
docker run -d --name web-pertama -p 8080:80 \
  -v ~/situs-saya:/usr/share/nginx/html:ro \
  nginx:stable

Opsi -v memasang folder server ke dalam container (bind mount), dan akhiran :ro membuatnya hanya-baca dari sisi container. Ubah file index.html, muat ulang browser, dan perubahannya langsung terlihat. Inilah momen ketika banyak orang mulai paham mengapa Docker begitu berguna.

Perintah Harian yang Wajib Anda Hafal

Anda tidak perlu menghafal seratus perintah. Tujuh berikut sudah menutup sekitar 90 persen kebutuhan harian pemula.

PerintahFungsiContoh
docker psLihat container yang sedang berjalandocker ps -a untuk semua
docker logsBaca keluaran containerdocker logs -f web-pertama
docker execMasuk ke dalam containerdocker exec -it web-pertama sh
docker stop / startHentikan atau nyalakan lagidocker stop web-pertama
docker rmHapus containerdocker rm -f web-pertama
docker imagesDaftar image di serverdocker images
docker system pruneBersihkan sampah yang tidak terpakaidocker system prune -a

Satu kebiasaan baik: setiap kali container berperilaku aneh, langkah pertama Anda adalah docker logs. Sembilan dari sepuluh masalah pemula sudah terjawab di sana.

Naik Level dengan Docker Compose

Perintah docker run yang panjang cepat menjadi merepotkan. Coba bayangkan harus mengetik ulang lima opsi setiap kali server di-reboot atau container dibuat ulang. Docker Compose menyelesaikannya dengan satu berkas konfigurasi yang bisa disimpan, dibaca ulang, dan dibagikan.

Buat folder proyek dan berkas compose.yaml:

mkdir -p ~/proyek-web && cd ~/proyek-web
nano compose.yaml
services:
  web:
    image: nginx:stable
    container_name: web-compose
    ports:
      - "8080:80"
    volumes:
      - ./html:/usr/share/nginx/html:ro
    restart: unless-stopped

Jalankan dengan:

mkdir html && echo '<h1>Compose berhasil</h1>' > html/index.html
docker compose up -d

Baris restart: unless-stopped patut diperhatikan. Dengan opsi ini container otomatis hidup kembali setelah server restart, kecuali Anda sendiri yang menghentikannya. Untuk bot, dashboard, atau layanan apa pun yang harus selalu aktif, ini nyaris wajib.

Menghentikan dan menghapus semuanya cukup dengan docker compose down. Bersih, rapi, dan bisa diulang kapan saja.

Poin Penting: Simpan konfigurasi dalam berkas Compose, bukan di kepala Anda. Enam bulan lagi, Anda tidak akan ingat opsi apa saja yang dulu dipakai. Berkas tersebut adalah dokumentasi sekaligus cadangan.

Kesalahan Umum Pemula dan Cara Menghindarinya

Berikut jebakan yang paling sering ditemui, lengkap dengan penangkalnya.

Port sudah dipakai

Pesan port is already allocated berarti ada proses lain di port tersebut. Cek dengan sudo ss -tulpn | grep 8080, lalu ganti port atau hentikan proses yang bentrok.

Data hilang saat container dihapus

Container bersifat sementara. Semua yang ditulis di dalamnya lenyap saat container dihapus. Untuk data penting seperti database, selalu gunakan volume. Aturan sederhananya: kode dan konfigurasi boleh di bind mount, data aplikasi masuk ke volume.

Disk penuh tanpa disadari

Image lama dan container yang sudah berhenti menumpuk diam-diam. Biasakan menjalankan docker system df untuk melihat pemakaian, dan docker system prune secara berkala. Pada VPS dengan ruang disk terbatas, kebiasaan ini sangat menolong.

Memakai tag latest untuk segalanya

Tag latest berarti "versi terbaru saat ini", yang bisa berubah sewaktu-waktu dan merusak aplikasi yang tadinya baik-baik saja. Pakai tag spesifik seperti nginx:stable atau nomor versi tertentu agar hasilnya konsisten.

Membuka port ke seluruh dunia tanpa perlu

Pemetaan -p 8080:80 membuat layanan terbuka untuk publik. Jika container hanya perlu diakses dari server itu sendiri, misalnya database, ikat ke localhost: -p 127.0.0.1:5432:5432. Satu detail kecil yang menutup celah besar. Perlu diketahui pula bahwa Docker mengatur aturan iptables sendiri, sehingga port yang dipublikasikan bisa melewati aturan UFW. Karena itu, jangan hanya mengandalkan UFW; kendalikan juga lewat cara Anda memetakan port.

Langkah Selanjutnya Setelah Container Pertama

Begitu Nginx berjalan, jalur belajar Anda terbuka lebar. Beberapa ide latihan yang realistis:

  1. Pasang WordPress dengan database memakai dua service di satu berkas Compose.
  2. Jalankan bot Telegram sederhana sebagai container yang selalu menyala.
  3. Coba n8n untuk membangun otomasi tanpa menulis banyak kode.
  4. Tulis Dockerfile pertama Anda untuk membungkus aplikasi buatan sendiri.
  5. Tambahkan reverse proxy agar beberapa aplikasi berbagi satu domain dan HTTPS.

Semua latihan di atas butuh server yang bisa dinyalakan kapan saja dan dibongkar tanpa rasa sayang. Di sinilah vps gratis indonesia terasa berguna sebagai ruang latihan, terutama untuk mahasiswa dan developer pemula. Bila Anda ingin merasakan lingkungan server yang fleksibel untuk eksperimen container, lihat juga pilihan cloud vps gratis dan cek panel my.vpsgratis.id untuk mengelola server Anda.

Ringkasan Praktis untuk Dibawa Pulang

Jika harus diperas menjadi satu alur kerja, inilah urutannya: siapkan server dan user non-root, pasang Docker dari repositori resmi, uji dengan hello-world, jalankan Nginx dengan pemetaan port, pindahkan konfigurasi ke Docker Compose, lalu rawat dengan logs dan prune.

Tidak ada yang perlu ditakuti. Kesalahan terburuk pada tahap belajar paling-paling berupa container yang perlu dihapus dan dibuat ulang, dan justru dari situlah pemahaman tumbuh. Mulailah dari satu container kecil hari ini, dan tahun ini Anda bisa sudah nyaman men-deploy aplikasi sungguhan di server sendiri.

Coba VPS gratis
Terapkan yang Anda baca langsung di VPSGratis.ID.
Kunjungi VPSGratis.ID ↗