В тази статия ще ви покажа как да излагате портове с помощта Докер файл с пример от реалния свят. Да започваме.
Първо, трябва да създадем директория на проект. В тази директория трябва да съхранявате всички файлове на проекта и Докер файл .
Изпълнете следната команда, за да създадете директория на проект 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
Благодаря, че прочетохте тази статия.