En aquest tema, explorarem les diferents opcions d'emmagatzematge que ofereix Docker per gestionar les dades dels contenidors. L'emmagatzematge és un aspecte crucial per garantir la persistència de les dades i la seva accessibilitat, fins i tot després de reiniciar o eliminar els contenidors.

Objectius d'aprenentatge

  • Entendre els diferents tipus d'emmagatzematge en Docker.
  • Aprendre a crear i gestionar volums.
  • Conèixer les diferències entre volums, bind mounts i tmpfs mounts.
  • Implementar les millors pràctiques per a l'emmagatzematge de dades en Docker.

Tipus d'emmagatzematge en Docker

Docker ofereix tres tipus principals d'emmagatzematge:

  1. Volums (Volumes)
  2. Bind Mounts
  3. Tmpfs Mounts

  1. Volums (Volumes)

Els volums són la forma recomanada d'emmagatzematge en Docker. Són gestionats per Docker i es poden crear, llistar i eliminar utilitzant les comandes de Docker.

Característiques dels volums:

  • Són independents del cicle de vida dels contenidors.
  • Es poden compartir entre múltiples contenidors.
  • Són gestionats per Docker, el que facilita la seva administració.

Crear un volum:

docker volume create my_volume

Llistar volums:

docker volume ls

Utilitzar un volum en un contenidor:

docker run -d --name my_container -v my_volume:/data busybox

Eliminar un volum:

docker volume rm my_volume

  1. Bind Mounts

Els bind mounts permeten muntar un directori o fitxer del sistema de fitxers de l'amfitrió dins d'un contenidor. A diferència dels volums, els bind mounts no són gestionats per Docker.

Característiques dels bind mounts:

  • Permeten accedir directament a fitxers i directoris de l'amfitrió.
  • Són útils per a desenvolupament, ja que permeten veure els canvis en temps real.
  • No són tan segurs ni flexibles com els volums.

Utilitzar un bind mount en un contenidor:

docker run -d --name my_container -v /path/on/host:/path/in/container busybox

  1. Tmpfs Mounts

Els tmpfs mounts emmagatzemen dades en la memòria volàtil de l'amfitrió. Són útils per a dades temporals que no necessiten persistència.

Característiques dels tmpfs mounts:

  • Les dades es perden quan el contenidor es reinicia o s'atura.
  • Són molt ràpids, ja que utilitzen la memòria RAM.

Utilitzar un tmpfs mount en un contenidor:

docker run -d --name my_container --tmpfs /path/in/container busybox

Comparació d'opcions d'emmagatzematge

Tipus d'emmagatzematge Persistència Gestió Ús recomanat
Volums Docker Dades persistents, compartició entre contenidors
Bind Mounts Amfitrió Desenvolupament, accés directe a fitxers de l'amfitrió
Tmpfs Mounts No Amfitrió Dades temporals, alta velocitat

Exercicis pràctics

Exercici 1: Crear i utilitzar un volum

  1. Crea un volum anomenat data_volume.
  2. Executa un contenidor busybox que utilitzi aquest volum per emmagatzemar dades en el directori /data.
  3. Crea un fitxer dins del contenidor i comprova que el fitxer es manté després de reiniciar el contenidor.

Solució:

# Crear el volum
docker volume create data_volume

# Executar el contenidor amb el volum
docker run -d --name my_busybox -v data_volume:/data busybox

# Crear un fitxer dins del contenidor
docker exec my_busybox sh -c "echo 'Hello, Docker!' > /data/hello.txt"

# Reiniciar el contenidor
docker restart my_busybox

# Comprovar que el fitxer encara existeix
docker exec my_busybox cat /data/hello.txt

Exercici 2: Utilitzar un bind mount

  1. Crea un directori en el teu sistema d'amfitrió anomenat host_data.
  2. Executa un contenidor busybox que utilitzi aquest directori com a bind mount en el directori /data del contenidor.
  3. Crea un fitxer dins del contenidor i comprova que el fitxer apareix en el directori de l'amfitrió.

Solució:

# Crear el directori en l'amfitrió
mkdir /path/to/host_data

# Executar el contenidor amb el bind mount
docker run -d --name my_busybox -v /path/to/host_data:/data busybox

# Crear un fitxer dins del contenidor
docker exec my_busybox sh -c "echo 'Hello, Host!' > /data/hello.txt"

# Comprovar que el fitxer existeix en l'amfitrió
cat /path/to/host_data/hello.txt

Resum

En aquesta secció, hem après sobre les diferents opcions d'emmagatzematge que ofereix Docker: volums, bind mounts i tmpfs mounts. Hem vist com crear i gestionar volums, així com les diferències i usos recomanats per a cada tipus d'emmagatzematge. A més, hem realitzat exercicis pràctics per reforçar els conceptes apresos. En la següent secció, explorarem les millors pràctiques de seguretat en Docker.

© Copyright 2024. Tots els drets reservats