Dockerfile'i kasutamine portide avamiseks

Using Dockerfile Expose Ports



Kohandatud Dockeri pildi loomine olemasolevatest Dockeri piltidest on tõesti lihtne Dockerfile . Tavaliselt kasutavad inimesed minimaalset aluspilti, näiteks alpine või ubuntu/debian sel eesmärgil. Oletame, et soovite luua kohandatud Dockeri pildi oma lemmikveebirakendusest, mis on kirjutatud NodeJS -is. Rakendus töötab sadamas 8080 . Vaikimisi ei pääse te pordi veebirakendusele juurde 8080 oma hostmasinast. Peate Dockerile ütlema, et soovite porti paljastada või avada 8080 et pääseda sellele juurde oma hostmasinast.

Selles artiklis näitan teile, kuidas sadamaid eksponeerida Dockerfile reaalse maailma näitega. Alustame.







Esiteks peame looma projekti kataloogi. Selles kataloogis peaksite hoidma kõik projektifailid ja a Dockerfile .



Projekti kataloogi loomiseks käivitage järgmine käsk myapp/ oma kasutajate HOME kataloogis ja navigeerige sellele:



$mkdir~/myapp&& CD~/myapp

Veebirakenduse ettevalmistamine:

Nüüd looge kataloog src/ sees ~/myapp/ kataloogi järgmise käsuga:

$mkdirsrc

Aastal src/ kataloogi, säilitatakse kogu minu NodeJS rakenduse lähtekood.

Loon lihtsalt lihtsa app.js fail kaustas src/ kataloogi ja käivitage pordis lihtne veebiserver 8080 lihtsalt demonstratsiooniks.

The src/app.js fail sisaldab järgmisi koodiridu:

Dockerfile'i kirjutamine ja portide kuvamine:

Nüüd looge a Dockerfile aastal ~/myapp kataloogi järgmise käsuga:

$puudutadaDockerfile

Sisestage nüüd järgmised read Dockerfile ja salvesta see. Mida need read tähendavad, arutan hiljem.

Siin, ALPI: 3.8 tähendab, kasutage Alpine: 3.8 Dockeri pilt uue pildi aluseks, mille me sellest ehitame Dockerfile .

RUN apk värskendus tähendab, käivitage apk värskendus käsku Dockeri põhipildil Alpine: 3.8 .

Käivita apk lisage –no-cache nodejs tähendab, käivitage apk lisada käsk NodeJS programmeerimiskeele installimiseks Alpine: 3.8 Dockeri aluspilt.

KOOPIA ./src /app tähendab, kopeerige kõik failid kaustast ~/myapp/src kataloogi /app uue Dockeri pildi kataloogi, mille ehitame, kasutades Dockerfile .

CMD [/usr/bin/node, /app/app.js] tähendab, käivitage /app/app.js faili uue konteineri abil sõlm binaar, mis asub /usr/bin/node .

Lõpuks, et EXPOSE 8080/tk tähendab, paljastada või avada TCP -port 8080 hostarvutisse.

Kohandatud Dockeri pildi loomine Dockerfile'i abil:

Nüüd teeme kohandatud Dockeri pildi alpisõlm: v1 kasutades Dockerfile mille me just lõime.

Esiteks veenduge, et olete selles ~/myapp/ kataloogi ja seejärel käivitage oma Dockeri kohandatud pildi loomiseks järgmine käsk alpisõlm: v1 :

$doki ehitamine-talpisõlm: v1.

Nagu näete, kohandatud Dockeri pilt alpisõlm: v1 luuakse. Vajalik Dockeri põhipilt ja paketid tõmmatakse Internetist.

Nagu näete, kohandatud Dockeri pilt alpisõlm: v1 on edukalt loodud.

Custom Dockeri pildi testimine:

Nüüd saame testida kohandatud Dockeri pilti alpisõlm: v1 väga lihtsalt. Peame ainult looma konteineri alpisõlm: v1 pilt.

