Skip to content

Commit c49ad8a

Browse files
committed
Add resource limitation guidelines for Docker containers in README.md
1 parent 15416a2 commit c49ad8a

File tree

4 files changed

+418
-101
lines changed

4 files changed

+418
-101
lines changed

01-contenedores/contenedores-i/README.md

Lines changed: 1 addition & 101 deletions
Original file line numberDiff line numberDiff line change
@@ -426,106 +426,6 @@ docker rename NOMBRE_ASIGNADO_POR_DOCKER hello-world
426426
docker ps -a
427427
```
428428

429-
## 💾 Limitar recursos: CPU y Memoria
430-
431-
Es importante limitar los recursos que puede usar un contenedor para evitar que consuma todos los recursos del host y afecte a otros contenedores o servicios.
432-
433-
### 📊 Limitar Memoria (`--memory` o `-m`)
434-
435-
Especifica la cantidad máxima de memoria RAM que puede usar el contenedor:
436-
437-
```bash
438-
docker run -d --memory="512m" --name web -p 8080:80 httpd
439-
```
440-
441-
**Formatos válidos:**
442-
- `512m` - 512 megabytes
443-
- `1g` - 1 gigabyte
444-
- `2g` - 2 gigabytes
445-
446-
**🔍 Cómo funciona:**
447-
- El contenedor puede usar hasta la cantidad especificada
448-
- Si intenta exceder el límite, Docker lo mata (OOM - Out of Memory)
449-
- Sin límite especificado, puede usar toda la RAM disponible
450-
451-
### ⚙️ Limitar CPU (`--cpus`)
452-
453-
Especifica cuántos núcleos de CPU puede usar el contenedor:
454-
455-
```bash
456-
docker run -d --cpus="1.5" --name web -p 8080:80 httpd
457-
```
458-
459-
**Ejemplos de uso:**
460-
- `--cpus="1"` - Usar como máximo 1 núcleo CPU completo
461-
- `--cpus="0.5"` - Usar el 50% de 1 núcleo (compartido)
462-
- `--cpus="2"` - Usar 2 núcleos completos
463-
464-
**🔍 Cómo funciona:**
465-
- El contenedor puede usar hasta ese número de núcleos
466-
- Si hay más disponibles, puede usarlos cuando otros contenedores no los necesitan
467-
- Sin límite especificado, puede usar todos los núcleos
468-
469-
### 📋 Limitar CPU Priority (`--cpu-shares`)
470-
471-
Controla la prioridad de CPU en caso de contención:
472-
473-
```bash
474-
docker run -d --cpu-shares=1024 --name web -p 8080:80 httpd
475-
```
476-
477-
**Por defecto:** Cada contenedor tiene 1024 shares
478-
- Si todos los contenedores tienen 1024, comparten CPU equitativamente
479-
- Si uno tiene 512 y otro 1024, el de 1024 recibe el doble de CPU cuando hay contención
480-
481-
### 🔗 Combinando límites de CPU y Memoria
482-
483-
**Ejemplo práctico: Servidor web seguro**
484-
485-
```bash
486-
docker run -d \
487-
--name production-web \
488-
--memory="2g" \
489-
--cpus="1.5" \
490-
--cpu-shares=1024 \
491-
-p 8080:80 \
492-
httpd
493-
```
494-
495-
**Esto significa:**
496-
- ✅ Máximo 2GB de RAM
497-
- ✅ Máximo 1.5 núcleos de CPU
498-
- ✅ Prioridad normal en caso de contención
499-
500-
### 📊 Ver uso de recursos en tiempo real
501-
502-
```bash
503-
# Ver estadísticas de un contenedor específico
504-
docker stats web
505-
506-
# Ver estadísticas de todos los contenedores
507-
docker stats
508-
509-
# Ver con formato personalizado
510-
docker stats --no-stream
511-
```
512-
513-
**🎯 Casos de uso comunes:**
514-
515-
| Caso | Configuración |
516-
|------|---------------|
517-
| Servidor web de producción | `--memory="2g" --cpus="2"` |
518-
| Base de datos | `--memory="4g" --cpus="4"` |
519-
| Aplicación pequeña/prueba | `--memory="256m" --cpus="0.5"` |
520-
| Tarea background | `--memory="512m" --cpus="0.25"` |
521-
522-
**⚠️ Importante:**
523-
- Si no especificas límites, el contenedor puede consumir todos los recursos
524-
- Establecer límites muy bajos puede hacer que la aplicación vaya lenta
525-
- Monitorea siempre el uso real vs los límites establecidos
526-
527-
**💡 Recomendación:** Para aplicaciones en producción, siempre establece límites de memoria y CPU para proteger la estabilidad del sistema.
528-
529429
## �🔄 ¿Cómo ejecutar comandos en un contenedor ya en ejecución?
530430

531431
Puedes conectarte a un contenedor en ejecución desde Docker Desktop o desde el CLI. Por ejemplo:
@@ -653,7 +553,7 @@ docker run --name mysqlserver \
653553
```
654554

655555
- `docker run`: lanza un contenedor.
656-
- `--name mysqlserver`: nombre del contenedor.
556+
- `--name db`: nombre del contenedor.
657557
- `-p 1433:1433`: mapea el puerto.
658558
- `-e 'ACCEPT_EULA=Y'`: acepta la licencia.
659559
- `-e 'SA_PASSWORD=Lem0nCode!'`: contraseña del usuario `sa`.

0 commit comments

Comments
 (0)