Udhëzues Hyrës për Docker: Filloni Shpejt me Kontejnerizimin e Aplikacionit Tuaj
markdown\n# Udhëzues Hyrës për Docker: Filloni Shpejt me Kontejnerizimin e Aplikacionit Tuaj\n\nDocker është bërë një pjesë e domosdoshme e zhvillimit dhe vendosjes moderne të softuerit. Megjithë diskutimet e gjera rreth Kubernetes, Docker mbetet mjeti i preferuar për shumë kompani për të ndërtuar, testuar dhe vendosur aplikacionet. Ky artikull do t'ju udhëzojë shpejt në Docker, do të kuptoni konceptet e tij thelbësore dhe do të ofrojë një shembull praktik për t'ju ndihmuar të filloni me kontejnerizimin e aplikacionit tuaj.\n\n## Konceptet Thelbësore të Docker\n\nPërpara se të filloni praktikën, është thelbësore të kuptoni disa koncepte thelbësore të Docker:\n\n* **Imazhi (Image):** Imazhi është një shabllon vetëm për lexim, që përmban gjithçka që nevojitet për të ekzekutuar një aplikacion: kodin, mjedisin e ekzekutimit, mjetet e sistemit, libraritë dhe varësitë. Është i ngjashëm me një imazh të makinës virtuale, por më i lehtë.\n\n* **Kontejneri (Container):** Kontejneri është një instancë e ekzekutimit e krijuar nga një imazh. Është një instancë e ekzekutimit të një imazhi, që përmban aplikacionin dhe të gjitha varësitë e tij. Kontejnerët janë të izoluar nga njëri-tjetri, duke pasur sistemin e tyre të skedarëve, proceset dhe hapësirën e rrjetit.\n\n* **Docker Hub:** Docker Hub është një depo publike e imazheve, nga e cila mund të shkarkoni imazhe të para-ndërtuara, ose të ngarkoni imazhet tuaja. Është i ngjashëm me GitHub, por i specializuar për imazhet Docker.\n\n* **Dockerfile:** Dockerfile është një skedar tekst, që përmban të gjitha udhëzimet për ndërtimin e një imazhi Docker. Duke shkruar një Dockerfile, ju mund të automatizoni procesin e krijimit të imazhit.\n\n* **Docker Compose:** Docker Compose është një mjet për të definuar dhe ekzekutuar aplikacione Docker me shumë kontejnerë. Ai ju lejon të konfiguroni shërbimet e aplikacionit duke përdorur skedarë YAML, dhe më pas të filloni ose ndaloni të gjitha shërbimet me një komandë të vetme.\n\n## Instalimi i Docker\n\nSë pari, duhet të instaloni Docker. Docker ofron paketa instalimi për sisteme të ndryshme operative. Vizitoni [faqen zyrtare të Docker](https://www.docker.com/get-started/) dhe ndiqni udhëzimet përkatëse për instalim.\n\nPasi të keni përfunduar instalimin, mund të verifikoni nëse Docker është instaluar saktë duke ekzekutuar komandën `docker --version`.\n\n## Kontejnerizimi i një Aplikacioni të Thjeshtë Python\n\nDo të krijojmë një aplikacion të thjeshtë Python dhe do ta kontejnerizojmë atë duke përdorur Docker.\n\n### 1. Krijimi i Aplikacionit Python\n\nKrijoni një skedar të quajtur `app.py`, që përmban kodin e mëposhtëm:\n\npython\nfrom flask import Flask\napp = Flask(name)\n\n@app.route(# Kopjoni kodin e aplikacionit në direktorinë e punës
COPY app.py .
Ekspozoni portin 5000
EXPOSE 5000
Përcaktoni komandën e nisjes
CMD ["python", "app.py"]
**Shpjegim i Dockerfile:**
* `FROM python:3.9-slim-buster`: Specifikon imazhin bazë si një version i thjeshtuar i Python 3.9.
* `WORKDIR /app`: Vendos direktorinë e punës brenda kontejnerit në `/app`.
* `COPY requirements.txt .`: Kopjon skedarin `requirements.txt` nga direktoria aktuale në direktorinë `/app` të kontejnerit.
* `RUN pip install --no-cache-dir -r requirements.txt`: Ekzekuton komandën `pip` brenda kontejnerit për të instaluar varësitë e specifikuara në skedarin `requirements.txt`. Parametri `--no-cache-dir` mund të zvogëlojë madhësinë e imazhit.
* `COPY app.py .`: Kopjon skedarin `app.py` nga direktoria aktuale në direktorinë `/app` të kontejnerit.
* `EXPOSE 5000`: Deklaron se kontejneri do të dëgjojë në portin 5000.
* `CMD ["python", "app.py"]`: Përcakton komandën që do të ekzekutohet kur të nisë kontejneri.
### 4. Ndërtoni imazhin Docker
Në direktorinë që përmban `Dockerfile`, ekzekutoni komandën e mëposhtme për të ndërtuar imazhin Docker:
```bash
docker build -t my-python-app .
docker build: Komanda për të ndërtuar imazhin.-t my-python-app: Specifikon një emër për imazhin (my-python-app)..: Specifikon direktorinë ku ndodhet Dockerfile (direktoria aktuale).
Procesi i ndërtimit mund të zgjasë pak, në varësi të shpejtësisë së rrjetit dhe madhësisë së varësive.
5. Ekzekutoni kontejnerin Docker
Përdorni komandën e mëposhtme për të ekzekutuar kontejnerin Docker:
docker run -d -p 5000:5000 my-python-app
docker run: Komanda për të ekzekutuar kontejnerin.-d: Ekzekuton kontejnerin në modalitet të shkëputur (në sfond).-p 5000:5000: Harton portin 5000 të hostit në portin 5000 të kontejnerit.my-python-app: Specifikon emrin e imazhit që do të përdoret.
6. Verifikoni aplikacionin
Vizitoni http://localhost:5000 në shfletuesin tuaj, dhe duhet të shihni "Hello, Docker!".
7. Ndaloni dhe fshini kontejnerin
Përdorni komandën e mëposhtme për të ndaluar kontejnerin:
docker stop
`` mund të shihet me komandën docker ps.
Përdorni komandën e mëposhtme për të fshirë kontejnerin:
docker rm
Hyrje në Docker Compose
Nëse aplikacioni juaj përbëhet nga disa shërbime, mund të përdorni Docker Compose për t'i menaxhuar ato.
1. Krijoni skedarin docker-compose.yml
Krijoni një skedar të quajtur docker-compose.yml dhe shtoni përmbajtjen e mëposhtme:
version: "3.9"
services:
web:
image: my-python-app
ports:
- "5000:5000"
Shpjegim i docker-compose.yml:* version: "3.9": Specifikon versionin e skedarit Docker Compose.
services: Përcakton shërbimet e aplikacionit.web: Përcakton një shërbim të quajtur "web".image: my-python-app: Specifikon imazhin që do të përdorë shërbimi.ports: Përcakton lidhjet e porteve.
2. Nisja e Aplikacionit
Në drejtorinë që përmban skedarin docker-compose.yml, ekzekuto komandën e mëposhtme për të nisur aplikacionin:
docker-compose up -d
docker-compose up: Komanda për të nisur aplikacionin.-d: Ekzekuton kontejnerët në modalitet të shkëputur (në sfond).
3. Ndalimi i Aplikacionit
Përdor komandën e mëposhtme për të ndaluar aplikacionin:
docker-compose down
Praktikat Më të Mira të Sigurisë Docker
Siç mund të shihet nga diskutimi, siguria e imazheve Docker është një çështje e rëndësishme. Këtu janë disa praktika më të mira të sigurisë Docker:
- Përdor imazhe zyrtare: Përdor sa më shumë imazhe zyrtare të ofruara, pasi ato zakonisht skanohen dhe mirëmbahen për siguri.
- Skano imazhet për cenueshmëri: Përdor mjete si Trivy për të skanuar imazhet për cenueshmëri të njohura dhe përditëso imazhet menjëherë.
- Përdor parimin e privilegjit minimal: Shmang ekzekutimin e kontejnerëve si përdorues root.
- Kufizo burimet e kontejnerëve: Përdor cgroups për të kufizuar përdorimin e CPU-së dhe memories nga kontejnerët.
- Përditëso imazhet rregullisht: Mbaj imazhet të përditësuara për të rregulluar cenueshmëritë e sigurisë.
- Përdor mjete për skanimin e sigurisë: Mjete si Snyk, Clair etj., mund të integrohen në procesin tënd CI/CD për të skanuar automatikisht imazhet për cenueshmëri.





