Acest curs introduce conceptul de containere, utilizarea Docker și comenzile esențiale pentru gestionarea acestora.
Docker este o platformă pentru crearea, rularea și gestionarea containerelor. Containerele sunt unități portabile care includ codul, dependențele și configurațiile necesare pentru a rula o aplicație.
Docker poate fi instalat pe Windows, macOS și Linux. Pe Linux, instalarea se face cu:
curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh
Pe Windows și macOS, se poate descărca Docker Desktop de pe site-ul oficial: https://www.docker.com/products/docker-desktop.
Lista principalelor comenzi Docker pentru gestionarea containerelor și imaginilor:
# Verificarea versiunii Docker
docker --version
# Lista containerelor active
docker ps
# Lista tuturor containerelor (inclusiv cele oprite)
docker ps -a
# Lista imaginilor disponibile
docker images
# Descărcarea unei imagini din Docker Hub
docker pull ubuntu
# Crearea și rularea unui container
docker run -it ubuntu bash
# Oprirea unui container
docker stop <ID_CONTAINER>
# Ștergerea unui container
docker rm <ID_CONTAINER>
# Ștergerea unei imagini Docker
docker rmi <ID_IMAGINE>
# Ștergerea tuturor containerelor și imaginilor
docker system prune -a
Un `Dockerfile` este un fișier care definește pașii necesari pentru construirea unei imagini personalizate.
FROM python:3.9
WORKDIR /app
COPY . /app
RUN pip install -r requirements.txt
CMD ["python", "app.py"]
Construirea și rularea unui container dintr-un Dockerfile:
# Construirea unei imagini
docker build -t myapp .
# Rularea unui container din imaginea creată
docker run -p 5000:5000 myapp
Volumele sunt utilizate pentru a păstra datele persistente între rulările containerelor.
# Crearea unui volum
docker volume create myvolume
# Montarea unui volum într-un container
docker run -v myvolume:/data ubuntu
Docker permite crearea de rețele personalizate pentru a comunica între containere.
# Crearea unei rețele personalizate
docker network create mynetwork
# Conectarea unui container la rețea
docker run --network mynetwork ubuntu