Yuk kenali apa itu Port Mapping di Docker dan kenapa fitur ini penting saat menjalankan aplikasi di dalam container. Lewat artikel ini kamu akan belajar konsep dasarnya dengan cara yang mudah dipahami, lengkap dengan contoh praktis dan tips bermanfaat.
Halo, Kawan Belajar!
Ketika kita menjalankan aplikasi di dalam Docker container, setiap container memiliki lingkungan (environment) dan jaringan yang terisolasi dari sistem host maupun container lainnya. Kelebihan ini membuat aplikasi jadi lebih aman dan mudah dikelola, tapi ada satu konsekuensi penting yakni aplikasi di dalam container tidak bisa diakses langsung dari luar, seperti dari browser.
Nah, agar aplikasi tersebut dapat diakses dari luar, Docker menyediakan fitur yang disebut Port Mapping (atau Port Publishing). Fitur ini berfungsi untuk menghubungkan port di host dengan port di dalam container, ibarat membuka "pintu akses” agar dunia luar bisa berkomunikasi dengan aplikasi yang berjalan di container.
Secara sederhana, Port Mapping adalah proses memetakan port yang digunakan di dalam container ke port di sistem host. Setiap container punya port internal sendiri (misalnya NGINX mendengarkan di port 80). Namun, tanpa port mapping, port 80 itu hanya bisa diakses dari dalam container itu sendiri.
Untuk membuka akses dari luar, kita gunakan opsi -p saat menjalankan container:
docker run -d -p <HostPort>:<ContainerPort> <docker_image>
Contoh sederhana:
docker run -d -p 8080:80 nginx
Artinya:
80 → port di dalam container (port default NGINX)8080 → port di host (yang bisa diakses melalui browser)Sekarang, kalau kamu buka di browser:
http://Alamat_IP:8080
maka halaman default NGINX akan tampil. 🎉
Berikut adalah beberapa variasi umum yang bisa kamu gunakan saat melakukan port mapping:
Ini adalah bentuk paling umum, kamu menentukan port host dan port container secara eksplisit:
docker run -d -p 8080:80 nginx
Kamu bisa menambahkan beberapa opsi -p dalam satu perintah:
docker run -d -p 8080:80 -p 8443:443 nginx
Perintah ini membuka dua port pada host, masing-masing terhubung ke HTTP (80) dan HTTPS (443) di container.
Untuk melihat port mapping yang sedang berjalan:
docker port <nama_container>
Contoh hasil:
Penjelasan:
Port 80/tcp → 0.0.0.0:8080
→ Port 80 di dalam container (HTTP) dipetakan ke port 8080 di host.
Port 443/tcp → 0.0.0.0:8443
→ Port 443 di dalam container (HTTPS) dipetakan ke port 8443 di host.
Alamat 0.0.0.0 dan [::] menunjukkan bahwa port tersebut terbuka di semua interface jaringan host, baik IPv4 maupun IPv6.
Kadang, kamu ingin mem-publish port container tanpa peduli port host berapa yang digunakan. Docker bisa secara otomatis memilih port acak (ephemeral) untuk kamu.
Cukup hilangkan HOST_PORT:
docker run -d -p 80 nginx
Kemudian jalankan:
docker ps
Hasilnya akan menampilkan port acak di host seperti contoh berikut:
Artinya, aplikasi Nginx yang berjalan di port 80 dalam container bisa diakses di port 32768 di host.
Perlu kamu tahu bahwa konfigurasi port mapping hanya bisa ditentukan saat container dijalankan pertama kali, yaitu menggunakan perintah docker run dengan opsi -p atau --publish.
Kalau kamu ingin mengubah port mapping yang sedang aktif digunakan, cara satu-satunya adalah menjalankan ulang (relaunch) container dengan konfigurasi port baru.
Langkah-langkahnya:
Berhentikan container lama:
docker stop <nama_container>
Hapus container lama (image tetap aman):
docker rm <nama_container>
Jalankan ulang container dengan port baru:
docker run -d --name <nama_container> -p <HostPort>:<ContainerPort> <image>
💡 Tips: Jika container kamu menyimpan data penting, pastikan menggunakan volume (
-v) agar data tidak hilang saat container dihapus dan dijalankan ulang. Baca lebih lanjut tentang Docker Volume disini: Memahami Docker Volume untuk Persistent Storage
Selain melalui docker run, kita juga bisa melakukan port mapping menggunakan Docker Compose, yang sangat membantu jika kamu mengelola beberapa container sekaligus.
services:
web:
image: nginx
ports:
- "8080:80"
Penjelasan:
Jalankan aplikasi
Di direktori tempat file compose.yaml berada, jalankan:
docker compose up -d
Cek status container
docker compose ps
Sekarang kamu bisa mengaksesnya di:
http://Alamat_IP:8080
Mapping beberapa port di Compose
Kamu juga bisa menambahkan lebih dari satu port:
ports:
- "8080:80"
- "8443:443"
Dengan memahami port mapping di Docker, kamu bisa lebih mudah mengontrol bagaimana aplikasi di dalam container berinteraksi dengan dunia luar. Fitur ini penting banget, terutama saat kamu menjalankan web server, API, atau layanan lain yang perlu diakses pengguna.
Kalau kamu masih baru dalam dunia Docker, jangan khawatir! Kamu bisa mulai dari artikel dasar kami di sini:
👉 Mengenal Docker: Penjelasan, Cara Kerja, dan Keuntungannya
Dan buat kamu yang ingin bereksperimen langsung menjalankan Docker container, kamu bisa menggunakan VPS CloudKilat yakni Kilat VM 2.0. Pada Kilat VM 2.0, kamu bisa menginstal Docker, mencoba berbagai konfigurasi, serta melakukan praktikum langsung, tentunya didampingi dengan performa yang andal, fleksibel, dan harga terjangkau.
Jangan ragu untuk menghubungi tim support kami jika Anda memiliki pertanyaan atau masalah terkait layanan CloudKilat.