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| uchopenieAdresaAko 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/tcpMôžete tiež odhaliť port UDP (povedzme port UDP 53 ) s nasledujúcim riadkom vo vašom Súbor docker :
EXPOZÍCIA53/udpPort TCP a UDP môžete vystaviť súčasne s nasledujúcimi riadkami vo vašom Súbor docker :
EXPOZÍCIA53/tcpEXPOZÍ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ÍCIA53Potom 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/tcpEXPOZÍ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ÍCIA80EXPOZÍ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ÍCIA80EXPOZÍ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.