Dockeri konteineri loomiseks käivitage järgmine käsk www alates alpisõlm: v1 Dockeri pilt:

$doki jooks-d -see -nimiwww alpine-node: v1

Konteiner www on loodud.

Nüüd uurime välja selle IP -aadress www Dockeri konteiner järgmise käsuga:

$dokk kontrollima www| haaretAadress

Nagu näete, on minu puhul IP -aadress 172,17.0.3 . Nii et minu kirjutatud NodeJS -i rakendusele peaks olema juurdepääs pordi veebibrauserist 8080 selle IP -aadressi.

Voila! Ma saan sadamasse siseneda 8080 minu oma www Dockeri konteiner.

Põhimõtteliselt paljastate teatud sadamad oma kohandatud Dockeri piltidel, mida ehitate Dockerfile .

TCP- ja UDP -portide paljastamine Dockerfile'i abil:

Selle artikli varasemas osas näitasin teile, kuidas paljastada TCP -port, kasutades Dockerfile .

Saate hõlpsasti paljastada TCP -pordi (oletame, et TCP -port 53 ) sinu sees Dockerfile järgmise reaga:

VÄLJA53/tcp

Võite paljastada ka UDP -pordi (oletame, et UDP -port 53 ) järgmise reaga Dockerfile :

VÄLJA53/udp

TCP- ja UDP -porti saate samaaegselt paljastada järgmiste ridadega Dockerfile :

VÄLJA53/tcp
VÄLJA53/udp

Kui te ei määra, millist protokolli (TCP või UDP) kasutada, kasutatakse vaikimisi TCP -d. Näiteks kui kirjutate oma reale järgmise rea Dockerfile :

VÄLJA53

Seejärel eeldab Docker, et soovite kasutada TCP -porti 53.

Mitme pordi paljastamine Dockerfile'i abil:

Oletame, et soovite luua kohandatud MEAN virna Dockeri pildi. Sellisel juhul käivitate HTTP -serveri mõnes pordis (oletame, et TCP -port 80 või 8080), FTP -serveris, mis töötab TCP -pordis 21, SQL -andmebaasiserveris (oletame, et MySQL), mis töötab TCP -pordis 3306, või NoSQL andmebaasiserver (oletame, et MongoDB), mis töötab TCP -pordil 27017 või 27018, SSH -server, mis töötab TCP -pordil 22. See on palju sadamaid!

Hea uudis on; saate oma kohandatud Dockeri pildil paljastada nii palju porte kui vaja Dockerfile .

Ülaltoodud näites olevad pordid saab kuvada järgmiste ridadega Dockerfile :

VÄLJA80/tcp
VÄLJA8080/tcp
VÄLJAkakskümmend üks/tcp
VÄLJA22/tcp
VÄLJA3306/tcp
VÄLJA27017/tcp
VÄLJA27018/tcp

Soovi korral võite jätta protokolli spetsifikatsiooni, kuna Docker kasutab vaikimisi TCP -d, ja teha sama toimingu järgmiste ridadega Dockerfile :

VÄLJA80
VÄLJA8080
VÄLJAkakskümmend üks
VÄLJA22
VÄLJA3306
VÄLJA27017
VÄLJA27018

Vajadusel saate oma TCP- ja UDP -porte segada Dockerfile . Näiteks kui kasutate DNS -serverit (mis töötab UDP -pordis 53), lisate koos ülaltoodud näitega oma kontole järgmised read Dockerfile .

VÄLJA80
VÄLJA8080
VÄLJAkakskümmend üks
VÄLJA22
VÄLJA53/udp
VÄLJA3306
VÄLJA27017
VÄLJA27018

Nii paljastate porte kasutades Dockerfile . Et rohkem teada saada Dockerfile ja portide paljastamist kasutades Dockerfile , Loe Dockerfile teatmik juhendis https://docs.docker.com/engine/reference/builder/#expose

Täname, et lugesite seda artiklit.