Docker schimbă jocul și a modificat foarte mult lumea dezvoltării aplicațiilor. Aflați abilitățile vitale necesare pentru a lucra cu această tehnologie de containere astăzi.

Ce este Docker?

In termeni simpli, Docher este un instrument care permite dezvoltatorilor să creeze, să implementeze și să ruleze aplicații în containere. Containerizare este utilizarea containerelor Linux pentru a implementa aplicații.

Deci, de ce este Docker atât de grozav și de ce ar trebui ca noi, dezvoltatorii, să ne deranjăm chiar să-l învățăm?

MotivExplicaţie
FlexibilChiar și cele mai complexe aplicații pot fi containerizate.
UșoareContainerele folosesc și partajează nucleul gazdă.
interschimbabilePuteți implementa actualizări și upgrade-uri din mers.
PortabilPuteți construi local, implementa în cloud și rula oriunde.
ScalabilPuteți mări și distribui automat replici de containere.
StivuibilPuteți stiva servicii pe verticală și din mers.

Acum, că știm de ce Docker este o afacere atât de mare, să-l instalăm pe mașina noastră locală.

Înscrieți-vă pentru un cont pe Docker Hub și descărcați aplicația gratuită Docker Desktop.

În ce este Docker diferit de mașinile virtuale tradiționale?

Un container rulează nativ pe Linux și partajează nucleul mașinii gazdă cu alte containere. Se execută ca un proces discret, nu necesită mai multă memorie decât orice alt executabil, ceea ce înseamnă că este foarte ușor.

În schimb, o mașină virtuală (VM) rulează un sistem de operare „invitat” complet, cu acces virtual la resursele gazdelor printr-un hipervizor. În general, VM-urile oferă un mediu cu mai multe resurse decât au nevoie majoritatea aplicațiilor.

Când lucrați cu Docker, un „Dockerfile” definește ceea ce se întâmplă în mediul din interiorul containerului dvs. Accesul la resurse precum interfețele de rețea și unitățile de disc sunt virtualizate în interiorul acestui mediu, care este izolat de restul sistemului. Aceasta înseamnă că trebuie să mapați porturile către lumea exterioară și să fiți specific cu privire la ce fișiere doriți să „copiați” în acel mediu. Cu toate acestea, după ce ați făcut acest lucru, vă puteți aștepta ca versiunea aplicației dvs. definită în acest `Dockerfile` să se comporte exact la fel oriunde rulează.

Comenzi Docker

Pentru a testa dacă aveți o versiune în execuție a Docker, rulați următoarea comandă:

docker --version

Pentru a testa dacă instalarea dvs. funcționează perfect, încercați să rulați Docker-ul simplu Salut Lume imagine:

docker run hello-world

Dacă totul este configurat corect, ar trebui să vedeți o ieșire similară cu următoarea:

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.
...

Pentru a vedea Salut Lume Imagine Docker care a fost descărcată pe computerul dvs., utilizați comanda listare imagini Docker:

docker image ls

Minunat! Ați început deja să dezvoltați aplicații containerizate cu Docker. Iată câteva comenzi utile de bază pentru Docker:

## 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

Containerizarea face CI / CD perfect. De exemplu:

  • aplicațiile nu au dependențe de sistem
  • actualizările pot fi trimise către orice parte a unei aplicații distribuite
  • densitatea resurselor poate fi optimizată.
  • Cu Docker, scalarea aplicației dvs. este o chestiune de a crea noi executabile, nu de a rula gazde VM grele.

Să construim o aplicație web Node.js folosind Docker

Primul lucru pe care îl facem este să creăm un package.json fişier. Putem face acest lucru rapid executând pur și simplu următoarea comandă:

npm init -y

Aceasta creează fișierul de mai sus cu anumite câmpuri esențiale deja completate sau lăsate necompletate.

Fișierul dvs. ar trebui să arate cam așa:

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

Apoi, instalăm express.js, care conform site oficial, este un “Cadru web rapid, neopinat, minimalist pentru Node.js“.

Facem acest lucru executând următoarea comandă într-un terminal:

npm install express --save

Comanda de mai sus adaugă express.js cadru pentru aplicația noastră, cu –salva pavilion care acționează ca o instrucțiune pentru aplicația de utilizat express.js ca dependență.

Acum, intră în package.json, și schimbați "main": "index.js" pereche cheie-valoare la următoarele:

"main": "app.js"

Apoi, creați un .gitignore fișier folosind următoarea comandă:

touch .gitignore

Apoi adăugați următoarea linie:

node_modules/

Acest lucru previne nod_module folder care este esențial pentru node.js dezvoltarea fiind urmărită de git.

Acum adăugați următorul cod la app.js fişier:

const express = require('express');

const app = express();

const PORT = 8080;
const HOST = '0.0.0.0';

app.get('/', (req, res) => {
  res.send(
    `
    <h1>Home</h1>
    <p>Docker is awesome!</p>
    <a href="/more" alt="Next Page">Next Page</a>
    `
  )
});

app.get('/more', (req, res) => {
  res.send(
    `
    <h1>Page Two</h1>
    <p>Node.js is pretty great too!!</p>
    <a href="/" alt="Back Home">Back Home</a>
    `
  )
});

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

Pentru a rula acest lucru pe mașina dvs. locală, rulați următoarea comandă în folderul aplicației:

npm start

Aplicația rulează la http://0.0.0.0:8080/

Minunat!

Felicitări
Felicitări pentru că ai ajuns până aici


În Dockerverse

Acum creați un Dockerfile cu următoarea comandă:

touch Dockerfile

Apoi adăugați următorul cod:

# 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" ]

Comentariile de mai sus încearcă să explice ce fiecare Dockerfile comanda face.

De asemenea, adăugați un dockerignore fișier pentru a preveni containerizarea anumitor componente ale aplicației.

Așezați acest lucru în interiorul dockerignore fişier:

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

Cum să implementați

<image-name> este numele pe care îl atribuiți aplicației Docker și <tag> este în esență doar un indicator de versiune pentru imaginea Docker.

  • docker build -t image-name:tag .

Rulați acest lucru pentru a accesa contul Docker de la terminal.

  • docker login

Creați un depozit pe Docker Hub.

Etichetă <image> pentru încărcare în registru.

  • docker tag <image-name> username/repository:tag

Încărcați imaginea etichetată în registru.

  • docker push username/repository:tag

Rulați containerul Docker implementat pe mașina dvs. locală conectându-i PORTURILE. Direcționați portul 8080 expus și alocați-l portului 10203 de pe mașină.

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


Asta este! Ați construit și implementat o aplicație web containerizată Node.js.

Tot codul de mai sus se găsește în acest depozit Github.

Postat inițial Aici pe blog.ninte.dev