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ímMint 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/tcpKi is tehet egy UDP portot (mondjuk UDP portot) 53 ) a következő sorral Dockerfile :
EXPOSE53/udpA TCP és az UDP portot egyszerre teheti ki a következő sorokkal Dockerfile :
EXPOSE53/tcpEXPOSE53/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 :
EXPOSE53Ekkor 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/tcpEXPOSE8080/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 :
EXPOSE80EXPOSE8080
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 .
EXPOSE80EXPOSE8080
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.