Paggamit ng Dockerfile upang Ilantad ang Mga Port

Using Dockerfile Expose Ports



Napakadali upang lumikha ng isang pasadyang imahe ng Docker mula sa umiiral na mga imahe ng Docker na ginagamit Dockerfile . Karaniwan ang mga tao ay gumagamit ng isang minimal na imaheng pang-base tulad ng alpine o ubuntu / debian para sa ganung kadahilan. Sabihin nating, nais mong lumikha ng isang pasadyang imahe ng Docker ng iyong paboritong web app na nakasulat sa NodeJS. Tatakbo ang app sa port 8080 . Bilang default, hindi mo ma-access ang web app sa port 8080 mula sa iyong host machine. Sasabihin mo sa Docker na nais mong ilantad o buksan ang port 8080 upang ma-access ito mula sa iyong host machine.

Sa artikulong ito, ipapakita ko sa iyo ang isang kung paano ilantad ang mga port na ginagamit Dockerfile na may isang halimbawa sa totoong mundo. Magsimula na tayo.







Una, kailangan naming lumikha ng isang direktoryo ng proyekto. Sa direktoryo na ito, dapat mong itago ang lahat ng mga file ng proyekto at a Dockerfile .



Patakbuhin ang sumusunod na utos upang lumikha ng isang direktoryo ng proyekto myapp / sa direktoryo ng HOME ng iyong mga gumagamit at mag-navigate dito:



$mkdir~/myapp&& CD~/myapp

Pagkuha ng Web App Ready:

Ngayon lumikha ng isang direktoryo src / sa loob ng ~ / myapp / direktoryo na may sumusunod na utos:

$mkdirsrc

Nasa src / direktoryo, ang lahat ng mga source code ng aking application na NodeJS ay panatilihin.

Lilikha lang ako ng isang simple app.js file sa src / direktoryo at magpatakbo ng isang simpleng web server sa port 8080 para lang sa demonstration.

Ang src / app.js naglalaman ang file ng mga sumusunod na linya ng mga code:

Pagsulat ng Dockerfile at Exposing Ports:

Ngayon lumikha ng a Dockerfile nasa ~ / myapp direktoryo na may sumusunod na utos:

$hawakanDockerfile

I-type ngayon ang mga sumusunod na linya sa Dockerfile at i-save ito Tatalakayin ko kung ano ang ibig sabihin ng mga linyang ito sa paglaon.

Dito, MULA sa alpine: 3.8 ibig sabihin, gamitin ang alpine: 3.8 Ang imahe ng docker bilang batayan para sa bagong imahe na gagawin namin mula rito Dockerfile .

Patakbuhin ang pag-update ng apk ibig sabihin, patakbuhin ang pag-update ng apk utos sa batayang imahe ng Docker alpine: 3.8 .

RUN apk add –no-cache nodejs ibig sabihin, patakbuhin ang apk idagdag utos na i-install ang wika ng programa ng NodeJS sa alpine: 3.8 Larawan ng base ng docker.

COPY ./src / app nangangahulugan, kopyahin ang lahat ng mga file mula sa ~ / myapp / src direktoryo sa / app direktoryo ng bagong imahe ng Docker na itatayo namin gamit ang Dockerfile .

CMD [/ usr / bin / node, /app/app.js] ibig sabihin, patakbuhin ang /app/app.js file mula sa bagong lalagyan gamit node binary matatagpuan sa / usr / bin / node .

Panghuli, sa EXPose 8080 / tcp nangangahulugang, ilantad o buksan ang TCP port 8080 sa host computer.

Lumilikha ng Pasadyang Imahe ng Docker Gamit ang Dockerfile:

Ngayon gumawa tayo ng isang pasadyang imahe ng Docker alpine-node: v1 gamit ang Dockerfile na nilikha lang natin.

Siguraduhin muna na nasa loob ka ng ~ / myapp / direktoryo at pagkatapos ay patakbuhin ang sumusunod na utos upang likhain ang iyong pasadyang imahe ng Docker alpine-node: v1 :

$docker build-talpine-node: v1.

Tulad ng nakikita mo, ang pasadyang imahe ng Docker alpine-node: v1 ay nilikha. Ang kinakailangang pangunahing imahe ng Docker at mga pakete ay hinihila mula sa internet.

Tulad ng nakikita mo, ang pasadyang imahe ng Docker alpine-node: v1 ay matagumpay na nilikha.

Pagsubok sa Custom na Docker Image:

Ngayon ay maaari na nating subukan ang pasadyang imahe ng Docker alpine-node: v1 napakadali. Ang kailangan lang nating gawin ay lumikha ng isang lalagyan mula sa alpine-node: v1 imahe

