Dockerfile használata portok feltárására

Using Dockerfile Expose Ports



Valóban könnyű egyedi Docker -képet létrehozni a meglévő Docker -képek használatával Dockerfile . Általában az emberek minimális alapképet használnak, mint pl alpesi vagy ubuntu/debian arra a célra. Tegyük fel, hogy egyéni Docker -képet szeretne létrehozni kedvenc webalkalmazásáról NodeJS -ben. Az alkalmazás a porton fog futni 8080 . Alapértelmezés szerint nem tudja elérni a webalkalmazást a porton 8080 a fogadó gépről. Meg kell mondania a Dockernek, hogy ki akarja nyitni vagy megnyitni a portot 8080 hogy hozzáférhessen a gazdagépéről.

Ebben a cikkben megmutatom, hogyan lehet kitenni a portokat Dockerfile valós példával. Lássunk neki.







Először létre kell hoznunk egy projektkönyvtárat. Ebben a könyvtárban az összes projektfájlt és a Dockerfile .



Futtassa a következő parancsot egy projektkönyvtár létrehozásához myapp/ a felhasználók HOME könyvtárában, és navigáljon hozzá:



$mkdir~/myapp&& CD~/myapp

A webalkalmazás előkészítése:

Most hozzon létre egy könyvtárat src/ benne ~/myapp/ könyvtárat a következő paranccsal:

$mkdirsrc

Ban,-ben src/ könyvtárban, a NodeJS alkalmazásom összes forráskódja megmarad.

Csak létrehozok egy egyszerűt app.js fájlt a src/ könyvtárat, és futtasson egy egyszerű webszervert a porton 8080 csak demonstrációra.

Az src/app.js fájl a következő kódsorokat tartalmazza:

Dockerfile írása és portok megjelenítése:

Most hozzon létre egy Dockerfile ban,-ben ~/myapp könyvtárat a következő paranccsal:

$érintésDockerfile

Most írja be a következő sorokat a Dockerfile és mentse el. Később még kitérek ezekre a sorokra.

Itt, Alpesi: 3.8 azt jelenti, használja a alpesi: 3.8 Docker kép, mint az új kép alapja, amelyet ebből építünk Dockerfile .

RUN apk frissítés azt jelenti, futtassa a apk frissítés parancsot a Docker alapképében alpesi: 3.8 .

RUN apk add –no-cache nodejs azt jelenti, futtassa a apk add parancsot a NodeJS programozási nyelv telepítéséhez alpesi: 3.8 Docker alapkép.

MÁSOLÁS ./src /app azt jelenti, hogy másolja az összes fájlt a ~/myapp/src könyvtárat a /app könyvtára az új Docker -képnek, amelyet a Dockerfile .

CMD [/usr/bin/node, /app/app.js] azt jelenti, futtassa a /app/app.js fájlt az új tárolóból csomópont ben található bináris /usr/bin/node .

Végül, hogy EXPOSE 8080/tcp azt jelenti, hogy tegye ki vagy nyissa meg a TCP portot 8080 a gazdagéphez.

Egyéni Docker -kép létrehozása a Dockerfile használatával:

Most készítsünk egyedi Docker -képet alpesi csomópont: v1 használni a Dockerfile amit most alkottunk.

Először győződjön meg arról, hogy benne van a ~/myapp/ könyvtárat, majd futtassa a következő parancsot az egyéni Docker -kép létrehozásához alpesi csomópont: v1 :

$dokkoló épít-talpesi csomópont: v1.

Mint látható, az egyéni Docker -kép alpesi csomópont: v1 készül. A szükséges alap Docker -kép és csomagok az internetről származnak.

Mint látható, az egyéni Docker -kép alpesi csomópont: v1 sikeresen létrejön.

Az egyéni dokkoló képének tesztelése:

Most tesztelhetjük az egyéni Docker -képet alpesi csomópont: v1 nagyon könnyen. Csak annyit kell tennünk, hogy konténert készítünk belőle alpesi csomópont: v1 kép.

