Docker - Manajemen Port: Panduan untuk Pemula
Hai teman-teman, penggemar Docker masa depan! Saya sangat senang menjadi panduan Anda dalam perjalanan menarik ini ke dunia manajemen port Docker. Sebagai seseorang yang telah mengajar ilmu komputer selama bertahun-tahun, saya telah melihat secara langsung bagaimana Docker telah revolusi dalam cara kita mengembangkan dan meluncurkan aplikasi. Jadi, mari kita masuk dan membedah konsep manajemen port dalam Docker!
EXPOSE vs. PUBLISH: Memahami Perbedaan
Sebelum kita mulai memanipulasi kode, mari kita klarifikasi kesulitan umum yang banyak murid saya hadapi: perbedaan antara EXPOSE dan PUBLISH di Docker.
EXPOSE
EXPOSE mirip seperti menaruh tanda "Dijual" di rumah. Itu menunjukkan bahwa kontainer sedang mendengarkan di port tertentu, tetapi itu tidak benar-benar membuat port tersebut dapat diakses dari luar kontainer.
PUBLISH
PUBLISH, dari sisi lain, mirip seperti membuka pintu depan dan mengundang orang masuk. Itu memetakan port dari kontainer ke port di mesin tuan, membuatnya dapat diakses dari luar.
mari kita lihat tabel sederhana untuk menyummarisakan:
Perintah | Tujuan | Dapat diakses dari luar? |
---|---|---|
EXPOSE | Dokumentasikan port | Tidak |
PUBLISH | Map port | Ya |
Sekarang kita sudah memahami itu, mari kita lihat bagaimana kita dapat memanfaatkan ini dalam praktek!
Bagaimana Menampilkan Port di Docker menggunakan PUBLISH?
Ketika Anda menjalankan kontainer, Anda dapat menggunakan flag -p
atau --publish
untuk memetakan port kontainer ke port tuan. Misalnya, kita memiliki aplikasi web yang berjalan di port 8080 dalam kontainer kita, dan kita ingin mengaksesnya di port 80 di mesin tuan kita.
Berikut adalah cara kita melakukannya:
docker run -p 80:8080 my-web-app
mari kitauraikan ini:
-
docker run
: Perintah ini menjalankan kontainer -
-p 80:8080
: Ini memetakan port 8080 di kontainer ke port 80 di tuan -
my-web-app
: Ini adalah nama Docker image kita
Setelah menjalankan perintah ini, Anda dapat mengakses aplikasi web Anda dengan mengarahkan peramban Anda ke http://localhost
. Apakah itu menarik?
Tapi apa kalau kita ingin memetakan beberapa port? Tidak masalah! Kita dapat menggunakan flag -p
beberapa kali:
docker run -p 80:8080 -p 443:8443 my-web-app
Ini memetakan port 8080 ke 80 untuk lalu lintas HTTP, dan 8443 ke 443 untuk lalu lintas HTTPS. Itu seperti memberikan aplikasi Anda sia-sia pintu depan dan belakang!
Bagaimana Menampilkan Port di Dockerfile?
Sekarang, mari kita bicarakan bagaimana kita dapat menampilkan port secara langsung di Dockerfile. Ini sangat berguna ketika Anda membuat image Docker sendiri.
Berikut adalah Dockerfile sederhana untuk aplikasi Node.js:
FROM node:14
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 8080
CMD [ "node", "server.js" ]
mari kitauraikan ini:
-
FROM node:14
: Ini menentukan image dasar kita ke Node.js versi 14 -
WORKDIR /app
: Ini menentukan direktori kerja di kontainer -
COPY package*.json ./
: Ini menyalin file package.json kita -
RUN npm install
: Ini menginstal dependensi kita -
COPY . .
: Ini menyalin kode aplikasi kita -
EXPOSE 8080
: Ini memberitahu Docker bahwa kontainer akan mendengarkan di port 8080 -
CMD [ "node", "server.js" ]
: Ini adalah perintah untuk menjalankan aplikasi kita
Perintah EXPOSE
di sini adalah seperti menaruh tanda "Dijual" yang kita bicarakan sebelumnya. Itu memberitahu Docker, "Hey, kontainer ini akan mendengarkan di port 8080!"
Tapi ingat, EXPOSE
sendiri tidak menerbitkan port. Untuk benar-benar membuat port dapat diakses saat kita menjalankan kontainer, kita masih perlu menggunakan flag -p
:
docker run -p 80:8080 my-node-app
Ini memetakan port 8080 yang ditampilkan di kontainer ke port 80 di mesin tuan kita.
Kesimpulan
Dan begitu punya, teman-teman! Kita telah melakukan perjalanan melalui negeri manajemen port Docker, dari memahami perbedaan antara EXPOSE dan PUBLISH, hingga implementasinya dalam Dockerfile dan perintah run.
Ingat, manajemen port dalam Docker adalah tentang komunikasi. EXPOSE adalah seperti mengatakan ke Docker, "Hey, saya akan menggunakan port ini," sedangkan PUBLISH adalah seperti mengatakan ke komputer Anda, "Saya ingin Anda mendengarkan port ini di kontainer Docker ini."
Buatlanjutkan perjalanan Docker Anda, Anda akan menemukan bahwa memahami manajemen port sangat penting untuk meluncurkan aplikasi, khususnya dalam arsitektur mikroservis kompleks. Tetapi jangan khawatir, dengan praktik, itu akan menjadi tabiat!
FAQ
Berikut adalah beberapa pertanyaan umum yang murid-murid saya sering ajukan:
-
Q: Bisa saya menggunakan EXPOSE dalam perintah docker run? A: Tidak, EXPOSE hanya digunakan di Dockerfile. Untuk pemetaan port saat menjalankan, gunakan flag -p.
-
Q: Apa yang terjadi jika saya tidak menggunakan PUBLISH saat menjalankan kontainer? A: Kontainer akan berjalan, tetapi Anda tidak akan dapat mengaksesnya dari luar jaringan Docker.
-
Q: Bisa saya memetakan port kontainer ke beberapa port tuan? A: Ya! Anda dapat menggunakan flag -p beberapa kali untuk memetakan port tunggal ke beberapa port tuan.
-
Q: Ada batas untuk jumlah port yang dapat saya tampilkan atau menerbitkan? A: Tidak ada batas keras di Docker, tetapi sistem operasi Anda mungkin memiliki batas pada port yang tersedia.
-
Q: Apa perbedaan antara -p dan -P di docker run? A: -p memungkinkan Anda untuk menentukan pemetaan port, sedangkan -P menerbitkan semua port yang ditampilkan ke port acak di tuan.
Ingat, cara terbaik untuk belajar adalah dengan melakukan. Jadi, buka terminal Anda, mulai membuat beberapa Dockerfile, dan semangat coding!
Credits: Image by storyset