Uporaba Dockerfile za razkrivanje portov

Using Dockerfile Expose Ports



Zelo enostavno je ustvariti podobo Dockerja po meri iz obstoječih slik Dockerja z uporabo Dockerfile . Običajno ljudje uporabljajo minimalno osnovno sliko, kot je npr alpsko ali ubuntu/debian v ta namen. Recimo, da želite ustvariti Dockerjevo sliko vaše najljubše spletne aplikacije, napisano v NodeJS. Aplikacija bo delovala na vratih 8080 . Privzeto ne boste mogli dostopati do spletne aplikacije na vratih 8080 iz gostiteljske naprave. Dockerju boste morali povedati, da želite razkriti ali odpreti vrata 8080 da lahko do njega dostopate s svojega gostiteljskega računalnika.

V tem članku vam bom pokazal, kako z uporabo razkrijete vrata Dockerfile z zgledom iz resničnega sveta. Začnimo.







Najprej moramo ustvariti imenik projekta. V tem imeniku morate hraniti vse projektne datoteke in Dockerfile .



Če želite ustvariti imenik projekta, zaženite naslednji ukaz myapp/ v imeniku HOME vaših uporabnikov in se pomaknite do njega:



$mkdir~/myapp&& CD~/myapp

Priprava spletne aplikacije:

Zdaj ustvarite imenik src/ znotraj ~/myapp/ imenik z naslednjim ukazom:

$mkdirsrc

V src/ imenik, bo shranjena vsa izvorna koda moje aplikacije NodeJS.

Ustvaril bom preprosto app.js datoteko v src/ imenik in na vratih zaženite preprost spletni strežnik 8080 samo za demonstracijo.

The src/app.js datoteka vsebuje naslednje vrstice kod:

Pisanje Dockerfile in razkrivanje vrat:

Zdaj ustvarite Dockerfile v ~/myapp imenik z naslednjim ukazom:

$dotikDockerfile

Zdaj vnesite naslednje vrstice v Dockerfile in ga shranite. Kaj te vrstice pomenijo, bom razpravljal kasneje.

Tukaj, IZ alpskih: 3.8 pomeni, uporabite alpski: 3,8 Dockerjeva podlaga kot osnova za novo podobo, ki jo bomo iz tega gradili Dockerfile .

Zaženi posodobitev apk pomeni, zaženite posodobitev apk ukaz v osnovni sliki Dockerja alpski: 3,8 .

RUN apk add –ne-cache nodejs pomeni, zaženite dodaj apk ukaz za namestitev programskega jezika NodeJS v alpski: 3,8 Osnovna slika Dockerja.

COPY ./src /app pomeni, kopirajte vse datoteke iz ~/myapp/src imenik v /app imenik nove podobe Dockerja, ki jo bomo zgradili z Dockerfile .

CMD [/usr/bin/node, /app/app.js] pomeni, zaženite /app/app.js datoteko iz novega vsebnika z uporabo vozlišče binarno, ki se nahaja v /usr/bin/vozlišče .

Končno do IZPOSTAVLJENOST 8080/tcp pomeni, da odprete ali odprete vrata TCP 8080 na gostiteljski računalnik.

Ustvarjanje slike Docker po meri s pomočjo datoteke Docker:

Zdaj pa naredimo sliko Dockerja po meri alpsko vozlišče: v1 uporabljati Dockerfile ki smo ga pravkar ustvarili.

Najprej se prepričajte, da ste v ~/myapp/ imenik in nato zaženite naslednji ukaz, da ustvarite svojo sliko Dockerja po meri alpsko vozlišče: v1 :

$docker build-talpsko vozlišče: v1.

Kot lahko vidite, slika Dockerja po meri alpsko vozlišče: v1 nastaja. Zahtevana osnovna podoba Dockerja in paketi se pobirajo iz interneta.

Kot lahko vidite, slika Dockerja po meri alpsko vozlišče: v1 je uspešno ustvarjen.

Testiranje slike Dockerja po meri:

Zdaj lahko preizkusimo sliko Dockerja po meri alpsko vozlišče: v1 zelo enostavno. Vse, kar moramo storiti, je, da iz nje izdelamo posodo alpsko vozlišče: v1 sliko.

Če želite ustvariti vsebnik Docker, zaženite naslednji ukaz www Iz alpsko vozlišče: v1 Dockerjeva slika:

$docker run-d -to --imewww alpsko vozlišče: v1

Posoda www je ustvarjen.

Zdaj pa ugotovimo naslov IP www Docker vsebnik z naslednjim ukazom:

$docker pregledati www| oprijemNaslov

Kot lahko vidite, je v mojem primeru naslov IP 172.17.0.3 . Torej bi morala biti aplikacija NodeJS, ki sem jo napisal, dostopna iz spletnega brskalnika na vratih 8080 tega naslova IP.

Voila! Lahko dostopam do vrat 8080 mojega www Docker posoda.

Tako v bistvu razkrijete določena vrata v slikah Docker po meri, ki jih boste gradili Dockerfile .

Odkrivanje vrat TCP in UDP z uporabo datoteke Dockerfile:

V prejšnjem razdelku tega članka sem vam pokazal, kako izpostaviti vrata TCP s pomočjo Dockerfile .

Vrata TCP lahko preprosto razkrijete (recimo vrata TCP 53 ) v vašem Dockerfile z naslednjo vrstico:

IZPOSTAVLJENOST53/tcp

Razkrijete lahko tudi vrata UDP (recimo vrata UDP 53 ) z naslednjo vrstico v vašem Dockerfile :

IZPOSTAVLJENOST53/udp

Vrata TCP in UDP lahko hkrati razkrijete z naslednjimi vrsticami v datoteki Dockerfile :

IZPOSTAVLJENOST53/tcp
IZPOSTAVLJENOST53/udp

Če ne določite protokola (TCP ali UDP), ki ga želite uporabiti, se privzeto uporablja TCP. Če na primer vnesete naslednjo vrstico Dockerfile :

IZPOSTAVLJENOST53

Potem bo Docker domneval, da želite uporabiti vrata TCP 53.

Odkrivanje več vrat z uporabo Dockerfile:

Recimo, da želite ustvariti podobo Dockerja po meri MEAN. V tem primeru boste na nekaterih vratih izvajali strežnik HTTP (recimo vrata TCP 80 ali 8080), strežnik FTP, ki deluje na vratih TCP 21, strežnik zbirke podatkov SQL (recimo MySQL), ki deluje na vratih TCP 3306, ali strežnik baz podatkov NoSQL (recimo MongoDB), ki deluje na vratih TCP 27017 ali 27018, strežnik SSH, ki deluje na vratih TCP 22. To je veliko vrat!

Dobra novica je; na svoji podobi Docker po meri, ustvarjeni z uporabo, lahko izpostavite toliko vrat, kot jih potrebujete Dockerfile .

Vrata v zgornjem primeru so lahko izpostavljena z naslednjimi vrsticami v vašem Dockerfile :

IZPOSTAVLJENOST80/tcp
IZPOSTAVLJENOST8080/tcp
IZPOSTAVLJENOSTenaindvajset/tcp
IZPOSTAVLJENOST22/tcp
IZPOSTAVLJENOST3306/tcp
IZPOSTAVLJENOST27017/tcp
IZPOSTAVLJENOST27018/tcp

Če želite, lahko pustite specifikacijo protokola, saj Docker privzeto uporablja TCP in naredite enako z naslednjimi vrsticami v Dockerfile :

IZPOSTAVLJENOST80
IZPOSTAVLJENOST8080
IZPOSTAVLJENOSTenaindvajset
IZPOSTAVLJENOST22
IZPOSTAVLJENOST3306
IZPOSTAVLJENOST27017
IZPOSTAVLJENOST27018

Če potrebujete, lahko v svojih napravah kombinirate vrata TCP in UDP Dockerfile . Če na primer zaženete strežnik DNS (ki deluje na vratih UDP 53), bi skupaj z zgornjim primerom dodali naslednje vrstice Dockerfile .

IZPOSTAVLJENOST80
IZPOSTAVLJENOST8080
IZPOSTAVLJENOSTenaindvajset
IZPOSTAVLJENOST22
IZPOSTAVLJENOST53/udp
IZPOSTAVLJENOST3306
IZPOSTAVLJENOST27017
IZPOSTAVLJENOST27018

Tako izpostavljate vrata z uporabo Dockerfile . Če želite izvedeti več o Dockerfile in izpostavljanje vrat z uporabo Dockerfile , Preberi Dockerfile referenčni vodnik na https://docs.docker.com/engine/reference/builder/#expose

Hvala, ker ste prebrali ta članek.