Dockerfile izmantošana portu atklāšanai

Using Dockerfile Expose Ports



Izmantojot esošos Docker attēlus, ir patiešām viegli izveidot pielāgotu Docker attēlu Dockerfile . Parasti cilvēki izmanto minimālu pamata attēlu, piemēram, kalnu vai ubuntu/debian šim nolūkam. Pieņemsim, ka vēlaties izveidot pielāgotu Docker attēlu no savas iecienītākās tīmekļa lietotnes, kas rakstīta NodeJS. Lietotne darbosies ostā 8080 . Pēc noklusējuma jūs nevarēsit piekļūt tīmekļa lietotnei ostā 8080 no jūsu saimniekdatora. Jums būs jāpasaka Docker, ka vēlaties atklāt vai atvērt portu 8080 lai varētu tai piekļūt no sava saimniekdatora.

Šajā rakstā es parādīšu, kā atklāt portus, izmantojot Dockerfile ar reālas pasaules piemēru. Sāksim.







Pirmkārt, mums ir jāizveido projektu direktorijs. Šajā direktorijā jums jāglabā visi projekta faili un a Dockerfile .



Izpildiet šo komandu, lai izveidotu projekta direktoriju myapp/ lietotāju HOME direktorijā un dodieties uz to:



$mkdir~/myapp&& CD~/myapp

Tīmekļa lietotnes sagatavošana:

Tagad izveidojiet direktoriju src/ iekšpusē ~/myapp/ direktoriju ar šādu komandu:

$mkdirsrc

Iekš src/ direktorijā, viss manas NodeJS lietojumprogrammas avota kods tiks saglabāts.

Es vienkārši izveidošu vienkāršu app.js failu mapē src/ direktorijā un palaidiet vienkāršu tīmekļa serveri ostā 8080 tikai demonstrācijai.

The src/app.js failā ir šādas kodu rindas:

Dockerfile rakstīšana un portu eksponēšana:

Tagad izveidojiet a Dockerfile iekš ~/myapp direktoriju ar šādu komandu:

$pieskartiesDockerfile

Tagad ierakstiet šādas rindiņas uz Dockerfile un saglabājiet to. Vēlāk apspriedīšu, ko šīs rindas nozīmē.

Šeit, NO Alpu: 3.8 nozīmē, izmantojiet Alpu: 3.8 Docker attēls ir pamats jaunajam attēlam, ko mēs no tā veidosim Dockerfile .

RUN apk atjauninājums nozīmē, palaist apk atjauninājums komandu Docker bāzes attēlā Alpu: 3.8 .

RUN apk pievienot –no-cache nodejs nozīmē, palaist apk pievienot komandu, lai instalētu programmēšanas valodu NodeJS Alpu: 3.8 Docker bāzes attēls.

KOPĒT ./src /app nozīmē, kopējiet visus failus no ~/myapp/src direktoriju uz /lietotne jaunā Docker attēla direktoriju, kuru mēs izveidosim, izmantojot Dockerfile .

CMD [/usr/bin/node, /app/app.js] nozīmē, palaist /app/app.js failu no jaunā konteinera, izmantojot mezgls binārais, kas atrodas /usr/bin/node .

Visbeidzot, uz EXPOSE 8080/tk nozīmē, atklāt vai atvērt TCP portu 8080 uz saimniekdatoru.

Pielāgota Docker attēla izveide, izmantojot Dockerfile:

Tagad izveidosim pielāgotu Docker attēlu Alpu mezgls: v1 izmantojot Dockerfile ko tikko radījām.

Vispirms pārliecinieties, vai atrodaties ~/myapp/ direktoriju un pēc tam palaidiet šo komandu, lai izveidotu pielāgotu Docker attēlu Alpu mezgls: v1 :

$docker būvēt-tAlpu mezgls: v1.

Kā redzat, pielāgotais Docker attēls Alpu mezgls: v1 tiek veidots. Nepieciešamais Docker bāzes attēls un paketes tiek izvilktas no interneta.

Kā redzat, pielāgotais Docker attēls Alpu mezgls: v1 ir izveidots veiksmīgi.

Custom Docker attēla pārbaude:

Tagad mēs varam pārbaudīt pielāgoto Docker attēlu Alpu mezgls: v1 ļoti viegli. Viss, kas mums jādara, ir jāizveido konteiners Alpu mezgls: v1 attēlu.

