Docker este o platformă de containerizare care permite aplicațiilor să ruleze în medii izolate numite containere. Prin împachetarea unei aplicații împreună cu dependențele sale, Docker asigură că aceasta se comportă în mod consecvent pe diferite servere și sisteme de operare.
Un proiect Docker tipic constă din mai multe componente cheie, inclusiv un fișier Dockerfile, codul sursă al aplicației, definițiile dependențelor și fișiere opționale de orchestrare, precum Docker Compose.
Cuprins
Dockerfile
Un fișier Dockerfile conține instrucțiunile pe care Docker le folosește pentru a construi o imagine de container. Acesta definește sistemul de operare de bază sau mediul de execuție, copiază fișierele aplicației, instalează dependențele și specifică comanda care trebuie executată la pornirea containerului.
Exemplu de fișier Dockerfile pentru o aplicație simplă în Python:
# Utilizați o imagine oficială Python ca imagine de bază
FROM python:3.12
# Setați directorul de lucru în interiorul containerului
WORKDIR /app
# Copiați fișierele aplicației în container
COPY . /app
# Instalați dependențele aplicației
RUN pip install -r requirements.txt
# Rulați aplicația la pornirea containerului
CMD ["python", "app.py"]
requirements.txt
Pentru aplicațiile Python, dependențele sunt de obicei stocate într-un fișier numit requirements.txt. În timpul procesului de creare a imaginii, Docker instalează toate pachetele enumerate în acest fișier.
Exemplu:
Flask==3.0.0
Codul sursă al aplicației
Aplicația în sine este de obicei stocată într-unul sau mai multe fișiere de cod sursă.
Exemplu de aplicație Flask:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello, Dockerized World!'
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
Configurarea Docker Compose
Pentru aplicațiile alcătuite din mai multe servicii, Docker Compose simplifică implementarea și gestionarea. Vă permite să definiți containere, rețele și volume într-un singur fișier de configurare.
Exemplu de fișier docker-compose.yml:
services:
web:
build: .
ports:
- "5000:5000"
În acest exemplu:
- Imaginea este construită din directorul curent.
- Portul 5000 de pe server este mapat la portul 5000 din interiorul containerului.
- Aplicația devine accesibilă prin intermediul unui browser web pe portul 5000.
Crearea unei imagini Docker
Odată ce fișierele proiectului sunt pregătite, construiți imaginea folosind:
docker build -t my-application .
Unde:
docker buildcreează imaginea.-t my-applicationatribuie un nume imaginii..indică directorul curent ca context de compilare.
Rularea unui container Docker
După compilarea imaginii, porniți un container folosind:
docker run -p 5000:5000 my-application
Această comandă:
- Creează un container din imagine.
- Publică portul 5000 din container către portul 5000 de pe mașina gazdă.
- Pornește aplicația.
Utilizarea Docker Compose
Dacă este disponibil un fișier docker-compose.yml, aplicația poate fi pornită cu o singură comandă:
docker compose up -d
Pentru a opri aplicația:
docker compose down
Docker Compose este deosebit de util atunci când o aplicație necesită servicii suplimentare, cum ar fi baze de date, servere de cache sau cozi de mesaje.
Avantajele containerizării cu Docker
Utilizarea Docker oferă mai multe avantaje:
- Mediile sunt consecvente în etapele de dezvoltare, testare și producție.
- Implementarea simplificată a aplicațiilor.
- Izolarea între aplicațiile care rulează pe același server.
- Scalabilitate și gestionare a resurselor mai ușoare.
- Migrare mai rapidă a aplicațiilor între servere.
Rezumat
Docker oferă o modalitate flexibilă și eficientă de a împacheta, implementa și gestiona aplicațiile. O aplicație tipică "dockerizată" include un fișier Dockerfile, codul sursă al aplicației, definițiile dependențelor și, opțional, o configurație Docker Compose. Prin containerizarea aplicațiilor, dezvoltatorii și administratorii pot obține un nivel mai ridicat de coerență, portabilitate și fiabilitate în diferite medii.