En aquest tema, explorarem com gestionar aplicacions que requereixen múltiples contenidors per funcionar. Això és especialment útil per a aplicacions complexes que necessiten diversos serveis, com bases de dades, servidors web, serveis de cache, etc. Utilitzarem Docker Compose per definir i gestionar aquests serveis de manera eficient.
Objectius d'aprenentatge
- Entendre la necessitat d'aplicacions multi-contenidor.
- Aprendre a definir múltiples serveis en un fitxer
docker-compose.yml. - Gestionar la interacció entre diferents contenidors.
- Executar i gestionar aplicacions multi-contenidor amb Docker Compose.
- Necessitat d'Aplicacions Multi-Contenidor
Conceptes Clau
- Microserveis: Arquitectura on una aplicació es divideix en petits serveis independents.
- Escalabilitat: Capacitat de gestionar més càrrega distribuint-la entre diversos contenidors.
- Aïllament: Cada servei s'executa en el seu propi contenidor, evitant conflictes.
Exemples
- Una aplicació web que utilitza un servidor web (Nginx), una base de dades (MySQL) i un servei de cache (Redis).
- Definint Múltiples Serveis en
docker-compose.yml
docker-compose.ymlEstructura Bàsica
El fitxer docker-compose.yml permet definir múltiples serveis. Aquí teniu un exemple bàsic:
version: '3'
services:
web:
image: nginx:latest
ports:
- "80:80"
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: example
cache:
image: redis:latestExplicació del Codi
- version: Especifica la versió de Docker Compose.
- services: Defineix els serveis que formen part de l'aplicació.
- web: Servei que utilitza la imatge
nginx:latesti exposa el port 80. - db: Servei que utilitza la imatge
mysql:5.7i defineix una variable d'entorn per a la contrasenya de root. - cache: Servei que utilitza la imatge
redis:latest.
- web: Servei que utilitza la imatge
- Interacció entre Contenidors
Xarxes
Docker Compose crea una xarxa per defecte per a tots els serveis definits en el fitxer docker-compose.yml. Això permet que els serveis es comuniquin entre ells utilitzant els seus noms de servei com a hostnames.
Exemple
version: '3'
services:
web:
image: nginx:latest
ports:
- "80:80"
depends_on:
- db
- cache
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: example
cache:
image: redis:latestExplicació del Codi
- depends_on: Assegura que els serveis
dbicaches'iniciïn abans del serveiweb.
- Executant i Gestionant Aplicacions Multi-Contenidor
Comandes de Docker Compose
- Iniciar serveis:
docker-compose up - Aturar serveis:
docker-compose down - Veure logs:
docker-compose logs - Escalar serveis:
docker-compose up --scale web=3
Exemple Pràctic
# Iniciar serveis docker-compose up -d # Veure logs docker-compose logs -f # Aturar serveis docker-compose down
Exercicis Pràctics
Exercici 1: Crear una Aplicació Multi-Contenidor
- Crea un fitxer
docker-compose.ymlque defineixi un servei web (Nginx), una base de dades (PostgreSQL) i un servei de cache (Redis). - Assegura't que el servei web depengui dels altres dos serveis.
- Inicia els serveis utilitzant Docker Compose.
Solució
version: '3'
services:
web:
image: nginx:latest
ports:
- "80:80"
depends_on:
- db
- cache
db:
image: postgres:latest
environment:
POSTGRES_PASSWORD: example
cache:
image: redis:latest# Iniciar serveis docker-compose up -d # Veure logs docker-compose logs -f # Aturar serveis docker-compose down
Resum
En aquesta secció, hem après com definir i gestionar aplicacions multi-contenidor utilitzant Docker Compose. Hem vist com els serveis poden interactuar entre ells i com utilitzar comandes bàsiques de Docker Compose per gestionar aquests serveis. Amb aquests coneixements, estàs preparat per crear i gestionar aplicacions complexes que requereixen múltiples contenidors.
Docker: De Principiant a Avançat
Mòdul 1: Introducció a Docker
- Què és Docker?
- Instal·lant Docker
- Arquitectura de Docker
- Comandes bàsiques de Docker
- Entenent les imatges de Docker
- Creant el teu primer contenidor Docker
Mòdul 2: Treballant amb imatges Docker
- Docker Hub i Repositoris
- Construint imatges Docker
- Conceptes bàsics de Dockerfile
- Gestionant imatges Docker
- Etiquetant i pujant imatges
Mòdul 3: Contenidors Docker
- Executant contenidors
- Cicle de vida del contenidor
- Gestionant contenidors
- Xarxes a Docker
- Persistència de dades amb volums
Mòdul 4: Docker Compose
- Introducció a Docker Compose
- Definint serveis a Docker Compose
- Comandes de Docker Compose
- Aplicacions multi-contenidor
- Variables d'entorn a Docker Compose
Mòdul 5: Conceptes avançats de Docker
- Exploració profunda de xarxes Docker
- Opcions d'emmagatzematge de Docker
- Millors pràctiques de seguretat de Docker
- Optimitzant imatges Docker
- Registre i monitoratge de Docker
Mòdul 6: Docker en producció
- CI/CD amb Docker
- Orquestrant contenidors amb Docker Swarm
- Introducció a Kubernetes
- Desplegant contenidors Docker a Kubernetes
- Escalat i equilibrat de càrrega
