Menggunakan Dockerfile untuk Mendedahkan Pelabuhan

Using Dockerfile Expose Ports



Sangat mudah untuk membuat gambar Docker tersuai dari gambar Docker yang ada menggunakan Dockerfile . Biasanya orang menggunakan gambar asas minimum seperti alpine atau ubuntu / debian untuk tujuan itu. Katakanlah, anda ingin membuat gambar Docker tersuai dari aplikasi web kegemaran anda yang ditulis dalam NodeJS. Aplikasi akan berjalan di port 8080 . Secara lalai, anda tidak dapat mengakses aplikasi web di port 8080 dari mesin hos anda. Anda harus memberitahu Docker bahawa anda ingin mendedahkan atau membuka port 8080 untuk dapat mengaksesnya dari mesin hos anda.

Dalam artikel ini, saya akan menunjukkan kepada anda cara untuk mendedahkan penggunaan port Dockerfile dengan contoh dunia nyata. Mari kita mulakan.







Pertama, kita mesti membuat direktori projek. Dalam direktori ini, anda harus menyimpan semua fail projek dan a Dockerfile .



Jalankan arahan berikut untuk membuat direktori projek myapp / di direktori HOME pengguna anda dan arahkan ke:



$mkdir~/myapp&& CD~/myapp

Menyiapkan Aplikasi Web:

Sekarang buat direktori src / di dalam ~ / myapp / direktori dengan arahan berikut:

$mkdirsrc

Di dalam src / direktori, semua kod sumber aplikasi NodeJS saya akan disimpan.

Saya hanya akan membuat yang mudah app.js fail di src / direktori dan jalankan pelayan web mudah di port 8080 hanya untuk demonstrasi.

The src / app.js fail mengandungi baris kod berikut:

Menulis Port Dockerfile dan Expose:

Sekarang buat a Dockerfile di dalam ~ / myapp direktori dengan arahan berikut:

$sentuhanDockerfile

Sekarang taipkan baris berikut ke Dockerfile dan selamatkannya. Saya akan membincangkan maksud garis-garis ini kemudian.

Di sini, DARI alpine: 3.8 bermaksud, gunakan alpine: 3.8 Imej Docker sebagai asas untuk imej baru yang akan kita bangunkan dari ini Dockerfile .

RUN kemas kini apk bermaksud, jalankan kemas kini apk arahan dalam gambar dasar Docker alpine: 3.8 .

RUN apk tambahkan –nodejs tanpa cache bermaksud, jalankan apk tambah perintah untuk memasang bahasa pengaturcaraan NodeJS di alpine: 3.8 Imej asas dok.

COPY ./src / aplikasi bermaksud, salin semua fail dari ~ / myapp / src direktori ke /aplikasi direktori gambar Docker baru yang akan kami bina menggunakan Dockerfile .

CMD [/ usr / bin / node, /app/app.js] bermaksud, jalankan /app/app.js fail dari bekas baru menggunakan simpul binari yang terletak di / usr / bin / nod .

Akhirnya, untuk KECUALI 8080 / tcp bermaksud, dedahkan atau buka port TCP 8080 ke komputer hos.

Membuat Imej Docker Tersuai Menggunakan Dockerfile:

Sekarang mari kita buat gambar Docker tersuai simpul alpine: v1 menggunakan Dockerfile yang baru kita buat.

Pertama, pastikan anda berada di ~ / myapp / direktori dan kemudian jalankan arahan berikut untuk membuat gambar Docker tersuai anda simpul alpine: v1 :

$membina dok-tsimpul alpine: v1.

Seperti yang anda lihat, gambar Docker tersuai simpul alpine: v1 sedang dicipta. Imej dan pakej Docker asas yang diperlukan sedang ditarik dari internet.

Seperti yang anda lihat, gambar Docker tersuai simpul alpine: v1 berjaya dibuat.

Menguji Imej Docker Kustom:

Sekarang kita boleh menguji gambar Docker tersuai simpul alpine: v1 sangat mudah. Yang harus kita buat hanyalah membuat bekas dari simpul alpine: v1 imej.

Jalankan arahan berikut untuk membuat bekas Docker www daripada simpul alpine: v1 Imej Docker:

$lari dok-d -kita - namawww alpine-node: v1