Palaidiet šo komandu, lai izveidotu Docker konteineru www no Alpu mezgls: v1 Docker attēls:

$docker run-d -tā -vārdswww kalnu mezgls: v1

Konteiners www ir izveidots.

Tagad noskaidrosim IP adresi www Docker konteiners ar šādu komandu:

$dokeris pārbauda www| satvēriensAdrese

Kā redzat, manā gadījumā IP adrese ir 172.17.0.3 . Tātad manis uzrakstītajai NodeJS lietojumprogrammai vajadzētu būt pieejamai no tīmekļa pārlūkprogrammas ostā 8080 no šīs IP adreses.

Voila! Es varu piekļūt ostai 8080 no manas www Docker konteiners.

Būtībā šādi jūs atklājat noteiktus portus savos pielāgotajos Docker attēlos, kurus veidosit, izmantojot Dockerfile .

TCP un UDP portu atklāšana, izmantojot Dockerfile:

Šī raksta iepriekšējā sadaļā es parādīju, kā atklāt TCP portu, izmantojot Dockerfile .

Jūs varat viegli atklāt TCP portu (teiksim, TCP portu) 53 ) tavā Dockerfile ar šādu rindu:

EKSPOZĒT53/tcp

Varat arī atklāt UDP portu (teiksim, UDP portu) 53 ) ar šādu rindiņu Dockerfile :

EKSPOZĒT53/udp

Jūs varat vienlaikus atklāt TCP un UDP portu ar šādām rindām Dockerfile :

EKSPOZĒT53/tcp
EKSPOZĒT53/udp

Ja nenorādāt, kādu protokolu (TCP vai UDP) izmantot, pēc noklusējuma tiek izmantots TCP. Piemēram, ja savā rindiņā ierakstāt šādu rindu Dockerfile :

EKSPOZĒT53

Tad Docker pieņems, ka vēlaties izmantot TCP portu 53.

Vairāku portu atklāšana, izmantojot Dockerfile:

Pieņemsim, ka vēlaties izveidot pielāgotu MEAN steka Docker attēlu. Šajā gadījumā jūs strādāsit ar HTTP serveri kādā ostā (teiksim, TCP portu 80 vai 8080), FTP serveri, kas darbojas ar TCP portu 21, SQL datu bāzes serveri (teiksim, MySQL), kas darbojas ar TCP portu 3306, vai NoSQL datu bāzes serveris (teiksim, MongoDB), kas darbojas ar TCP portu 27017 vai 27018, SSH serveris, kas darbojas ar TCP portu 22. Tas ir daudz portu!

Labā ziņa ir; jūs varat atklāt tik daudz portu, cik nepieciešams, pielāgotajā Docker attēlā, kas izveidots, izmantojot Dockerfile .

Iepriekšējā piemēra portus var atklāt ar šādām līnijām Dockerfile :

EKSPOZĒT80/tcp
EKSPOZĒT8080/tcp
EKSPOZĒTdivdesmitviens/tcp
EKSPOZĒT22/tcp
EKSPOZĒT3306/tcp
EKSPOZĒT27017/tcp
EKSPOZĒT27018/tcp

Ja vēlaties, varat atstāt protokola specifikāciju, jo Docker pēc noklusējuma izmanto TCP, un darīt to pašu ar šādām rindiņām Dockerfile :

EKSPOZĒT80
EKSPOZĒT8080
EKSPOZĒTdivdesmitviens
EKSPOZĒT22
EKSPOZĒT3306
EKSPOZĒT27017
EKSPOZĒT27018

Ja nepieciešams, savos portos varat sajaukt TCP un UDP portus Dockerfile . Piemēram, ja jūs izmantojat DNS serveri (kas darbojas UDP portā 53), kopā ar iepriekš minēto piemēru pievienojiet savai Dockerfile .

EKSPOZĒT80
EKSPOZĒT8080
EKSPOZĒTdivdesmitviens
EKSPOZĒT22
EKSPOZĒT53/udp
EKSPOZĒT3306
EKSPOZĒT27017
EKSPOZĒT27018

Tātad jūs atklājat ostas, izmantojot Dockerfile . Lai uzzinātu vairāk par Dockerfile un atklājot ostas, izmantojot Dockerfile , Lasīt Dockerfile uzziņu ceļvedis vietnē https://docs.docker.com/engine/reference/builder/#expose

Paldies, ka izlasījāt šo rakstu.