Docker 101 - hogyan juthatunk el a létrehozástól a telepítésig

A Docker játékváltó, és nagyon megváltoztatta az alkalmazásfejlesztés világát. Ismerje meg az e konténertechnológiával való együttműködéshez szükséges alapvető készségeket.

Mi az a Docker?

Egyszerűbben fogalmazva: a Docker egy olyan eszköz, amely lehetővé teszi a fejlesztők számára, hogy konténerekben alkossanak, telepítsenek és futtassanak alkalmazásokat. A konténerezés Linux tárolók használata alkalmazások telepítéséhez.

Miért olyan nagyszerű a Docker, és miért kellene nekünk, mint fejlesztőknek is, fárasztóan megtanulnunk?

Ok Magyarázat
Rugalmas Még a legösszetettebb alkalmazások is tárolhatók.
Könnyűsúlyú A tárolók kihasználják és megosztják a gazdagép kerneljét.
Felcserélhető A frissítéseket menet közben is telepítheti.
Hordozható Építhet helyben, telepítheti a felhőbe, és bárhol futtathatja.
Skálázható Növelheti és automatikusan terjesztheti a tároló másolatait.
Halmozott A szolgáltatásokat függőlegesen és menet közben is egymásra rakhatja.

Most, hogy tudjuk, miért olyan nagy ügy a Docker, telepítsük a helyi gépünkre.

Iratkozzon fel egy fiókra a Docker Hub alkalmazásban, és töltse le az ingyenes Docker Desktop alkalmazást.

Miben különbözik a Docker a hagyományos virtuális gépektől?

Egy konténer natív módon fut Linux alatt, és megosztja a gazdagép kerneljét más tárolókkal. Diszkrét folyamatként fut, és nem igényel több memóriát, mint bármely más futtatható fájl, vagyis nagyon könnyű.

Ezzel szemben egy virtuális gép (VM) teljes értékű „vendég” operációs rendszert futtat virtuális hozzáféréssel a gazdagép erőforrásaihoz egy hipervizoron keresztül. Általánosságban elmondható, hogy a virtuális gépek több erőforrással rendelkező környezetet biztosítanak, mint amire a legtöbb alkalmazásnak szüksége van.

Amikor a Dockerrel dolgozik, a `Dockerfile` meghatározza, mi történik a konténer belsejében. Az erőforrásokhoz, például a hálózati interfészekhez és a lemezmeghajtókhoz való hozzáférés a rendszer többi részétől elkülönített környezetben virtualizálódik. Ez azt jelenti, hogy portokat kell feltérképeznie a külvilág felé, és pontosan meg kell határoznia, hogy milyen fájlokat szeretne "másolni" az adott környezetbe. Ezt követően azonban számíthat arra, hogy az alkalmazásod ebben a "Dockerfile" -ben meghatározott összeállítása ugyanúgy viselkedik, bárhol is fut.

Docker parancsok

A Docker futó verziójának teszteléséhez futtassa a következő parancsot:

docker --version

A telepítés tökéletes működésének teszteléséhez próbálja meg futtatni az egyszerű Docker hello-world képet:

docker run hello-world

Ha minden megfelelően van beállítva, akkor az alábbihoz hasonló kimenetet kell látnia:

Unable to find image 'hello-world:latest' locally latest: Pulling from library/hello-world ca4f61b1923c: Pull complete Digest: sha256:ca0eeb6fb05351dfc8759c20733c91def84cb8007aa89a5bf606bc8b315b9fc7 Status: Downloaded newer image for hello-world:latest Hello from Docker! This message shows that your installation appears to be working correctly. ... 

A számítógépére letöltött hello-world Docker-kép megtekintéséhez használja a Docker-képlista parancsot:

docker image ls

Fantasztikus! Már elkezdte a konténeres alkalmazások fejlesztését a Dockerrel. Íme néhány hasznos alapvető Docker-parancs:

## List Docker CLI commands docker docker container --help ## Display Docker version and info docker --version docker version docker info ## Execute Docker image docker run hello-world ## List Docker images docker image ls ## List Docker containers (running, all, all in quiet mode) docker container ls docker container ls --all docker container ls -aq 
A konténerezés zökkenőmentessé teszi a CI / CD-t. Például:
  • az alkalmazásoknak nincs rendszerfüggőségük
  • a frissítések az elosztott alkalmazás bármely részére továbbíthatók
  • az erőforrás sűrűsége optimalizálható.
  • A Docker segítségével az alkalmazás méretezése új futtatható fájlok felgyorsításának kérdése, nem pedig nehéz virtuális gépek futtatása.