Bekas itu www diciptakan.

Sekarang mari kita cari alamat IP dari www Bekas dok dengan arahan berikut:

$docker memeriksa www| cengkamanAlamat

Seperti yang anda lihat, dalam kes saya, alamat IP adalah 172.17.0.3 . Jadi aplikasi NodeJS yang saya tulis harus dapat diakses dari penyemak imbas web di port 8080 dari alamat IP ini.

Voila! Saya boleh mengakses pelabuhan 8080 dari saya www Bekas dok.

Itulah asasnya anda memperlihatkan port tertentu dalam gambar Docker tersuai yang akan anda gunakan Dockerfile .

Mendedahkan Pelabuhan TCP dan UDP Menggunakan Dockerfile:

Pada bahagian awal artikel ini, saya menunjukkan kepada anda cara untuk memperlihatkan port TCP menggunakan a Dockerfile .

Anda boleh mendedahkan port TCP dengan mudah (katakanlah port TCP 53 ) di anda Dockerfile dengan baris berikut:

PENDEDAHAN53/tcp

Anda juga dapat mendedahkan port UDP (Katakan port UDP 53 ) dengan baris berikut di anda Dockerfile :

PENDEDAHAN53/udp

Anda boleh memaparkan port TCP dan UDP pada masa yang sama dengan baris berikut di Dockerfile :

PENDEDAHAN53/tcp
PENDEDAHAN53/udp

Sekiranya anda tidak menentukan protokol apa (TCP atau UDP) yang akan digunakan, TCP digunakan secara lalai. Contohnya, jika anda menulis baris berikut di Dockerfile :

PENDEDAHAN53

Kemudian Docker akan menganggap bahawa anda ingin menggunakan port TCP 53.

Mendedahkan Pelbagai Pelabuhan Menggunakan Dockerfile:

Katakan anda ingin membuat gambar MEAN stack Docker tersuai. Dalam kes ini, anda akan menjalankan pelayan HTTP di beberapa port (katakan port TCP 80 atau 8080), pelayan FTP yang berjalan di port TCP 21, pelayan pangkalan data SQL (katakan MySQL) yang berjalan di port TCP 3306, atau pelayan pangkalan data NoSQL (katakanlah MongoDB) yang berjalan di port TCP 27017 atau 27018, pelayan SSH yang berjalan di port TCP 22. Itu banyak port!

Berita baiknya ialah; anda boleh memaparkan sebanyak mungkin port pada gambar Docker tersuai anda yang dibuat menggunakan Dockerfile .

Pelabuhan dalam contoh di atas boleh didedahkan dengan garis berikut di anda Dockerfile :

PENDEDAHAN80/tcp
PENDEDAHAN8080/tcp
PENDEDAHANdua puluh satu/tcp
PENDEDAHAN22/tcp
PENDEDAHAN3306/tcp
PENDEDAHAN27017/tcp
PENDEDAHAN27018/tcp

Sekiranya anda mahu, anda boleh meninggalkan spesifikasi protokol kerana Docker menggunakan TCP secara lalai dan melakukan perkara yang sama dengan baris berikut di Dockerfile :

PENDEDAHAN80
PENDEDAHAN8080
PENDEDAHANdua puluh satu
PENDEDAHAN22
PENDEDAHAN3306
PENDEDAHAN27017
PENDEDAHAN27018

Sekiranya perlu, anda boleh mencampurkan port TCP dan UDP di Dockerfile . Sebagai contoh, jika anda menjalankan pelayan DNS (yang berjalan di port UDP 53), bersama dengan contoh di atas, anda akan menambahkan baris berikut ke Dockerfile .

PENDEDAHAN80
PENDEDAHAN8080
PENDEDAHANdua puluh satu
PENDEDAHAN22
PENDEDAHAN53/udp
PENDEDAHAN3306
PENDEDAHAN27017
PENDEDAHAN27018

Oleh itu, anda mendedahkan penggunaan port Dockerfile . Untuk mengetahui lebih lanjut mengenai Dockerfile dan mendedahkan port menggunakan Dockerfile , membaca Dockerfile panduan rujukan di https://docs.docker.com/engine/reference/builder/#expose

Terima kasih kerana membaca artikel ini.