Skip to content

Commit 2068feb

Browse files
committed
Refactor README.md: reorganize content structure and enhance clarity on Docker storage management
1 parent c4741c1 commit 2068feb

File tree

1 file changed

+32
-36
lines changed

1 file changed

+32
-36
lines changed

01-contenedores/contenedores-iv/README.md

Lines changed: 32 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -2,32 +2,31 @@
22

33
![Docker](imagenes/Cómo%20gestionar%20el%20almacenamiento%20en%20Docker.jpeg)
44

5-
## 📋 Agenda
6-
7-
- [🔗 Bind mounts](#-bind-mounts)
8-
- [Crear bind mount con --mount](#crear-bind-mount-con---mount)
9-
- [Crear bind mount con -v](#crear-bind-mount-con--v)
10-
- [Bind mount read-only](#usar-el-bind-mount-como-read-only)
11-
- [💾 Volúmenes](#-volúmenes)
12-
- [Crear un volumen](#crear-un-volumen)
13-
- [Usar volumen en contenedor](#usar-volumen-en-contenedor)
14-
- [Crear contenedor con volumen automático](#crear-un-contenedor-que-a-su-vez-crea-un-volumen)
15-
- [Compartir volúmenes entre contenedores](#asociar-el-volúmens-a-varios-contenedores)
16-
- [Inspeccionar volúmenes](#inspeccionar-el-volumen)
17-
- [Eliminar volúmenes](#eliminar-un-volumen-específico)
18-
- [🧠 Tmpfs mount](#-tmpfs-mount)
19-
- [📊 Monitorización](#-monitorización)
20-
- [Eventos en tiempo real](#eventos)
21-
- [Métricas de contenedores](#métricas-de-un-contenedor)
22-
- [Uso de disco](#cuánto-espacio-estamos-usando-del-disco-por-culpa-de-docker)
23-
- [Logs de contenedores](#cómo-ver-los-logs-de-un-contenedor)
24-
- [🔌 Docker extensions](#-docker-extensions)
5+
¡Hola lemoncoder 👋🏻🍋! En algún momento tus contenedores morirán 😥 y tendrás que volver a crearlos. Si no has guardado los datos que tenían, perderás toda la información que almacenaban o generaron. Por eso es importante saber cómo gestionar el almacenamiento en Docker y en esta clase vamos a preocuparnos de ello.
6+
7+
8+
## 🎬 Vídeos de la introducción en el campus
9+
10+
Se asume que has visto los siguientes vídeos para comenzar con este módulo:
11+
12+
| # | Tema | Contenido Clave |
13+
|---|------|-----------------|
14+
| 1 | Teoría Almacenamiento | Tipos (bind mount, volumen, tmpfs), casos de uso, performance, lifecycle y copia inicial de datos en volúmenes vacíos. |
15+
| 2 | Demo 1: Bind mount | Montaje de carpeta local web-content en contenedor nginx para hot-reload de contenido estático. |
16+
| 3 | Demo 2: Volume | Creación y uso de volúmenes named, ver copia inicial, inspección y persistencia tras recrear contenedor. |
17+
| 4 | Demo 3 - Tmpfs |Uso teórico/práctico de --mount type=tmpfs para datos efímeros en memoria y limitaciones en Docker Desktop. |
18+
| 5 | Teoría monitorización | Visión general: eventos, métricas de recursos, logs, buenas prácticas de observabilidad en entornos container. |
19+
| 6 | Demo docker events | Escucha en tiempo real de lifecycle de contenedores y creación/eliminación de recursos. |
20+
| 7 | Demo docker stats | Lectura de uso de CPU, memoria, red y bloqueos para varios contenedores simultáneamente. |
21+
| 8 | Demo docker logs | Uso de docker logs -f, rotación básica, timestamps y filtrado. |
2522

2623
---
2724

28-
En algún momento tus contenedores morirán 😥 y tendrás que volver a crearlos. Si no has guardado los datos que tenían, perderás toda la información que almacenaban o generaron. Por eso es importante saber cómo gestionar el almacenamiento en Docker.
25+
# 📂 Tipos de almacenamiento en Docker
26+
27+
Antes de nada es importante que sepas que **la forma de asignar almacenamiento externo a un contenedor es mediante lo que se conoce montajes (mounts)**. Un montaje es una forma de conectar una carpeta del host (tu máquina) con una carpeta del contenedor. De esta forma, el contenedor puede leer y escribir datos en esa carpeta externa. Si vienes de Linux posiblemente te suene el concepto. Piensalo como si hicieras un `mount` en Linux para montar un disco externo o una carpeta compartida en tu sistema de archivos.
2928

30-
Existen diferentes formas de almacenar datos en Docker. En este módulo vamos a ver las siguientes:
29+
Pues bien, en el mundo de los contenedores existen tres tipos principales de montajes:
3130

3231
- 🔗 **Bind mounts**: Enlace directo entre carpetas del host y contenedor
3332
- 💾 **Volúmenes**: Almacenamiento persistente gestionado por Docker
@@ -44,14 +43,17 @@ Para crear un bind mount, utiliza la opción `--mount` o `-v` al crear un conten
4443
```bash
4544
cd 01-contenedores/contenedores-iv
4645

47-
docker run -d --name halloween-web --mount type=bind,source="$(pwd)"/web-content,target=/usr/share/nginx/html/ -p 8080:80 nginx
46+
docker run -d \
47+
--name halloween-web \
48+
--mount type=bind,source="$(pwd)"/web-content,target=/usr/share/nginx/html/ \
49+
-p 8080:80 nginx
4850
```
4951

5052
Si analizamos este comando tenemos:
5153

5254
- 🐳 `docker run`: Crea y arranca un contenedor.
5355
- 🌙 `-d`: Lo hace en segundo plano.
54-
- 🏷️ `--name devtest`: Le pone nombre al contenedor.
56+
- 🏷️ `--name halloween-web`: Le pone nombre al contenedor.
5557
- 📁 `--mount type=bind,source="$(pwd)"/web-content,target=/usr/share/nginx/html/`: Crea un bind mount. El tipo de montaje es bind, la carpeta de origen es la carpeta actual (`$(pwd)`) más `web-content` y la carpeta de destino es `/usr/share/nginx/html/`.
5658

5759
> [!NOTE]
@@ -62,21 +64,13 @@ Si analizamos este comando tenemos:
6264
Si quisieras hacerlo con `-v`:
6365

6466
```bash
65-
docker run -d --name halloween-web-v -v "$(pwd)"/web-content:/usr/share/nginx/html/ -p 8081:80 nginx
67+
docker run -d --name halloween-web-v \
68+
-v "$(pwd)"/web-content:/usr/share/nginx/html/ \
69+
-p 8081:80 nginx
6670
```
6771

6872
🔄 Si cambias el contenido de la carpeta `web-content` en tu máquina local, también cambiará en la carpeta `/usr/share/nginx/html/` en tu contenedor.
6973

70-
### 🚀 Ejemplo práctico: Desarrollo en vivo
71-
72-
Vamos a ver el poder de los bind mounts para desarrollo. Con el contenedor corriendo, edita el archivo `web-content/index.html`:
73-
74-
```bash
75-
# Edita el archivo (puedes usar cualquier editor)
76-
echo "<h1>¡Cambio en vivo!</h1><p>Hora actual: $(date)</p>" > web-content/index.html
77-
78-
# Recarga la página en http://localhost:8081 y verás el cambio inmediatamente
79-
```
8074

8175
**🎯 Casos de uso reales para bind mounts:**
8276
- **Desarrollo web**: Cambios instantáneos sin rebuild
@@ -94,7 +88,9 @@ echo "<h1>¡Cambio en vivo!</h1><p>Hora actual: $(date)</p>" > web-content/index
9488
También puedes montar un bind mount como read-only. Esto significa que desde tu máquina podrás cambiar el contenido sin problemas pero desde dentro del contenedor no se podrá. 🔒 Para hacerlo, añade la opción `readonly` al comando `--mount`. Por ejemplo:
9589

9690
```bash
97-
docker run -d --name halloween-readonly --mount type=bind,source="$(pwd)"/web-content,target=/usr/share/nginx/html/,readonly -p 8082:80 nginx
91+
docker run -d --name halloween-readonly \
92+
--mount type=bind,source="$(pwd)"/web-content,target=/usr/share/nginx/html/,readonly \
93+
-p 8082:80 nginx
9894
```
9995

10096
Como está en modo lectura, en teoría no podría crear ningún archivo dentro del directorio donde está montada mi carpeta local:

0 commit comments

Comments
 (0)