Cara Memakai Docker untuk Pemula: Konsep dan Praktik
"Di laptop saya jalan." Kalimat itu sudah menguburkan lebih banyak jam kerja daripada bug mana pun: aplikasi yang sehat di satu komputer menolak hidup di komputer lain karena beda versi Python, beda library, beda entah apa. Docker menyelesaikannya dengan cara yang tidak halus tapi sangat efektif — membungkus aplikasi beserta seluruh lingkungannya menjadi satu paket yang berjalan identik di mana saja. Tutorial ini mengantar Anda dari nol sampai menjalankan beberapa layanan sekaligus dengan docker compose.
Masalah yang diselesaikan Docker
Sebelum Docker, "memasang aplikasi di server" berarti menginstal runtime, library, dan konfigurasi satu per satu — lalu berdoa versi semuanya cocok. Docker mengganti ritual itu dengan image: cetakan berisi aplikasi plus semua dependensinya, dibuat sekali, dijalankan di mana pun sebagai container. Server baru tinggal menarik image yang sama dan hasilnya identik. Bonus yang sering terlupa: menghapus container tidak meninggalkan sisa apa pun di sistem — bandingkan dengan mencabut instalasi manual yang serpihannya tertinggal di mana-mana.
Langkah 1: Install Docker dan uji instalasi
Di Windows dan Mac, pasang Docker Desktop dari docker.com. Di server Linux, cukup:
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER
Keluar-masuk sesi terminal, lalu uji:
docker run --rm hello-world
Pesan "Hello from Docker!" menandakan mesinnya siap.
Langkah 2: Jalankan container pertama yang berguna
Lewati contoh mainan, langsung ke sesuatu yang terlihat hasilnya — web server nginx:
docker run -d --name webku -p 8080:80 nginx
Buka http://localhost:8080: halaman sambutan nginx tampil, dan Anda tidak menginstal nginx sama sekali. Bedah perintahnya: -d menjalankan di latar, --name memberi nama, -p 8080:80 menyalurkan port 8080 komputer Anda ke port 80 di dalam container. Perintah sehari-hari yang menyertainya:
docker ps # container yang sedang jalan
docker logs webku # keluaran aplikasinya
docker stop webku # hentikan
docker rm webku # hapus
Langkah 3: Pahami image, container, volume, dan port
Empat kata ini adalah seluruh kosakata inti Docker:
| Istilah | Analogi | Yang perlu diingat |
|---|---|---|
| Image | Cetakan kue | Tidak berubah; diunduh dari registry seperti Docker Hub |
| Container | Kue hasil cetakan | Bisa dibuat dan dibuang kapan saja dari image yang sama |
| Volume | Lemari arsip di luar dapur | Data yang harus selamat saat container dibuang |
| Port mapping | Nomor loket | Menyalurkan port mesin ke port container |
Yang paling sering menyakiti pemula adalah volume — tepatnya, lupa memakainya. Data yang ditulis di dalam container ikut lenyap bersama container-nya. Database tanpa volume adalah database yang sedang menunggu hilang. Aturannya sederhana: semua data yang tidak boleh hilang harus tinggal di volume.
Langkah 4: Rangkai beberapa layanan dengan docker compose
Aplikasi nyata jarang sendirian — minimal ada aplikasi plus database. Menjalankan dan menyambungkan semuanya lewat perintah manual cepat jadi tidak terkelola. Docker compose memindahkan semua itu ke satu file. Contoh: WordPress lengkap dengan database-nya.
services:
db:
image: mariadb:11
environment:
MYSQL_DATABASE: wordpress
MYSQL_USER: wp
MYSQL_PASSWORD: rahasia-ganti-ini
MYSQL_RANDOM_ROOT_PASSWORD: "1"
volumes:
- db_data:/var/lib/mysql
wordpress:
image: wordpress:latest
ports:
- "8080:80"
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: wp
WORDPRESS_DB_PASSWORD: rahasia-ganti-ini
WORDPRESS_DB_NAME: wordpress
volumes:
- wp_data:/var/www/html
volumes:
db_data:
wp_data:
Simpan sebagai docker-compose.yml, jalankan docker compose up -d, dan dua layanan hidup saling terhubung — perhatikan WordPress memanggil database cukup dengan nama db, karena compose membuatkan jaringan internal otomatis. docker compose down menghentikan semuanya; data selamat di volume.
Kesalahan pemula yang paling mahal
- Data penting tanpa volume — hilang saat container dibuat ulang. Korban terbanyaknya database.
- Password sungguhan di compose file yang masuk git — pakai file
.envdan pastikan ia ada di.gitignore. - Semua container memakai
latest— suatu harilatestberubah besar dan sistem Anda ikut berubah tanpa diminta. Untuk produksi, tulis versi eksplisit. - Membuka port database ke publik — database hanya perlu dijangkau aplikasinya, bukan internet. Jangan beri
portspada service database kecuali sangat sadar akibatnya.
Dengan bekal ini Anda sudah bisa mengikuti hampir semua tutorial self-hosting — termasuk memasang n8n untuk otomasi kantor. Dan kalau yang Anda butuhkan adalah aplikasi bisnis yang dirancang, dibungkus, dan dirawat sekalian, itu persisnya pekerjaan tim software Clovertechno.
Clovertechno