Latviešu

Atklājiet Docker jaudu ar šo visaptverošo rokasgrāmatu. Uzziniet par konteinerizāciju, tās priekšrocībām, pamatjēdzieniem un praktisko pielietojumu globālā programmatūras izstrādē.

Docker Konteinerizācija: Pilnīga Rokasgrāmata Globāliem Izstrādātājiem

Mūsdienu strauji mainīgajā tehnoloģiju vidē efektīva un konsekventa lietojumprogrammu izvietošana ir vissvarīgākā. Neatkarīgi no tā, vai esat daļa no starptautiskas korporācijas vai izkliedēta jaunuzņēmuma, nodrošināt, ka jūsu lietojumprogrammas darbojas nevainojami dažādās vidēs, ir ievērojams izaicinājums. Šeit spēkā stājas Docker konteinerizācija, piedāvājot standartizētu veidu, kā pakot, izplatīt un palaist lietojumprogrammas. Šī visaptverošā rokasgrāmata iedziļināsies Docker pamatjēdzienos, tā priekšrocībās globālām izstrādes komandām un praktiskos soļos, lai jūs varētu sākt darbu.

Kas ir Docker un kāpēc tas revolucionizē programmatūras izstrādi?

Būtībā Docker ir atvērtā koda platforma, kas automatizē lietojumprogrammu izvietošanu, mērogošanu un pārvaldību vieglās, pārnēsājamās vienībās, ko sauc par konteineriem. Iedomājieties konteineri kā pašpietiekamu pakotni, kas ietver visu, kas nepieciešams lietojumprogrammas darbībai: kodu, izpildlaiku, sistēmas rīkus, sistēmas bibliotēkas un iestatījumus. Šī izolācija nodrošina, ka lietojumprogramma uzvedas vienādi neatkarīgi no pamatā esošās infrastruktūras, atrisinot seno "uz mana datora viss strādā" problēmu.

Tradicionāli lietojumprogrammu izvietošana ietvēra sarežģītas konfigurācijas, atkarību pārvaldību un potenciālus konfliktus starp dažādām programmatūras versijām. Tas bija īpaši sarežģīti globālām komandām, kur izstrādātāji varēja izmantot dažādas operētājsistēmas vai tiem bija atšķirīgas izstrādes vides. Docker eleganti apiet šīs problēmas, abstrahējot pamatā esošo infrastruktūru.

Docker galvenās priekšrocības globālām komandām:

Docker pamatjēdzienu skaidrojums

Lai efektīvi izmantotu Docker, ir svarīgi saprast tā pamatkomponentes.

1. Docker attēls

Docker attēls (image) ir tikai lasāma veidne, ko izmanto Docker konteineru izveidei. Būtībā tas ir lietojumprogrammas un tās vides momentuzņēmums konkrētā laika brīdī. Attēli tiek veidoti slāņos, kur katra instrukcija Dockerfailā (piemēram, pakotnes instalēšana, failu kopēšana) izveido jaunu slāni. Šī slāņainā pieeja nodrošina efektīvu glabāšanu un ātrākus būvēšanas laikus, jo Docker var atkārtoti izmantot nemainītus slāņus no iepriekšējām būvēm.

Attēli tiek glabāti reģistros, un Docker Hub ir vispopulārākais publiskais reģistrs. Jūs varat domāt par attēlu kā par projektu, un konteineru kā par šī projekta instanci.

2. Dockerfile

Dockerfile ir vienkāršs teksta fails, kas satur instrukciju kopu Docker attēla izveidei. Tas norāda bāzes attēlu, kas jāizmanto, komandas, kas jāizpilda, failus, kas jākopē, portus, kas jāatver, un vēl vairāk. Docker lasa Dockerfailu un secīgi izpilda šīs instrukcijas, lai izveidotu attēlu.

Vienkāršs Dockerfile varētu izskatīties šādi:

# Izmantot oficiālu Python izpildlaiku kā vecākattēlu
FROM python:3.9-slim

# Iestatīt darba direktoriju konteinerī
WORKDIR /app

# Kopēt pašreizējās direktorijas saturu konteinerī uz /app
COPY . /app

# Instalēt nepieciešamās pakotnes, kas norādītas requirements.txt
RUN pip install --no-cache-dir -r requirements.txt

# Padarīt 80. portu pieejamu pasaulei ārpus šī konteinera
EXPOSE 80

# Palaist app.py, kad konteineris startējas
CMD ["python", "app.py"]

Šis Dockerfile definē attēlu, kas:

3. Docker konteineris

Docker konteineris ir darbināma Docker attēla instance. Kad jūs palaižat Docker attēlu, tas izveido konteineri. Jūs varat startēt, apturēt, pārvietot un dzēst konteinerus. No viena un tā paša attēla var palaist vairākus konteinerus, katrs darbojas izolēti.