Patakbuhin ang sumusunod na utos upang lumikha ng isang lalagyan ng Docker www galing sa alpine-node: v1 Larawan ng docker:

$patakbo ng docker-d -ito --pangalanwww alpine-node: v1

Ang lalagyan www ay nilikha.

Alamin natin ngayon ang IP address ng www Lalagyan ng pantalan na may sumusunod na utos:

$inspeksyon ng docker www| mahigpit na pagkakahawakAddress

Tulad ng nakikita mo, sa aking kaso, ang IP address ay 172.17.0.3 . Kaya ang application na NodeJS na isinulat ko ay dapat ma-access mula sa web browser sa port 8080 ng IP address na ito.

Voila! Maaari kong ma-access ang port 8080 ng aking www Lalagyan ng docker

Karaniwan iyan kung paano mo ilalantad ang ilang mga port sa iyong pasadyang mga imahe ng Docker na iyong gagamitin na ginagamit Dockerfile .

Exposing TCP at UDP Ports Gamit ang Dockerfile:

Sa naunang seksyon ng artikulong ito, ipinakita ko sa iyo kung paano ilantad ang isang TCP port gamit ang a Dockerfile .

Madali mong mailantad ang isang TCP port (sabihin nating TCP port 53 ) sa iyong Dockerfile kasama ang sumusunod na linya:

I-expose53/tcp

Maaari mo ring ilantad ang isang UDP port (Sabihin nating UDP port 53 ) kasama ang sumusunod na linya sa iyong Dockerfile :

I-expose53/udp

Maaari mong ilantad ang TCP at UDP port nang sabay sa mga sumusunod na linya sa iyong Dockerfile :

I-expose53/tcp
I-expose53/udp

Kung hindi mo tinukoy kung anong protocol (TCP o UDP) ang gagamitin, ang TCP ay ginagamit bilang default. Halimbawa, kung isusulat mo ang sumusunod na linya sa iyong Dockerfile :

I-expose53

Pagkatapos ay ipalagay ng Docker na nais mong gamitin ang TCP port 53.

Paglantad ng Maramihang Mga Ports Gamit ang Dockerfile:

Sabihin nating nais mong lumikha ng isang pasadyang MEAN stack na imahe ng Docker. Sa kasong ito, nagpapatakbo ka ng isang HTTP server sa ilang port (sabihin nating TCP port 80 o 8080), isang FTP server na tumatakbo sa TCP port 21, isang SQL database server (sabihin nating MySQL) na tumatakbo sa TCP port 3306, o NoSQL database server (sabihin nating MongoDB) na tumatakbo sa TCP port 27017 o 27018, isang SSH server na tumatakbo sa TCP port 22. Iyon ay maraming mga port!

Ang magandang balita ay; maaari mong ilantad ang maraming mga port kung kinakailangan sa iyong pasadyang imahe ng Docker na nilikha gamit ang Dockerfile .

Ang mga port sa halimbawa sa itaas ay maaaring mailantad sa mga sumusunod na linya sa iyong Dockerfile :

I-expose80/tcp
I-expose8080/tcp
I-exposedalawampu't isa/tcp
I-expose22/tcp
I-expose3306/tcp
I-expose27017/tcp
I-expose27018/tcp

Kung nais mo, maaari mong iwanan ang pagtutukoy ng protocol tulad ng paggamit ng Docker ng TCP bilang default at gawin ang parehong bagay sa mga sumusunod na linya sa iyong Dockerfile :

I-expose80
I-expose8080
I-exposedalawampu't isa
I-expose22
I-expose3306
I-expose27017
I-expose27018

Kung kailangan mo, maaari mong ihalo ang mga port ng TCP at UDP sa iyong Dockerfile . Halimbawa, kung nagpapatakbo ka ng DNS server (na tumatakbo sa UDP port 53), kasama ang halimbawa sa itaas, idaragdag mo ang mga sumusunod na linya sa iyong Dockerfile .

I-expose80
I-expose8080
I-exposedalawampu't isa
I-expose22
I-expose53/udp
I-expose3306
I-expose27017
I-expose27018

Kaya't paano mo ilantad ang paggamit ng mga port Dockerfile . Upang matuto nang higit pa tungkol sa Dockerfile at paglantad sa mga pantalan gamit Dockerfile , Basahin ang Dockerfile sanggunian sa sanggunian sa https://docs.docker.com/engine/referensi/builder/#expose

Salamat sa pagbabasa ng artikulong ito.