Panduan Mula Menyusun Port dalam Docker: Panduan untuk Pemula
Hai daar, para penggemar Docker masa depan! Saya sangat gembira untuk menjadi panduan Anda dalam perjalanan yang menarik ini ke dunia manajemen port Docker. Sebagai seseorang yang telah mengajar sains 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 merembus 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 dalam Docker.
EXPOSE
EXPOSE seperti menaruh tanda "Dijual" di rumah. Ini menandakan bahwa kontainer sedang mendengarkan pada port tertentu, tapi itu tidak benar-benar membuat port tersebut dapat diakses dari luar kontainer.
PUBLISH
PUBLISH, dari sisi lain, seperti membuka pintu depan dan mengundang orang untuk masuk. Ini memetakan port dari kontainer ke port pada 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 | Petakan port | Ya |
Sekarang kita telah mengklarifikasi hal itu, mari kita lihat bagaimana kita dapat memanfaatkan ini dalam praktek!
Bagaimana Menyusun Port dalam 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
: Nama image Docker kita
Setelah menjalankan perintah ini, Anda dapat mengakses aplikasi web Anda dengan menavigasi ke http://localhost
di browser Anda. Apakah itu menarik?
Tapi apa kalau kita ingin memetakan beberapa port? Tidak masalah! Kita dapat menggunakan beberapa flag -p
:
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 siau pintu depan dan pintu belakang!
Bagaimana Menyusun Port dalam Dockerfile?
Sekarang, mari kita bicarakan bagaimana kita dapat menyusun port secara langsung dalam Dockerfile. Ini sangat berguna ketika Anda membangun 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
: Mengatur image dasar ke Node.js versi 14 -
WORKDIR /app
: Mengatur direktori kerja di kontainer -
COPY package*.json ./
: Menyalin file package.json -
RUN npm install
: Menginstal dependensi -
COPY . .
: Menyalin kode aplikasi -
EXPOSE 8080
: Mengatakan ke Docker bahwa kontainer akan mendengarkan di port 8080 -
CMD [ "node", "server.js" ]
: Perintah untuk menjalankan aplikasi
Instruksi EXPOSE
di sini seperti menaruh tanda "Dijual" yang kita bicarakan sebelumnya. Ini mengatakan ke Docker, "Halo, kontainer ini akan mendengarkan di port 8080!"
Tapi ingat, EXPOSE
sendiri tidak menerbitkan port. Untuk benar-benar membuat port dapat diakses saat menjalankan kontainer, kita masih perlu menggunakan flag -p
:
docker run -p 80:8080 my-node-app
Ini memetakan port 8080 yang disembunyikan di kontainer ke port 80 di mesin tuan.
Kesimpulan
Dan itu dia, teman-teman! Kita telah melintasi negeri manajemen port Docker, dari memahami perbedaan antara EXPOSE dan PUBLISH, hingga secara nyata menerapkan mereka dalam Dockerfile dan perintah run.
Ingat, manajemen port dalam Docker tentang komunikasi. EXPOSE seperti mengatakan ke Docker, "Halo, saya akan menggunakan port ini," sedangkan PUBLISH seperti mengatakan ke komputer Anda, "Saya ingin Anda mendengarkan kontainer ini di port ini."
Sebagai Anda terus menjalankan petualangan Docker Anda, Anda akan menemukan bahwa memahami manajemen port sangat penting untuk meluncurkan aplikasi, khususnya dalam arsitektur mikroser�ス yang kompleks. Tetapi jangan khawatir, dengan latihan, itu akan menjadi kebiasaan Anda!
FAQ
Berikut adalah beberapa pertanyaan umum yang murid-murid saya sering ajukan:
-
Q: Bisakah saya menggunakan EXPOSE dalam perintah
docker run
? A: Tidak, EXPOSE hanya digunakan dalam 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, tapi Anda tidak akan dapat mengaksesnya dari luar jaringan Docker.
-
Q: Bisakah saya memetakan port kontainer ke beberapa port tuan? A: Ya! Anda dapat menggunakan beberapa flag
-p
untuk memetakan satu port kontainer ke beberapa port tuan. -
Q: Ada batas untuk jumlah port yang dapat disembunyikan atau diterbitkan? A: Tidak ada batas keras dalam Docker, tetapi sistem operasi Anda mungkin memiliki batas pada port yang tersedia.
-
Q: Apa perbedaan antara
-p
dan-P
dalam perintahdocker run
? A:-p
memungkinkan Anda menentukan pemetaan port, sedangkan-P
menerbitkan semua port yang disembunyikan ke port acak di tuan.
Ingat, cara terbaik untuk belajar adalah dengan melakukan. Jadi buka terminal Anda, mulai membuat beberapa Dockerfile, dan selamat berkoding!
Credits: Image by storyset