Коришћење Доцкерфиле -а за откривање портова

Using Dockerfile Expose Ports



Створити прилагођену Доцкер слику од постојећих Доцкер слика је заиста лако помоћу Доцкерфиле . Обично људи користе минималну основну слику као што је алпски или убунту/дебиан у ту сврху. Рецимо, желите да креирате прилагођену Доцкер слику своје омиљене веб апликације написане у НодеЈС -у. Апликација ће радити на порту 8080 . Подразумевано нећете моћи да приступите веб апликацији на порту 8080 са вашег рачунара домаћина. Мораћете да кажете Доцкеру да желите да откријете или отворите порт 8080 да бисте му могли приступити са вашег рачунара домаћина.

У овом чланку ћу вам показати како да изложите портове помоћу Доцкерфиле са примером из стварног света. Хајде да почнемо.





Прво морамо да направимо директоријум пројекта. У овом директоријуму треба да задржите све датотеке пројекта и Доцкерфиле .



Покрените следећу команду да бисте креирали директоријум пројекта миапп/ у директоријуму ХОМЕ корисника и идите до њега:



$мкдир~/миапп&& ЦД~/миапп

Припрема веб апликације:

Сада креирајте директоријум срц/ унутар ~/миапп/ директоријум са следећом командом:

$мкдирсрц

У срц/ директоријум, сав изворни код моје НодеЈС апликације ће бити сачуван.

Ја ћу створити једноставно апп.јс датотеку у срц/ директоријуму и покрените једноставан веб сервер на порту 8080 само за демонстрацију.

Тхе срц/апп.јс датотека садржи следеће редове кодова:

Писање Доцкер датотеке и откривање портова:

Сада креирајте Доцкерфиле у ~/миапп директоријум са следећом командом:

$додирДоцкерфиле

Сада унесите следеће редове у Доцкерфиле и сачувајте га. Касније ћу разговарати о томе шта значе ове линије.

Овде, ОД алпског: 3.8 значи, користите алпски: 3.8 Доцкер слика као основа за нову слику коју ћемо од овога градити Доцкерфиле .

РУН апк упдате значи, покрените апк упдате команда у основној Доцкер слици алпски: 3.8 .

ПОКРЕНИ апк адд –не-цацхе нодејс значи, покрените апк адд команда за инсталирање програмског језика НодеЈС у алпски: 3.8 Основна слика Доцкер -а.

ЦОПИ ./срц /апп значи, копирајте све датотеке из ~/миапп/срц директоријум у /апликација директоријум нове слике Доцкера коју ћемо изградити помоћу Доцкерфиле .

ЦМД [/уср/бин/ноде, /апп/апп.јс] значи, покрените /апп/апп.јс датотеку из новог контејнера помоћу чвор бинарни који се налази у /уср/бин/чвор .

Коначно, до ИЗЛОЖБА 8080/тцп значи, открити или отворити ТЦП порт 8080 на главни рачунар.

Креирање прилагођене Доцкер слике помоћу Доцкерфиле -а:

Сада направимо прилагођену слику Доцкера алпски чвор: в1 помоћу Доцкерфиле које смо управо створили.

Прво се уверите да сте у ~/миапп/ директоријум, а затим покрените следећу команду да бисте креирали прилагођену слику Доцкера алпски чвор: в1 :

$доцкер буилдалпски чвор: в1.

Као што видите, прилагођена Доцкер слика алпски чвор: в1 се ствара. Потребна основна Доцкер слика и пакети се повлаче са интернета.

Као што видите, прилагођена Доцкер слика алпски чвор: в1 је успешно креиран.

Тестирање прилагођене слике Доцкер -а:

Сада можемо да тестирамо прилагођену слику Доцкера алпски чвор: в1 врло лако. Све што треба да урадимо је да направимо контејнер од алпски чвор: в1 слика.

Покрените следећу команду да бисте креирали Доцкер контејнер ввв од алпски чвор: в1 Доцкер слика:

$доцкер рун -то --намеввв алпски чвор: в1

Контејнер ввв је створен.

