En aquest tema, aprendrem com gestionar la persistència de dades en contenidors Docker utilitzant volums. La persistència de dades és crucial per assegurar que les dades no es perdin quan un contenidor es reinicia o s'elimina.
Què són els volums de Docker?
Els volums de Docker són mecanismes d'emmagatzematge que permeten als contenidors emmagatzemar dades de manera persistent. A diferència dels fitxers dins del sistema de fitxers del contenidor, els volums no es perden quan el contenidor es reinicia o s'elimina.
Tipus de volums
-
Volums anomenats (Named Volumes):
- Són volums que tenen un nom específic i poden ser reutilitzats per diferents contenidors.
- Exemple:
my_volume
-
Volums anònims (Anonymous Volumes):
- Són volums que no tenen un nom específic i són creats per Docker automàticament.
- Exemple:
docker run -v /data busybox
-
Volums host (Bind Mounts):
- Són volums que mapejen un directori del sistema de fitxers de l'amfitrió a un directori dins del contenidor.
- Exemple:
/path/on/host:/path/in/container
Creant i utilitzant volums
Creant un volum
Llistant volums
Inspeccionant un volum
Utilitzant un volum en un contenidor
En aquest exemple, el volum my_volume
es monta al directori /data
dins del contenidor my_container
.
Exemple pràctic
Pas 1: Crear un volum
Pas 2: Executar un contenidor amb el volum
Pas 3: Escriure dades al volum
Pas 4: Verificar les dades
Pas 5: Eliminar el contenidor i crear-ne un de nou
docker rm -f my_data_container docker run -d --name new_data_container -v my_data_volume:/data busybox
Pas 6: Verificar que les dades persisteixen
Exercicis pràctics
Exercici 1: Crear i utilitzar un volum anomenat
- Crea un volum anomenat
test_volume
. - Executa un contenidor
nginx
utilitzant aquest volum, muntant-lo a/usr/share/nginx/html
. - Crea un fitxer
index.html
dins del volum amb el contingut "Hello, World!". - Verifica que el fitxer es pot accedir a través del navegador.
Solució
docker volume create test_volume docker run -d --name test_nginx -v test_volume:/usr/share/nginx/html -p 8080:80 nginx docker exec test_nginx sh -c "echo 'Hello, World!' > /usr/share/nginx/html/index.html" # Accedeix a http://localhost:8080 per veure el contingut
Exercici 2: Utilitzar un volum host
- Crea un directori a l'amfitrió, per exemple
/tmp/host_data
. - Executa un contenidor
busybox
muntant aquest directori a/data
. - Escriu un fitxer dins del directori muntat des del contenidor.
- Verifica que el fitxer existeix al directori de l'amfitrió.
Solució
mkdir -p /tmp/host_data docker run -d --name host_data_container -v /tmp/host_data:/data busybox docker exec host_data_container sh -c "echo 'Persistent Data' > /data/persistent.txt" cat /tmp/host_data/persistent.txt
Resum
En aquesta secció, hem après sobre la persistència de dades en Docker utilitzant volums. Hem vist com crear, gestionar i utilitzar volums per assegurar que les dades es mantinguin fins i tot quan els contenidors es reinicien o s'eliminen. Els volums són una eina poderosa per gestionar dades persistents en entorns de 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