Készítsünk egy Node.js webalkalmazást a Docker használatával

Első lépésként létrehozunk egy package.jsonfájlt. Ezt gyorsan megtehetjük, ha egyszerűen futtatjuk a következő parancsot:

npm init -y 

Ez létrehozza a fenti fájlt bizonyos alapvető mezőkkel, amelyek már kitöltöttek vagy üresen vannak hagyva.

A fájljának így kell kinéznie:

{ "name": "app-name", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [], "author": "", "license": "ISC" } 

Ezután telepítjük express.js, amely a hivatalos weboldal szerint egy " Gyors, kibontatlan, minimalista webkeret a Node.js számára ".

Ezt úgy végezzük, hogy a következő parancsot futtatjuk egy terminálban:

npm install express --save 

A fenti parancs hozzáadja a express.jskeretrendszert alkalmazásunkhoz, a --save jelző utasításként működik az alkalmazás számára express.js, hogy függőségként használhassa.

Most menjen be package.json, és változtassa meg a "main": "index.js"kulcs-érték párost a következőre:

"main": "app.js" 

Ezután hozzon létre egy .gitignorefájlt a következő paranccsal:

touch .gitignore 

Ezután adja hozzá a következő sort:

node_modules/ 

Ez megakadályozza, hogy a fejlesztéshez elengedhetetlen node_modules mappa node.jsnyomon követhető legyen git.

Most adja hozzá a következő kódot a app.jsfájlhoz:

const express = require('express'); const app = express(); const PORT = 8080; const HOST = '0.0.0.0'; app.get('/', (req, res) => { res.send( ` 

Home

Docker is awesome!

Next Page ` ) }); app.get('/more', (req, res) => { res.send( `

Page Two

Node.js is pretty great too!!

Back Home ` ) }); app.listen(PORT, HOST); console.log(`Running on //${HOST}:${PORT}`);

A futtatáshoz a helyi gépen futtassa a következő parancsot az alkalmazás mappában:

npm start 

Az alkalmazást a következő címen futtatja: //0.0.0.0:8080/

Fantasztikus!

Gratulálunk

Gratulálok, hogy idáig eljutottál

A dokkolóba

Most hozzon létre egy Dockerfilea következő paranccsal:

touch Dockerfile 

Ezután adja hozzá a következő kódot:

# An official Docker image for Node.js FROM node:10-alpine # Working directory for the containerised application WORKDIR /src/app # This copies significant package.json files to the current directory COPY package*.json ./ # Install essential Node.js dependencies RUN npm install COPY . . # Opens up this port on the Docker container EXPOSE 8080 # This starts the Docker application CMD [ "npm", "start" ] 

A fenti megjegyzések megpróbálják elmagyarázni az egyes Dockerfileparancsok működését.

Ezenkívül adjon hozzá egy dockerignorefájlt, hogy megakadályozza az alkalmazás egyes összetevőinek tárolását.

Helyezze ezt a dockerignorefájl belsejébe :

node_modules npm-debug.log Dockerfile* docker-compose* .dockerignore .git .gitignore README.md LICENSE 

Hogyan kell telepíteni

Ez az a név, amelyet a Docker alkalmazáshoz rendelt, és lényegében csak a Docker kép verziószám-mutatója.

  • docker build -t image-name:tag .

Futtassa ezt a Docker-fiók eléréséhez a terminálról.

  • docker login

Hozzon létre egy adattárat a Docker Hubon.

Címke a nyilvántartásba való feltöltéshez.

  • docker tag username/repository:tag

Töltse fel a címkézett képet a rendszerleíró adatbázisba.

  • docker push username/repository:tag

Futtassa a telepített Docker-tárolót a helyi gépén, csatlakoztatva a PORT-okat. Célozza meg a 8080-as kitett portot, és rendelje hozzá a gép 10203-as portjához.

  • docker run -p 10203:8080 username/repository:tag

Ez az! Felépített és telepített egy konténeres Node.js webalkalmazást.

A fenti kódok mindegyike megtalálható ebben a Github adattárban.

Eredetileg itt tették közzé a blog.ninte.dev oldalon