Сада сазнајмо ИП адресу ввв Доцкер контејнер са следећом командом:

$доцкер прегледати ввв| дршкаАдреса

Као што видите, у мом случају, ИП адреса је 172.17.0.3 . Тако да би апликација НодеЈС коју сам написао требала бити доступна из веб прегледача на порту 8080 ове ИП адресе.

Воила! Могу приступити порту 8080 од мојих ввв Доцкер контејнер.

То је у основи начин на који излажете одређене портове у прилагођеним Доцкер сликама које ћете градити Доцкерфиле .

Излагање ТЦП и УДП портова помоћу Доцкерфиле -а:

У претходном одељку овог чланка показао сам вам како да откријете ТЦП порт помоћу а Доцкерфиле .

Можете лако изложити ТЦП порт (рецимо ТЦП порт) 53 ) у вашем Доцкерфиле са следећом линијом:

ЕКСПОСЕ53/тцп

Такође можете изложити УДП порт (Рецимо УДП порт 53 ) са следећом линијом у вашем Доцкерфиле :

ЕКСПОСЕ53/удп

Можете открити ТЦП и УДП порт истовремено са следећим редовима у вашем Доцкерфиле :

ЕКСПОСЕ53/тцп
ЕКСПОСЕ53/удп

Ако не наведете који протокол (ТЦП или УДП) ћете користити, ТЦП се подразумевано користи. На пример, ако у свој следећи ред упишете следећи ред Доцкерфиле :

ЕКСПОСЕ53

Тада ће Доцкер претпоставити да желите да користите ТЦП порт 53.

Излагање више портова помоћу Доцкерфиле -а:

Рецимо да желите да креирате прилагођену слику МЕАН стацк Доцкер. У овом случају, ви ћете покретати ХТТП сервер на неком порту (рецимо ТЦП порт 80 или 8080), ФТП сервер који ради на ТЦП порту 21, СКЛ сервер базе података (рецимо МиСКЛ) који ради на ТЦП порту 3306, или НоСКЛ сервер базе података (рецимо МонгоДБ) који ради на ТЦП порту 27017 или 27018, ССХ сервер који ради на ТЦП порту 22. То је много портова!

Добра вест је; можете изложити онолико портова колико је потребно на вашој прилагођеној Доцкер слици направљеној помоћу Доцкерфиле .

Портови у горњем примеру могу бити изложени следећим редовима у вашем Доцкерфиле :

ЕКСПОСЕ80/тцп
ЕКСПОСЕ8080/тцп
ЕКСПОСЕдвадесет један/тцп
ЕКСПОСЕ22/тцп
ЕКСПОСЕ3306/тцп
ЕКСПОСЕ27017/тцп
ЕКСПОСЕ27018/тцп

Ако желите, можете напустити спецификацију протокола јер Доцкер подразумевано користи ТЦП и учинити исту ствар са следећим редовима у вашем Доцкерфиле :

ЕКСПОСЕ80
ЕКСПОСЕ8080
ЕКСПОСЕдвадесет један
ЕКСПОСЕ22
ЕКСПОСЕ3306
ЕКСПОСЕ27017
ЕКСПОСЕ27018

Ако је потребно, можете мешати ТЦП и УДП портове у свом Доцкерфиле . На пример, ако покренете ДНС сервер (који ради на УДП порту 53), заједно са горњим примером, додали бисте следеће редове у Доцкерфиле .

ЕКСПОСЕ80
ЕКСПОСЕ8080
ЕКСПОСЕдвадесет један
ЕКСПОСЕ22
ЕКСПОСЕ53/удп
ЕКСПОСЕ3306
ЕКСПОСЕ27017
ЕКСПОСЕ27018

Дакле, тако излажете портове помоћу Доцкерфиле . Да бисте сазнали више о Доцкерфиле и излагање портова помоћу Доцкерфиле , Прочитајте Доцкерфиле референтни водич на хттпс://доцс.доцкер.цом/енгине/референце/буилдер/#екпосе

Хвала што сте прочитали овај чланак.