Atilla Mah. 493 Sk. No:13 D:1 35270, Konak - ÎZMÎR / TIRKIYE

Konteynerîzasyon û Docker: Belavkirina Nermalavê ya Nûjen

Konteynerîzasyon û Docker

Konteynerîzasyon, yek ji pêşkeftinên herî girîng ên di warê belavkirina nermalavê de ye. Bi Docker re, pêşdebiran dikarin sepanên xwe di konteynerên sivik de pak bikin û li her hawîrdorê bêyî pirsgirêk bimeşînin. Li gorî rapora Docker 2024, zêdetirî %70 ên pargîdaniyên Fortune 500 Docker bikar tînin. Ev teknolojî, pêvajoya pêşveçûn-ceribandin-belavkirinê bi tevahî guhertiye.

Konteyner Çi Ye?

Konteyner, yekîneyek standard a nermalavê ye ku kod û hemû girêdayiyên wê di nav pakêtekê de digire da ku sepan bi lez û pêbawer ji hawîrdorek komputerê berbi ya din ve bimeşe. Konteyner ji makîneyên virtual (VM) siviktir in ji ber ku ew kernel a pergala xebitandinê bi hev re parve dikin.

Konteyner vs Makîneya Virtual

Taybetmendî Konteyner Makîneya Virtual
Mezinahî MB (10-100 MB) GB (1-20 GB)
Dema Destpêkirinê Çirke Deqîqe
Îzolasyon Asta Pêvajoyê Asta Hardware
Performans Nêzîkê Native Overhead Heye
Hejmara li Hostê Bi dehan/bi sedan Bi dehan

Docker: Bingeha Konteynerîzasyonê

Docker, platforma herî populer a konteynerîzasyonê ye ku di sala 2013-an de hat weşandin. Docker ji pêşdebiran re rê dide ku sepanên xwe di konteynerên standard de ava bikin, biceribînin û belavbikin. Avahiya Docker ji sê hêmanên sereke pêk tê:

Docker Engine

Docker Engine, motora runtime ye ku konteyneran dimeşîne. Ew ji sê beşan pêk tê:

  • Docker Daemon (dockerd): Pêvajoya paşzemînê ku wêneyên Docker, konteyneran, torê û cildên hilanînê birêve dibe
  • Docker CLI: Navbera rêza fermanê ya ku bikarhêner bi Docker Daemon re têkiliyê dike
  • REST API: API ya ku bernameyan dihêle bi daemon re bi bernameyî re têkiliyê bikin

Docker Image (Wêne)

Wêneya Docker, şabloneke tenê-xwendinê ye ku rêwerzên avakirina konteynerê dihewîne. Her wêne ji qatên (layer) hev ser hev pêk tê. Gava hûn wêneyekê diguherin, tenê qatên nû têne zêdekirin û ev jî hilanînê optimîze dike.

Dockerfile: Avakirina Wêneyan

Dockerfile, pelê nivîsê ye ku rêwerzên avakirina wêneya Docker dihewîne. Nimûneyek Dockerfile ya bingehîn:

# Wêneya bingehîn
FROM node:18-alpine

# Peldanka xebatê
WORKDIR /app

# Girêdayiyan saz bike
COPY package*.json ./
RUN npm ci --only=production

# Koda sepanê kopî bike
COPY . .

# Porta sepanê
EXPOSE 3000

# Fermana destpêkirinê
CMD ["node", "server.js"]

Rêwerzên Baş ên Dockerfile

  • Wêneya bingehîn a piçûk bikar bînin: Alpine variants (node:18-alpine, python:3.11-alpine)
  • Avakirina pir-qonaxî: Ji bo kêmkirina mezinahiya wêneya dawîn
  • Qatên cache bikar bînin: Girêdayiyan berî kodê kopî bikin
  • Bi kêmtirîn privilege bimeşînin: USER non-root bikar bînin
  • .dockerignore bikar bînin: Pelên ne-pêwîst ji kontekstê derxin

Docker Compose: Sepanên Pir-Konteynerî

Docker Compose, amûreke ye ku ji bo danasîn û meşandina sepanên pir-konteynerî tê bikar anîn. Bi pelê docker-compose.yml re, hûn dikarin hemû xizmetên sepana xwe bi yek fermanê ve bidin destpêkirin.

version: '3.8'

services:
  web:
    build: .
    ports:
      - "3000:3000"
    environment:
      - DATABASE_URL=postgres://db:5432/app
    depends_on:
      - db
      - redis

  db:
    image: postgres:15-alpine
    volumes:
      - pgdata:/var/lib/postgresql/data
    environment:
      - POSTGRES_DB=app
      - POSTGRES_PASSWORD=secret

  redis:
    image: redis:7-alpine
    ports:
      - "6379:6379"

volumes:
  pgdata:

