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.yml
Estructura 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:latest
Explicació 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:latest
i exposa el port 80. - db: Servei que utilitza la imatge
mysql:5.7
i 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:latest
Explicació del Codi
- depends_on: Assegura que els serveis
db
icache
s'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.yml
que 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