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!

Docker - Managing Ports

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:

  1. Q: Bisakah saya menggunakan EXPOSE dalam perintah docker run? A: Tidak, EXPOSE hanya digunakan dalam Dockerfile. Untuk pemetaan port saat menjalankan, gunakan flag -p.

  2. 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.

  3. 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.

  4. 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.

  5. Q: Apa perbedaan antara -p dan -P dalam perintah docker 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