Konteineru galvenās īpašības:

4. Docker reģistrs

Docker reģistrs ir repozitorijs Docker attēlu glabāšanai un izplatīšanai. Docker Hub ir noklusējuma publiskais reģistrs, kurā varat atrast plašu iepriekš sagatavotu attēlu kolekciju dažādām programmēšanas valodām, datu bāzēm un lietojumprogrammām. Jūs varat arī izveidot privātus reģistrus savas organizācijas patentētajiem attēliem.

Kad jūs izpildāt komandu, piemēram, docker run ubuntu, Docker vispirms pārbauda jūsu lokālajā mašīnā Ubuntu attēlu. Ja tas netiek atrasts, tas velk attēlu no konfigurēta reģistra (pēc noklusējuma, Docker Hub).

5. Docker dzinējs

Docker dzinējs ir pamatā esošā klienta-servera tehnoloģija, kas būvē un palaiž Docker konteinerus. Tas sastāv no:

Darba uzsākšana ar Docker: praktiska pamācība

Apskatīsim dažas būtiskas Docker komandas un bieži sastopamu lietošanas gadījumu.

Instalēšana

Pirmais solis ir instalēt Docker savā datorā. Apmeklējiet oficiālo Docker vietni ([docker.com](https://www.docker.com/)) un lejupielādējiet atbilstošo instalētāju savai operētājsistēmai (Windows, macOS vai Linux). Izpildiet instalēšanas norādījumus savai platformai.

Docker pamatkomandas

Šeit ir dažas pamatkomandas, kuras jūs regulāri izmantosiet:

Piemērs: vienkārša tīmekļa servera palaišana

Konteinerizēsim vienkāršu Python tīmekļa serveri, izmantojot Flask ietvaru.

1. Projekta iestatīšana:

Izveidojiet direktoriju savam projektam. Šajā direktorijā izveidojiet divus failus:

app.py:

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello from a Dockerized Flask App!'

if __name__ == '__main__':
    app.run(debug=True, host='0.0.0.0', port=80)

requirements.txt:

Flask==2.0.0

2. Dockerfile izveide:

Tajā pašā projekta direktorijā izveidojiet failu ar nosaukumu Dockerfile (bez paplašinājuma) ar šādu saturu:

FROM python:3.9-slim

WORKDIR /app

COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

COPY . .

EXPOSE 80

CMD ["python", "app.py"]

3. Docker attēla izveide:

Atveriet savu termināli, pārejiet uz projekta direktoriju un palaidiet:

docker build -t my-flask-app:latest .

Šī komanda liek Docker izveidot attēlu, izmantojot Dockerfile pašreizējā direktorijā, un piešķirt tam birku my-flask-app:latest.

4. Docker konteinera palaišana:

Tagad palaidiet konteineri no tikko izveidotā attēla:

docker run -d -p 5000:80 my-flask-app:latest

Karodziņu skaidrojums:

5. Lietojumprogrammas testēšana:

Atveriet savu tīmekļa pārlūku un dodieties uz http://localhost:5000. Jums vajadzētu redzēt ziņojumu: "Hello from a Dockerized Flask App!".

Lai redzētu darbojošos konteineri, izmantojiet docker ps. Lai to apturētu, izmantojiet docker stop <container_id> (aizstājiet <container_id> ar ID, ko parāda docker ps).

Padziļināti Docker jēdzieni globālai izvietošanai

Kad jūsu projekti aug un komandas kļūst vairāk izkliedētas, jūs vēlēsities izpētīt padziļinātākas Docker funkcijas.

Docker Compose

Lietojumprogrammām, kas sastāv no vairākiem pakalpojumiem (piemēram, tīmekļa priekšgals, aizmugures API un datu bāze), atsevišķu konteineru pārvaldība var kļūt apgrūtinoša. Docker Compose ir rīks vairāku konteineru Docker lietojumprogrammu definēšanai un palaišanai. Jūs definējat savas lietojumprogrammas pakalpojumus, tīklus un sējumus YAML failā (docker-compose.yml), un ar vienu komandu varat izveidot un startēt visus savus pakalpojumus.

Piemērs docker-compose.yml vienkāršai tīmekļa lietotnei ar Redis kešatmiņu varētu izskatīties šādi:

version: '3.8'
services:
  web:
    build: .
    ports:
      - "5000:80"
    volumes:
      - .:/app
    depends_on:
      - redis
  redis:
    image: "redis:alpine"

Ar šo failu jūs varat startēt abus pakalpojumus ar docker-compose up.

Sējumi (Volumes) pastāvīgiem datiem

Kā minēts, konteineri ir īslaicīgi. Ja jūs darbināt datu bāzi, jūs vēlēsities saglabāt datus ilgāk par konteinera dzīves ciklu. Docker sējumi ir ieteicamais mehānisms, lai saglabātu datus, ko ģenerē un izmanto Docker konteineri. Sējumus pārvalda Docker, un tie tiek glabāti ārpus konteinera rakstāmā slāņa.

Lai pievienotu sējumu, palaižot konteineri:

docker run -v my-data-volume:/var/lib/mysql mysql:latest

Šī komanda izveido sējumu ar nosaukumu my-data-volume un montē to uz /var/lib/mysql MySQL konteinera iekšienē, nodrošinot, ka jūsu datu bāzes dati tiek saglabāti.

Docker tīkli

Pēc noklusējuma katrs Docker konteineris iegūst savu tīkla nosaukumvietu. Lai nodrošinātu saziņu starp konteineriem, jums ir jāizveido tīkls un jāpievieno tam savi konteineri. Docker nodrošina vairākus tīkla draiverus, no kuriem bridge tīkls ir visizplatītākais viena resursdatora izvietojumiem.

Kad jūs izmantojat Docker Compose, tas automātiski izveido noklusējuma tīklu jūsu pakalpojumiem, ļaujot tiem sazināties, izmantojot savu pakalpojumu nosaukumus.

Docker Hub un privātie reģistri

Docker Hub izmantošana ir izšķiroša, lai koplietotu attēlus savā komandā vai ar sabiedrību. Patentētām lietojumprogrammām privāta reģistra izveide ir būtiska drošībai un kontrolētai piekļuvei. Mākoņpakalpojumu sniedzēji, piemēram, Amazon Elastic Container Registry (ECR), Google Container Registry (GCR) un Azure Container Registry (ACR), piedāvā pārvaldītus privāto reģistru pakalpojumus.

Drošības labākās prakses

Lai gan Docker nodrošina izolāciju, drošība ir pastāvīgs jautājums, īpaši globālā kontekstā:

Docker globālā kontekstā: mikropakalpojumi un CI/CD

Docker ir kļuvis par modernās programmatūras arhitektūras stūrakmeni, īpaši mikropakalpojumiem un nepārtrauktās integrācijas/nepārtrauktās piegādes (CI/CD) konveijeriem.

Mikropakalpojumu arhitektūra

Mikropakalpojumi sadala lielu lietojumprogrammu mazākos, neatkarīgos pakalpojumos, kas sazinās tīklā. Katru mikropakalpojumu var izstrādāt, izvietot un mērogot neatkarīgi. Docker ir ideāli piemērots šai arhitektūrai:

CI/CD konveijeri

CI/CD automatizē programmatūras piegādes procesu, nodrošinot biežus un uzticamus lietojumprogrammu atjauninājumus. Docker spēlē būtisku lomu CI/CD:

Internacionalizācijas un lokalizācijas apsvērumi

Globālām lietojumprogrammām Docker var arī vienkāršot internacionalizācijas (i18n) un lokalizācijas (l10n) aspektus:

Konteineru orķestrēšana: Kubernetes loma

Lai gan Docker ir lielisks atsevišķu konteineru iepakošanai un palaišanai, liela skaita konteineru pārvaldīšanai vairākās mašīnās ir nepieciešama orķestrēšana. Šeit izceļas tādi rīki kā Kubernetes. Kubernetes ir atvērtā koda sistēma konteinerizētu lietojumprogrammu izvietošanas, mērogošanas un pārvaldības automatizēšanai. Tas nodrošina tādas funkcijas kā slodzes līdzsvarošana, pašatjaunošanās, pakalpojumu atklāšana un pakāpeniski atjauninājumi, padarot to neaizstājamu sarežģītu, izkliedētu sistēmu pārvaldībā.

Daudzas organizācijas izmanto Docker, lai izveidotu un iepakotu savas lietojumprogrammas, un pēc tam izmanto Kubernetes, lai izvietotu, mērogotu un pārvaldītu šos Docker konteinerus ražošanas vidēs.

Noslēgums

Docker ir fundamentāli mainījis veidu, kā mēs veidojam, piegādājam un palaižam lietojumprogrammas. Globālām izstrādes komandām tā spēja nodrošināt konsekvenci, pārnesamību un efektivitāti dažādās vidēs ir nenovērtējama. Pieņemot Docker un tā pamatjēdzienus, jūs varat racionalizēt savas izstrādes darbplūsmas, samazināt izvietošanas berzi un piegādāt uzticamas lietojumprogrammas lietotājiem visā pasaulē.

Sāciet, eksperimentējot ar vienkāršām lietojumprogrammām, un pakāpeniski izpētiet padziļinātākas funkcijas, piemēram, Docker Compose un integrāciju ar CI/CD konveijeriem. Konteinerizācijas revolūcija ir klāt, un Docker izpratne ir kritiska prasme jebkuram modernam izstrādātājam vai DevOps profesionālim, kurš vēlas gūt panākumus globālajā tehnoloģiju arēnā.