„Dockerfile“ naudojimas uostams atskleisti

Using Dockerfile Expose Ports



Tikrai lengva sukurti pasirinktinį „Docker“ vaizdą iš esamų „Docker“ vaizdų Dockerfile . Paprastai žmonės naudoja minimalų bazinį vaizdą, pvz alpinis arba ubuntu/debian tam tikslui. Tarkime, norite sukurti pasirinktinį mėgstamos žiniatinklio programos „Docker“ vaizdą, parašytą „NodeJS“. Programa veiks uoste 8080 . Pagal numatytuosius nustatymus negalėsite pasiekti žiniatinklio programos uoste 8080 iš savo pagrindinio kompiuterio. Turėsite pasakyti „Docker“, kad norite atskleisti arba atidaryti prievadą 8080 kad galėtumėte jį pasiekti iš savo pagrindinio kompiuterio.

Šiame straipsnyje aš jums parodysiu, kaip atskleisti uostus naudojant Dockerfile su realaus pasaulio pavyzdžiu. Pradėkime.





Pirmiausia turime sukurti projekto katalogą. Šiame kataloge turėtumėte laikyti visus projekto failus ir Dockerfile .



Norėdami sukurti projekto katalogą, paleiskite šią komandą myapp/ savo vartotojų HOME kataloge ir eikite į jį:



$mkdir~/myapp&& CD~/myapp

Žiniatinklio programos paruošimas:

Dabar sukurkite katalogą src/ viduje ~/myapp/ katalogą su tokia komanda:

$mkdirsrc

Viduje konors src/ kataloge, bus išsaugotas visas mano „NodeJS“ programos šaltinio kodas.

Aš tiesiog sukursiu paprastą app.js failą src/ katalogą ir paleiskite paprastą žiniatinklio serverį prievade 8080 tik demonstracijai.

The src/app.js faile yra šios kodų eilutės:

„Dockerfile“ rašymas ir uostų atskleidimas:

Dabar sukurkite a Dockerfile viduje konors ~/myapp katalogą su tokia komanda:

$liestiDockerfile

Dabar įveskite šias eilutes į Dockerfile ir išsaugoti. Ką šios eilutės reiškia, aptarsiu vėliau.

Čia, NUO Alpių: 3.8 reiškia, naudokite Alpių: 3.8 „Docker“ vaizdas yra naujo įvaizdžio, kurį mes kursime iš to, pagrindas Dockerfile .

RUN apk atnaujinimas reiškia, paleiskite apk atnaujinimas komandą pagrindiniame „Docker“ vaizde Alpių: 3.8 .

RUN apk pridėti –no-cache nodejs reiškia, paleiskite apk pridėti komandą įdiegti „NodeJS“ programavimo kalbą Alpių: 3.8 „Docker“ bazinis vaizdas.

KOPIJUOTI ./src /app reiškia, nukopijuokite visus failus iš ~/myapp/src katalogą į /app naujo „Docker“ atvaizdo katalogą, kurį sukursime naudodami Dockerfile .

CMD [/usr/bin/node, /app/app.js] reiškia, paleiskite /app/app.js failą iš naujo sudėtinio rodinio naudojant mazgas dvejetainis, esantis /usr/bin/node .

Galiausiai, į EXPOSE 8080/tcp reiškia, atskleisti arba atidaryti TCP prievadą 8080 į pagrindinį kompiuterį.

Tinkinto „Docker“ vaizdo kūrimas naudojant „Dockerfile“:

Dabar padarykime individualų „Docker“ vaizdą Alpių mazgas: v1 naudojant Dockerfile ką tik sukūrėme.

Pirmiausia įsitikinkite, kad esate ~/myapp/ katalogą ir paleiskite šią komandą, kad sukurtumėte pasirinktinį „Docker“ vaizdą Alpių mazgas: v1 :

$statyti doką-tAlpių mazgas: v1.

Kaip matote, pasirinktinis „Docker“ vaizdas Alpių mazgas: v1 yra kuriamas. Reikalingas bazinis „Docker“ vaizdas ir paketai ištraukiami iš interneto.

Kaip matote, pasirinktinis „Docker“ vaizdas Alpių mazgas: v1 yra sėkmingai sukurtas.

„Custom Docker“ vaizdo testavimas:

Dabar galime išbandyti pasirinktinį „Docker“ vaizdą Alpių mazgas: v1 labai lengvai. Viskas, ką turime padaryti, tai sukurti konteinerį Alpių mazgas: v1 įvaizdį.

