Cara Install Docker di VPS Ubuntu dan Jalankan Container Pertama
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_SERVERIdealnya 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 -mDocker 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; donePerintah 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 updateKunci 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-pluginSatu 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 dockerStatus 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 dockerSetelah 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-worldDi 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:stableBedah setiap bagiannya:
-dmenjalankan container di latar belakang (detached).--name web-pertamamemberi nama yang mudah diingat, jadi Anda tidak perlu menghafal ID acak.-p 8080:80memetakan port 8080 di server ke port 80 di dalam container.nginx:stableadalah 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 statusCek 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:stableOpsi -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.
| Perintah | Fungsi | Contoh |
|---|---|---|
docker ps | Lihat container yang sedang berjalan | docker ps -a untuk semua |
docker logs | Baca keluaran container | docker logs -f web-pertama |
docker exec | Masuk ke dalam container | docker exec -it web-pertama sh |
docker stop / start | Hentikan atau nyalakan lagi | docker stop web-pertama |
docker rm | Hapus container | docker rm -f web-pertama |
docker images | Daftar image di server | docker images |
docker system prune | Bersihkan sampah yang tidak terpakai | docker 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.yamlservices:
web:
image: nginx:stable
container_name: web-compose
ports:
- "8080:80"
volumes:
- ./html:/usr/share/nginx/html:ro
restart: unless-stoppedJalankan dengan:
mkdir html && echo '<h1>Compose berhasil</h1>' > html/index.html
docker compose up -dBaris 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:
- Pasang WordPress dengan database memakai dua service di satu berkas Compose.
- Jalankan bot Telegram sederhana sebagai container yang selalu menyala.
- Coba n8n untuk membangun otomasi tanpa menulis banyak kode.
- Tulis Dockerfile pertama Anda untuk membungkus aplikasi buatan sendiri.
- 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.
