Използване на Dockerfile за излагане на портове

Using Dockerfile Expose Ports



Създаването на персонализиран образ на Docker от съществуващите изображения на Docker е наистина лесно, като се използва Докер файл . Обикновено хората използват минимално базово изображение като напр алпийски или ubuntu/debian за тази цел. Да речем, че искате да създадете персонализиран образ на Docker на любимото си уеб приложение, написано в NodeJS. Приложението ще работи на порт 8080 . По подразбиране няма да имате достъп до уеб приложението на порта 8080 от вашата хост машина. Ще трябва да кажете на Docker, че искате да изложите или отворите порта 8080 за да имате достъп до него от вашата хост машина.

В тази статия ще ви покажа как да излагате портове с помощта Докер файл с пример от реалния свят. Да започваме.







Първо, трябва да създадем директория на проект. В тази директория трябва да съхранявате всички файлове на проекта и Докер файл .



Изпълнете следната команда, за да създадете директория на проект myapp/ в директорията HOME на вашите потребители и отидете до нея:



$mkdir~/myapp&& CD~/myapp

Подготовка на уеб приложението:

Сега създайте директория src/ вътре в ~/myapp/ директория със следната команда:

$mkdirsrc

В src/ директория, ще се запази целият изходен код на моето приложение NodeJS.

Ще създам просто app.js файл в src/ директория и стартирайте прост уеб сървър на порта 8080 само за демонстрация.

The src/app.js файлът съдържа следните редове кодове:

Писане на Dockerfile и излагане на портове:

Сега създайте a Докер файл в ~/myapp директория със следната команда:

$докосванеДокер файл

Сега въведете следните редове към Докер файл и го запазете. По -късно ще обсъдя какво означават тези редове.

Тук, ОТ алпийски: 3.8 означава, използвайте алпийски: 3.8 Докер изображение като основа за новото изображение, което ще изградим от това Докер файл .

RUN apk актуализация означава, стартирайте актуализация на apk команда в базовия образ на Docker алпийски: 3.8 .

RUN apk add –no-cache nodejs означава, стартирайте apk добавяне команда за инсталиране на езика за програмиране NodeJS в алпийски: 3.8 Основно изображение на Docker.

COPY ./src /app означава, копирайте всички файлове от ~/myapp/src директория към /приложение директория на новия образ на Docker, който ще изградим с помощта на Докер файл .

CMD [/usr/bin/node, /app/app.js] означава, стартирайте /app/app.js файл от новия контейнер с помощта възел двоичен файл, намиращ се в /usr/bin/node .

Накрая, за да ЕКСПОЗИРАНЕ 8080/tcp означава, да изложите или отворите TCP порта 8080 към хост компютъра.

Създаване на персонализирано изображение на Docker с помощта на Dockerfile:

Сега нека направим персонализирано изображение на Docker алпийски възел: v1 използвайки Докер файл които току -що създадохме.

Първо се уверете, че сте в ~/myapp/ директория и след това изпълнете следната команда, за да създадете персонализиран образ на Docker алпийски възел: v1 :

$docker build-Tалпийски възел: v1.

Както можете да видите, персонализираното изображение на Docker алпийски възел: v1 се създава. Необходимият основен образ на Docker и пакетите се изтеглят от интернет.

Както можете да видите, персонализираното изображение на Docker алпийски възел: v1 е създаден успешно.

Тестване на персонализираното изображение на Docker:

Сега можем да тестваме персонализирания образ на Docker алпийски възел: v1 много лесно. Всичко, което трябва да направим, е да създадем контейнер от алпийски възел: v1 образ.

Изпълнете следната команда, за да създадете Docker контейнер www от алпийски възел: v1 Изображение на Docker:

$докер бягане -то -имеwww alpine-node: v1

Контейнерът www е създаден.

Сега нека разберем IP адреса на www Docker контейнер със следната команда:

$docker инспектира www| захващанеАдрес

