Ghid introductiv Docker: Începe rapid cu containerizarea aplicației tale
# Ghid introductiv Docker: Începe rapid cu containerizarea aplicației tale
Docker a devenit o parte indispensabilă a dezvoltării și implementării moderne de software. Deși discuțiile despre Kubernetes sunt omniprezente, Docker rămâne instrumentul preferat pentru multe companii pentru a construi, testa și implementa aplicații. Acest articol te va ghida rapid prin Docker, te va ajuta să înțelegi conceptele sale de bază și va oferi un exemplu practic pentru a te ajuta să începi cu containerizarea aplicației tale.
## Concepte de bază Docker
Înainte de a începe practica, este esențial să înțelegi câteva concepte de bază Docker:
* **Imagine (Image):** O imagine este un șablon doar în citire care conține tot ce este necesar pentru a rula o aplicație: cod, mediu de execuție, instrumente de sistem, biblioteci și dependențe. Este similară cu o imagine de mașină virtuală, dar este mai ușoară.
* **Container (Container):** Un container este o instanță de execuție creată dintr-o imagine. Este o instanță de execuție a unei imagini și conține aplicația și toate dependențele sale. Containerele sunt izolate unul de celălalt, având propriul sistem de fișiere, procese și spațiu de rețea.
* **Docker Hub:** Docker Hub este un depozit public de imagini, de unde poți descărca imagini pre-construite sau poți încărca propriile imagini. Este similar cu GitHub, dar specializat pentru imagini Docker.
* **Dockerfile:** Dockerfile este un fișier text care conține toate instrucțiunile pentru construirea unei imagini Docker. Prin scrierea unui Dockerfile, poți automatiza procesul de creare a imaginii.
* **Docker Compose:** Docker Compose este un instrument pentru definirea și rularea aplicațiilor Docker multi-container. Îți permite să configurezi serviciile aplicației folosind un fișier YAML, apoi să pornești sau să oprești toate serviciile cu o singură comandă.
## Instalare Docker
În primul rând, trebuie să instalezi Docker. Docker oferă pachete de instalare pentru diverse sisteme de operare. Accesează [site-ul web oficial Docker](https://www.docker.com/get-started/) și urmează instrucțiunile corespunzătoare pentru instalare.
După finalizarea instalării, poți verifica dacă Docker este instalat corect rulând comanda `docker --version`.
## Containerizarea unei aplicații Python simple
Vom crea o aplicație Python simplă și o vom containeriza folosind Docker.
### 1. Crearea aplicației Python
Creează un fișier numit `app.py` care conține următorul cod:
```python
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello, Docker!"
if __name__ == "__main__":
app.run(debug=True, host='0.0.0.0')
Această aplicație Flask simplă va returna "Hello, Docker!" pe calea rădăcină /.
2. Crearea fișierului requirements.txt
Aplicația depinde de biblioteca Flask, trebuie să creăm un fișier requirements.txt pentru a declara aceste dependențe.
Flask
3. Crearea Dockerfile
Creează un fișier numit Dockerfile și adaugă următorul conținut:
# Folosește imaginea oficială Python ca imagine de bază
FROM python:3.9-slim-buster
# Setează directorul de lucru
WORKDIR /app
# Copiază fișierul requirements.txt în directorul de lucru
COPY requirements.txt .
# Instalează dependențele
RUN pip install --no-cache-dir -r requirements.txt
```# 将应用程序代码复制到工作目录
COPY app.py .
# 暴露端口 5000
EXPOSE 5000
# 定义启动命令
CMD ["python", "app.py"]
Dockerfile 说明:
FROM python:3.9-slim-buster: Specifică imaginea de bază ca fiind o versiune simplificată a Python 3.9.WORKDIR /app: Setează directorul de lucru în interiorul containerului la/app.COPY requirements.txt .: Copiază fișierulrequirements.txtdin directorul curent în directorul/appal containerului.RUN pip install --no-cache-dir -r requirements.txt: Rulează comandapipîn interiorul containerului pentru a instala dependențele specificate în fișierulrequirements.txt. Parametrul--no-cache-dirpoate reduce dimensiunea imaginii.COPY app.py .: Copiază fișierulapp.pydin directorul curent în directorul/appal containerului.EXPOSE 5000: Declară că containerul va asculta pe portul 5000.CMD ["python", "app.py"]: Definește comanda care va fi executată la pornirea containerului.
4. Construirea imaginii Docker
În directorul care conține Dockerfile, rulează următoarea comandă pentru a construi imaginea Docker:
docker build -t my-python-app .
docker build: Comanda pentru a construi o imagine.-t my-python-app: Specifică un nume pentru imagine (my-python-app)..: Specifică directorul în care se află Dockerfile (directorul curent).
Procesul de construire poate dura ceva timp, în funcție de viteza rețelei și de dimensiunea dependențelor.
5. Rularea containerului Docker
Utilizează următoarea comandă pentru a rula containerul Docker:
docker run -d -p 5000:5000 my-python-app
docker run: Comanda pentru a rula un container.-d: Rulează containerul în mod detașat (rulează în fundal).-p 5000:5000: Mapează portul 5000 al mașinii gazdă la portul 5000 al containerului.my-python-app: Specifică numele imaginii care va fi utilizată.
6. Verificarea aplicației
Accesează http://localhost:5000 într-un browser, ar trebui să vezi "Hello, Docker!".
7. Oprirea și ștergerea containerului
Utilizează următoarea comandă pentru a opri containerul:
docker stop
`` Poate fi vizualizat folosind comanda docker ps.
Utilizează următoarea comandă pentru a șterge containerul:
docker rm
Introducere în Docker Compose
Dacă aplicația ta este formată din mai multe servicii, poți utiliza Docker Compose pentru a le gestiona.
1. Crearea fișierului docker-compose.yml
Creează un fișier numit docker-compose.yml și adaugă următorul conținut:
version: "3.9"
services:
web:
image: my-python-app
ports:
- "5000:5000"
docker-compose.yml 说明:* version: "3.9": Specifică versiunea fișierului Docker Compose.
services: Definește serviciile aplicației.web: Definește un serviciu numit "web".image: my-python-app: Specifică imaginea folosită de serviciu.ports: Definește mapările de porturi.
2. Pornirea aplicației
În directorul care conține fișierul docker-compose.yml, rulează următoarea comandă pentru a porni aplicația:
docker-compose up -d
docker-compose up: Comanda pentru a porni aplicația.-d: Rulează containerele în mod detașat (în fundal).
3. Oprirea aplicației
Folosește următoarea comandă pentru a opri aplicația:
docker-compose down
Cele mai bune practici de securitate Docker
După cum reiese din discuție, securitatea imaginilor Docker este o problemă importantă. Iată câteva dintre cele mai bune practici de securitate Docker:
- Folosește imagini oficiale: Folosește, pe cât posibil, imaginile furnizate oficial, deoarece acestea sunt, de obicei, scanate și întreținute pentru securitate.
- Scanează imaginile pentru vulnerabilități: Folosește instrumente precum Trivy pentru a scana imaginile pentru vulnerabilități cunoscute și actualizează imaginile la timp.
- Folosește principiul privilegiilor minime: Evită rularea containerelor ca utilizator root.
- Limitează resursele containerelor: Folosește cgroups pentru a limita utilizarea CPU și a memoriei de către containere.
- Actualizează imaginile în mod regulat: Păstrează imaginile actualizate pentru a remedia vulnerabilitățile de securitate.
- Folosește instrumente de scanare de securitate: Instrumente precum Snyk, Clair etc. pot fi integrate în fluxul tău CI/CD pentru a scana automat imaginile pentru vulnerabilități.
ConcluzieAcest articol oferă un ghid rapid de inițiere în Docker, acoperind conceptele de bază, pașii de instalare și un exemplu simplu de containerizare a unei aplicații Python. Prin învățarea acestor noțiuni fundamentale, poți începe să utilizezi Docker pentru a construi, testa și implementa aplicațiile tale. Amintește-ți, securitatea este esențială, trebuie să fii mereu atent la securitatea imaginilor Docker și să iei măsurile adecvate pentru a-ți proteja aplicațiile. Deși Kubernetes este puternic în ceea ce privește orchestrarea containerelor la scară largă, Docker rămâne o soluție simplă și eficientă în multe scenarii. Stăpânind Docker, vei fi mai bine pregătit să faci față provocărilor dezvoltării și implementării moderne de software.