Futtassa a következő parancsot Docker -tároló létrehozásához www tól alpesi csomópont: v1 Docker kép:

$dokkoló futás-d -azt --névwww alpesi csomópont: v1

A konténer www létrehozva.

Most megtudjuk a www Docker konténer a következő paranccsal:

$dokkoló ellenőrizze www| markolatCím

Mint láthatja, az én esetemben az IP -cím az 172,17.0.3 . Tehát az általam írt NodeJS alkalmazásnak elérhetőnek kell lennie a port böngészőjéből 8080 ennek az IP -címnek.

Voálá! El tudom érni a portot 8080 az enyémből www Docker konténer.

Alapvetően így teheti ki bizonyos portokat az egyéni Docker -képeken, amelyeket használni fog Dockerfile .

TCP és UDP portok leleplezése a Dockerfile használatával:

Ennek a cikknek a korábbi szakaszában megmutattuk, hogyan teheti ki a TCP -portot a Dockerfile .

Könnyen felfedheti a TCP -portot (mondjuk a TCP -portot) 53 ) a tiédben Dockerfile a következő sorral:

EXPOSE53/tcp

Ki is tehet egy UDP portot (mondjuk UDP portot) 53 ) a következő sorral Dockerfile :

EXPOSE53/udp

A TCP és az UDP portot egyszerre teheti ki a következő sorokkal Dockerfile :

EXPOSE53/tcp
EXPOSE53/udp

Ha nem adja meg, hogy melyik protokollt (TCP vagy UDP) használja, akkor alapértelmezés szerint a TCP -t használja. Például, ha a következő sort írja be Dockerfile :

EXPOSE53

Ekkor a Docker feltételezi, hogy az 53 -as TCP -portot szeretné használni.

Több port megjelenítése a Dockerfile használatával:

Tegyük fel, hogy egyéni MEAN stack Docker -képet szeretne létrehozni. Ebben az esetben HTTP -kiszolgálót fog futtatni valamilyen porton (mondjuk a 80 -as vagy 8080 -as TCP -porton), egy FTP -kiszolgálón, amely a 21 -es TCP -porton fut, SQL -adatbázis -kiszolgálón (mondjuk MySQL), amely a 3306 -os TCP -porton fut, vagy NoSQL adatbázis -kiszolgáló (mondjuk MongoDB), amely a 27017 -es vagy 27018 -as TCP -porton fut, egy SSH -kiszolgáló, amely a 22 -es TCP -porton fut. Ez sok port!

A jó hír az; segítségével annyi portot tárolhat a segítségével létrehozott egyéni Docker -képen Dockerfile .

A fenti példában szereplő portok a következő sorokkal láthatók Dockerfile :

EXPOSE80/tcp
EXPOSE8080/tcp
EXPOSEhuszonegy/tcp
EXPOSE22/tcp
EXPOSE3306/tcp
EXPOSE27017/tcp
EXPOSE27018/tcp

Ha szeretné, elhagyhatja a protokoll specifikációt, mivel a Docker alapértelmezés szerint TCP -t használ, és ugyanezt teheti a következő sorokkal a Dockerfile :

EXPOSE80
EXPOSE8080
EXPOSEhuszonegy
EXPOSE22
EXPOSE3306
EXPOSE27017
EXPOSE27018

Ha szükséges, keverheti a TCP és UDP portokat Dockerfile . Ha például DNS -kiszolgálót futtat (amely az UDP 53 -as porton fut), a fenti példával együtt a következő sorokat adja hozzá a Dockerfile .

EXPOSE80
EXPOSE8080
EXPOSEhuszonegy
EXPOSE22
EXPOSE53/udp
EXPOSE3306
EXPOSE27017
EXPOSE27018

Tehát így teheti ki a portokat a használatával Dockerfile . Ha többet szeretne megtudni Dockerfile és portok feltárásával Dockerfile , olvassa el a Dockerfile referencia útmutató a https://docs.docker.com/engine/reference/builder/#expose

Köszönjük, hogy elolvasta ezt a cikket.