Fermanên Docker Compose yên herî gelemperî:

  • docker compose up -d — Hemû xizmetan di paşzemînê de bide destpêkirin
  • docker compose down — Hemû xizmetan rawestîne û jê bibe
  • docker compose logs -f — Logên hemû xizmetan bişopînin
  • docker compose ps — Rewşa hemû xizmetan bibînin

Kubernetes: Orkestrasyon li Pîvanê

Kubernetes (K8s), platforma orkestrasyon a konteyneran e ku Google pêşxist û niha ji hêla Cloud Native Computing Foundation (CNCF) ve tê birêvebirin. Kubernetes ji bo birêvebirina konteyneran li pîvana hilberînê tê bikar anîn.

Hêmanên Sereke yên Kubernetes

  • Pod: Yekîneya herî piçûk a belavkirinê — yek an çend konteynerên hevpeyda
  • Service: Xala gihîştina torê ya domdar ji bo komek Podan
  • Deployment: Rewşa xwestî ya Podan diyar dike û replîkayan birêve dibe
  • Namespace: Dabeşkirina mentiqî ya çavkaniyên nav komê
  • ConfigMap/Secret: Birêvebirina veavakirinê û daneya hesas
  • Ingress: Birêvebirina gihîştina ji derveyî komê

Pîvandina Otomatîk (Auto-scaling)

Kubernetes sê celeb pîvandina otomatîk pêşkêşî dike:

  1. Horizontal Pod Autoscaler (HPA): Li gorî bikaranîna CPU/bîrê, hejmara Podan zêde/kêm dike
  2. Vertical Pod Autoscaler (VPA): Çavkaniyên CPU/bîra Podan otomatîk saz dike
  3. Cluster Autoscaler: Hejmara nodên di komê de li gorî hewcedariyê diguhezîne

CI/CD bi Docker re

Docker, pêvajoya CI/CD (Entegrasyona Berdewam / Belavkirina Berdewam) bi tevahî guhertiye. Bi Docker re, hawîrdorên avakirinê standard in û encamên her cihê yek in.

Pipeline ya CI/CD ya Docker

  1. Commit: Pêşdebir guhertinan push dike
  2. Avakirin: CI server wêneya Docker ava dike
  3. Ceribandin: Testên otomatîk di konteyneran de dimişin
  4. Scan: Wêne ji bo qelsiyên ewlehiyê tê scan kirin
  5. Push: Wêne berbi registry (Docker Hub, ECR, GCR) tê push kirin
  6. Belavkirin: Wêneya nû li hawîrdora armancê tê belavkirin

Nimûneya GitHub Actions

name: Docker CI/CD

on:
  push:
    branches: [main]

jobs:
  build-and-deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Build Docker image
        run: docker build -t app:${{ github.sha }} .
      - name: Run tests
        run: docker run app:${{ github.sha }} npm test
      - name: Push to registry
        run: |
          docker tag app:${{ github.sha }} registry/app:latest
          docker push registry/app:latest

Mîkroxizmet û Docker

Docker, mîmariya mîkroxizmetan pêkan dike. Li şûna sepaneke yekane ya monolîtîk, her xizmet wekî konteynereke serbixwe dimişe. Avantajên vê nêzîkatiyê:

  • Pîvandina serbixwe: Her xizmet li gorî hewcedariya xwe tê pîvandin
  • Serbixwebûna teknolojiyê: Her xizmet dikare bi zimanê cûda were nivîsandin
  • Îzolasyona xeletiyan: Têkçûna yek xizmetê bandorê li hemûyan nake
  • Belavkirina serbixwe: Tîmên cuda dikarin bi xizmeta xwe ve bixebitin

Ewlehiya Docker

Ewlehî di Docker de girîng e. Li vir çend rêwerzên baş hene:

  • Wêneyên fermî bikar bînin: Ji Docker Hub an registryên pêbawer
  • Wêneyan bi rêkûpêk nûve bikin: Ji bo pêçkirina qelsiyên ewlehiyê
  • Bi bikarhênerê non-root bimeşînin: Di Dockerfile de USER diyar bikin
  • Sirên xwe yên di wêneyan de nehêlin: Build args an Docker secrets bikar bînin
  • Torên taybet bikar bînin: Konteyneran ji torên derve yên ne-pêwîst veqetînin
  • Amûrên scanning bikar bînin: Trivy, Snyk, an Docker Scout

TAGUM™ û Konteynerîzasyon

TAGUM™, di hemû projeyên xwe de Docker û konteynerîzasyonê bi aktîfî bikar tîne. Ji PratikEsnaf.Net heta DeskTR, hemû sepanên me bi pipeline yên CI/CD yên Docker-ê ve têne avakirin û belavkirin. Tîma me ya pisporên DevOps, alîkariya we dike da ku hûn jî vê teknolojiyê di binesaziya xwe de bi cih bînin.

Ger hûn dixwazin sepanên xwe konteynerîze bikin an binesaziya Docker/Kubernetes xwe ava bikin, bi me re têkilî daynin.

Leave a Reply

Your email address will not be published. Required fields are marked *