Použitie súboru Dockerfile na odhalenie portov

Using Dockerfile Expose Ports



Je skutočne ľahké vytvoriť vlastný obrázok Dockera z existujúcich obrázkov Dockera pomocou Súbor docker . Ľudia zvyčajne používajú minimálny základný obrázok, ako napr vysokohorský alebo ubuntu/debian na ten účel. Povedzme, že chcete vytvoriť vlastný obrázok Dockera vašej obľúbenej webovej aplikácie napísaný v NodeJS. Aplikácia pobeží na porte 8080 . V predvolenom nastavení nebudete mať prístup k webovej aplikácii na porte 8080 z hostiteľského počítača. Budete musieť Dockerovi povedať, že chcete odhaliť alebo otvoriť port 8080 aby ste k nemu mali prístup z hostiteľského počítača.

V tomto článku vám ukážem, ako odhaliť porty pomocou Súbor docker na príklade zo skutočného sveta. Začnime.







Najprv musíme vytvoriť adresár projektu. V tomto adresári by ste mali uchovávať všetky súbory projektu a Súbor docker .



Spustením nasledujúceho príkazu vytvorte adresár projektu myapp/ vo vašom domovskom adresári HOME a prejdite naň:



$mkdir~/myapp&& CD~/myapp

Príprava webovej aplikácie:

Teraz vytvorte adresár src/ vnútri ~/myapp/ adresár s nasledujúcim príkazom:

$mkdirsrc

V src/ adresári, budú zachované všetky zdrojové kódy mojej aplikácie NodeJS.

Vytvorím jednoducho app.js súbor v súbore src/ adresári a spustite jednoduchý webový server na porte 8080 len na ukážku.

The src/app.js súbor obsahuje nasledujúce riadky kódov:

Zápis dockerfile a odhalenie portov:

Teraz vytvorte a Súbor docker v ~/myapp adresár s nasledujúcim príkazom:

$dotýkať saSúbor docker

Teraz zadajte do nasledujúcich riadkov text Súbor docker a ulož to. Čo tieto riadky znamenajú, prediskutujem neskôr.

Tu, Z alpského: 3.8 znamená použiť vysokohorský: 3,8 Docker image ako základ pre nový obrázok, ktorý z toho budeme budovať Súbor docker .

SPUSTIŤ aktualizáciu apk znamená spustiť aktualizácia apk príkaz v základnom obrázku Dockera vysokohorský: 3,8 .

SPÚŠŤAJTE apk a pridajte do pamäte cache nodejs znamená spustiť apk pridať príkaz na inštaláciu programovacieho jazyka NodeJS do súboru vysokohorský: 3,8 Základný obrázok Dockera.

KOPÍROVAŤ ./src /app znamená skopírovať všetky súbory z ~/myapp/src adresár do /app adresár nového obrazu Dockera, ktorý vytvoríme pomocou súboru Súbor docker .

CMD [/usr/bin/node, /app/app.js] znamená spustiť /app/app.js súbor z nového kontajnera pomocou uzol binárne umiestnené v /usr/bin/uzol .

Nakoniec, aby VYSTAVIŤ 8080/tcp znamená vystaviť alebo otvoriť port TCP 8080 na hostiteľský počítač.

Vytvorenie vlastného obrázku dockera pomocou súboru Dockerfile:

Teraz urobíme vlastný obrázok Dockera alpský uzol: v1 pomocou Súbor docker ktoré sme práve vytvorili.

Najprv sa uistite, že ste v ~/myapp/ adresára a potom spustením nasledujúceho príkazu vytvorte svoj vlastný obrázok Dockera alpský uzol: v1 :

$docker build-talpský uzol: v1.

Ako vidíte, vlastný obrázok Dockera alpský uzol: v1 sa vytvára. Požadovaný základný obrázok Dockera a balíky sa sťahujú z internetu.

Ako vidíte, vlastný obrázok Dockera alpský uzol: v1 je úspešne vytvorený.

Testovanie vlastného obrázku dockera:

Teraz môžeme otestovať vlastný obrázok Dockera alpský uzol: v1 veľmi ľahko. Všetko, čo musíme urobiť, je vytvoriť z neho kontajner alpský uzol: v1 obrázok.

Spustite nasledujúci príkaz a vytvorte kontajner Docker www z alpský uzol: v1 Obrázok doku:

$docker run-d -to je --názovwww alpský uzol: v1

Kontajner www je vytvorený.

Teraz zistime IP adresu servera www Docker kontajner s nasledujúcim príkazom:

$docker inspect www| uchopenieAdresa

Ako vidíte, v mojom prípade je adresa IP 172,17.0,3 . Takže aplikácia NodeJS, ktorú som napísal, by mala byť prístupná z webového prehliadača na porte 8080 tejto IP adresy.

Voila! Mám prístup k portu 8080 z môjho www Dokovací kontajner.

V zásade takto odhalíte určité porty vo svojich vlastných obrázkoch Dockera, pomocou ktorých budete vytvárať Súbor docker .

Vystavenie portov TCP a UDP pomocou súboru Dockerfile:

V predchádzajúcej časti tohto článku som vám ukázal, ako odhaliť port TCP pomocou súboru Súbor docker .

Port TCP (povedzme port TCP) môžete ľahko odhaliť 53 ) vo vašom Súbor docker s nasledujúcim riadkom:

EXPOZÍCIA53/tcp

Môžete tiež odhaliť port UDP (povedzme port UDP 53 ) s nasledujúcim riadkom vo vašom Súbor docker :

EXPOZÍCIA53/udp

Port TCP a UDP môžete vystaviť súčasne s nasledujúcimi riadkami vo vašom Súbor docker :

EXPOZÍCIA53/tcp
EXPOZÍCIA53/udp

Ak nezadáte, ktorý protokol (TCP alebo UDP) sa má použiť, štandardne sa použije TCP. Ak napríklad napíšete nasledujúci riadok do súboru Súbor docker :

EXPOZÍCIA53

Potom Docker bude predpokladať, že chcete použiť port TCP 53.

Vystavenie viacerých portov pomocou súboru Dockerfile:

Povedzme, že chcete vytvoriť vlastný obrázok Dockera MEAN stack. V takom prípade budete používať server HTTP na nejakom porte (povedzme TCP port 80 alebo 8080), FTP server, ktorý beží na TCP porte 21, databázový server SQL (povedzme MySQL), ktorý beží na TCP porte 3306, alebo databázový server NoSQL (povedzme MongoDB), ktorý beží na porte TCP 27017 alebo 27018, server SSH, ktorý beží na TCP porte 22. To je veľa portov!

Dobrou správou je; na svojom vlastnom obrázku Dockera vytvorenom pomocou môžete odhaliť toľko portov, koľko je potrebné Súbor docker .

Porty vo vyššie uvedenom príklade je možné odhaliť pomocou nasledujúcich riadkov vo vašom Súbor docker :

EXPOZÍCIA80/tcp
EXPOZÍCIA8080/tcp
EXPOZÍCIAdvadsaťjeden/tcp
EXPOZÍCIA22/tcp
EXPOZÍCIA3306/tcp
EXPOZÍCIA27017/tcp
EXPOZÍCIA27018/tcp

Ak chcete, môžete ponechať špecifikáciu protokolu, pretože Docker štandardne používa TCP a to isté urobte s nasledujúcimi riadkami vo svojom Súbor docker :

EXPOZÍCIA80
EXPOZÍCIA8080
EXPOZÍCIAdvadsaťjeden
EXPOZÍCIA22
EXPOZÍCIA3306
EXPOZÍCIA27017
EXPOZÍCIA27018

Ak potrebujete, môžete kombinovať porty TCP a UDP vo svojom Súbor docker . Ak napríklad používate server DNS (ktorý beží na porte UDP 53), spolu s vyššie uvedeným príkladom by ste do svojho servera pridali nasledujúce riadky Súbor docker .

EXPOZÍCIA80
EXPOZÍCIA8080
EXPOZÍCIAdvadsaťjeden
EXPOZÍCIA22
EXPOZÍCIA53/udp
EXPOZÍCIA3306
EXPOZÍCIA27017
EXPOZÍCIA27018

Takto teda odhalíte porty pomocou Súbor docker . Ak sa chcete dozvedieť viac o Súbor docker a odhalenie portov pomocou Súbor docker , čítať Súbor docker referenčná príručka na adrese https://docs.docker.com/engine/reference/builder/#expose

Ďakujem za prečítanie tohto článku.