Š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| sukibimasAdresasKaip 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/tcpTaip pat galite atskleisti UDP prievadą (tarkime, UDP prievadą) 53 ) su tokia eilute Dockerfile :
POVEIKTI53/udpGalite vienu metu atskleisti TCP ir UDP prievadą naudodami šias eilutes Dockerfile :
POVEIKTI53/tcpPOVEIKTI53/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 :
POVEIKTI53Tada „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/tcpPOVEIKTI8080/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 :
POVEIKTI80POVEIKTI8080
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 .
POVEIKTI80POVEIKTI8080
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į.