Norėdami sukurti „Docker“ konteinerį, paleiskite šią komandą www nuo Alpių mazgas: v1 „Docker“ vaizdas:

$doko bėgimas-d -tai --vardaswww alpine-node: v1

Konteineris www yra sukurtas.

Dabar išsiaiškinkime IP adresą www „Docker“ konteineris su tokia komanda:

$dokeris apžiūri www| sukibimasAdresas

Kaip matote, mano atveju IP adresas yra 172.17.0.3 . Taigi mano parašyta „NodeJS“ programa turėtų būti prieinama iš žiniatinklio naršyklės uoste 8080 šio IP adreso.

Voila! Galiu prieiti prie uosto 8080 mano www „Docker“ konteineris.

Iš esmės taip atskleidžiate tam tikrus prievadus savo pasirinktiniuose „Docker“ vaizduose, kuriuos kuriate naudodami Dockerfile .

TCP ir UDP prievadų atskleidimas naudojant „Dockerfile“:

Ankstesniame šio straipsnio skyriuje parodžiau, kaip atskleisti TCP prievadą naudojant Dockerfile .

Galite lengvai atskleisti TCP prievadą (tarkime, TCP prievadą) 53 ) jūsų Dockerfile su tokia eilute:

POVEIKTI53/tcp

Taip pat galite atskleisti UDP prievadą (tarkime, UDP prievadą) 53 ) su tokia eilute Dockerfile :

POVEIKTI53/udp

Galite vienu metu atskleisti TCP ir UDP prievadą naudodami šias eilutes Dockerfile :

POVEIKTI53/tcp
POVEIKTI53/udp

Jei nenurodote, kokį protokolą (TCP ar UDP) naudoti, TCP naudojamas pagal numatytuosius nustatymus. Pavyzdžiui, jei savo eilutėje parašysite šią eilutę Dockerfile :

POVEIKTI53

Tada „Docker“ manys, kad norite naudoti 53 TCP prievadą.

Kelių prievadų atskleidimas naudojant „Dockerfile“:

Tarkime, kad norite sukurti pasirinktinį MEAN stack Docker atvaizdą. Tokiu atveju jūs naudosite HTTP serverį tam tikrame prievade (tarkime, 80 arba 8080 TCP prievadą), FTP serverį, kuris veikia 21 -uoju TCP prievadu, SQL duomenų bazės serverį (tarkime, MySQL), kuris veikia 3306 TCP prievade, arba „NoSQL“ duomenų bazės serveris (tarkime, „MongoDB“), veikiantis 27017 arba 27018 TCP prievadu, SSH serveris, veikiantis 22 -uoju TCP prievadu. Tai daug prievadų!

Geros naujienos yra; galite atskleisti tiek prievadų, kiek reikia jūsų pasirinktiniame „Docker“ vaizde, sukurtame naudojant Dockerfile .

Pirmiau pateikto pavyzdžio prievadai gali būti atskleisti šiomis eilutėmis Dockerfile :

POVEIKTI80/tcp
POVEIKTI8080/tcp
POVEIKTIdvidešimt vienas/tcp
POVEIKTI22/tcp
POVEIKTI3306/tcp
POVEIKTI27017/tcp
POVEIKTI27018/tcp

Jei norite, galite palikti protokolo specifikaciją, nes „Docker“ pagal nutylėjimą naudoja TCP ir tą patį padaryti su šiomis eilutėmis Dockerfile :

POVEIKTI80
POVEIKTI8080
POVEIKTIdvidešimt vienas
POVEIKTI22
POVEIKTI3306
POVEIKTI27017
POVEIKTI27018

Jei reikia, galite maišyti TCP ir UDP prievadus Dockerfile . Pavyzdžiui, jei naudojate DNS serverį (kuris veikia UDP 53 prievade), kartu su aukščiau pateiktu pavyzdžiu, prie savo Dockerfile .

POVEIKTI80
POVEIKTI8080
POVEIKTIdvidešimt vienas
POVEIKTI22
POVEIKTI53/udp
POVEIKTI3306
POVEIKTI27017
POVEIKTI27018

Taigi taip atskleisite uostus naudodami Dockerfile . Norėdami sužinoti daugiau apie Dockerfile ir atskleisti uostus naudojant Dockerfile , Skaityti Dockerfile informacinis vadovas adresu https://docs.docker.com/engine/reference/builder/#expose

Dėkojame, kad perskaitėte šį straipsnį.