Както можете да видите, в моя случай IP адресът е 172.17.0.3 . Така че приложението NodeJS, което написах, трябва да бъде достъпно от уеб браузъра на порта 8080 на този IP адрес.

Вола! Имам достъп до порта 8080 на моите www Докер контейнер.

По принцип така излагате определени портове във вашите персонализирани изображения на Docker, които ще изграждате Докер файл .

Излагане на TCP и UDP портове с помощта на Dockerfile:

В по -ранния раздел на тази статия ви показах как да изложите TCP порт с помощта на Докер файл .

Можете лесно да изложите TCP порт (да речем TCP порт 53 ) във вашия Докер файл със следния ред:

ЕКСПОЗИЦИЯ53/tcp

Можете също така да изложите UDP порт (Да кажем UDP порт 53 ) със следния ред във вашия Докер файл :

ЕКСПОЗИЦИЯ53/udp

Можете да изложите TCP и UDP порт едновременно със следните редове във вашия Докер файл :

ЕКСПОЗИЦИЯ53/tcp
ЕКСПОЗИЦИЯ53/udp

Ако не посочите какъв протокол (TCP или UDP) да използвате, TCP се използва по подразбиране. Например, ако напишете следния ред във вашия Докер файл :

ЕКСПОЗИЦИЯ53

Тогава Docker ще приеме, че искате да използвате TCP порт 53.

Излагане на множество портове с помощта на Dockerfile:

Да предположим, че искате да създадете персонализирано изображение на стека Docker в Docker. В този случай ще работите с HTTP сървър на някакъв порт (да речем TCP порт 80 или 8080), FTP сървър, който работи на TCP порт 21, SQL сървър на база данни (да речем MySQL), който работи на TCP порт 3306, или сървър на база данни NoSQL (да речем MongoDB), който работи на TCP порт 27017 или 27018, SSH сървър, който работи на TCP порт 22. Това са много портове!

Добрата новина е; можете да изложите колкото се може повече портове на вашето персонализирано изображение на Docker, създадено с помощта Докер файл .

Портовете в горния пример могат да бъдат изложени със следните редове във вашия Докер файл :

ЕКСПОЗИЦИЯ80/tcp
ЕКСПОЗИЦИЯ8080/tcp
ЕКСПОЗИЦИЯдвадесет и едно/tcp
ЕКСПОЗИЦИЯ22/tcp
ЕКСПОЗИЦИЯ3306/tcp
ЕКСПОЗИЦИЯ27017/tcp
ЕКСПОЗИЦИЯ27018/tcp

Ако искате, можете да напуснете спецификацията на протокола, тъй като Docker използва TCP по подразбиране и да направи същото със следните редове във вашия Докер файл :

ЕКСПОЗИЦИЯ80
ЕКСПОЗИЦИЯ8080
ЕКСПОЗИЦИЯдвадесет и едно
ЕКСПОЗИЦИЯ22
ЕКСПОЗИЦИЯ3306
ЕКСПОЗИЦИЯ27017
ЕКСПОЗИЦИЯ27018

Ако е необходимо, можете да смесвате TCP и UDP портове във вашия Докер файл . Например, ако стартирате DNS сървър (който работи на UDP порт 53), заедно с горния пример, бихте добавили следните редове към вашия Докер файл .

ЕКСПОЗИЦИЯ80
ЕКСПОЗИЦИЯ8080
ЕКСПОЗИЦИЯдвадесет и едно
ЕКСПОЗИЦИЯ22
ЕКСПОЗИЦИЯ53/udp
ЕКСПОЗИЦИЯ3306
ЕКСПОЗИЦИЯ27017
ЕКСПОЗИЦИЯ27018

Така че излагате портовете с помощта Докер файл . За да научите повече за Докер файл и излагане на портове с помощта Докер файл , прочетете Докер файл справочно ръководство на https://docs.docker.com/engine/reference/builder/#expose

Благодаря, че прочетохте тази статия.