Software engineering
🐳 Docker
- old docker antes de procesar en gpt
- Docker Avanzado Orquestación, Infraestructura y Estrategias de Producción
- Infraestructura Distribuida y Despliegue Multinube
- Infraestructura Multinube paso a paso con Terraform + Kubernetes + ArgoCD
- Integración Dev + Testing + Seguridad con Docker
- DevSecOps + Supply Chain Security con Docker
- Testing Distribuido y Simulación de Microservicios con Docker
- Observabilidad Avanzada y Trazabilidad Distribuida
- Docker Avanzado Integración, Rendimiento y Ecosistema Contemporáneo
- Docker CLI Cheatsheet
- Super Docker Cheat Sheet
🔗 Temas Relacionados
- Linux
- microservicios
- Backend
- Automatizacion y Build
- Kubernetes
- Alternativa open source: Podman
- Sistemas
- Redes
- Networking-docker
- proxy
- nginx
- jenkins
- devops
- ciberseguridad
- Databases
- PHP
- Wordpress
- Moodle
- DevSecOps
⚙️ Entorno y Configuración
- 💻
- Cloudflare Pages
- WSL2 wsl
- Problemas al reinstalar
- Usar
hubypullpara backup - Rutas en
resources - Uninstall-docker-desktop
- Extensiones útiles
- Portainer
- Docker Desktop Extensions (monitorización, UI, limpieza)
🧱 Montaje y Persistencia
- Montar particiones para persistencia de datos
- Ejemplo: Wordpress, MySQL, Databases, PHP
- Configurar puerto del contenedor, variables de entorno y acceso desde
localhost - Docker en Windows 10 y 11 para principiantes con WSL - YouTube
- Configurar puerto del contenedor, variables de entorno y acceso desde
🚀 Guías y Cursos
- Aprende Docker ahora! curso completo gratis desde cero! - YouTube
- DOCKER De NOVATO a PRO! (CURSO COMPLETO EN ESPAÑOL) - YouTube
- Dockerize Next.js & Deploy to VPS (EASY!) - YouTube con nextjs
- Docker & Nodejs. Aplicación de Nodejs en Docker Container - YouTube
🧩 Conceptos Clave
🏗️ Arquitectura Docker
- Host: máquina física o virtual donde corre Docker
- Cliente: CLI o interfaz que envía comandos al daemon
- Daemon: servicio principal que ejecuta contenedores
- Imágenes: plantillas inmutables de contenedores
- Contenedores: instancias ejecutables de imágenes
- Redes y Volúmenes: aislamiento y persistencia de datos
- Tipos de virtualización: namespaces, cgroups, overlay networks
🧾 Docker CLI Básico
🧱 Imágenes y Contenedores
docker ps -a # Lista todos los contenedores
docker stop <id> # Detiene un contenedor
docker image rm node # Elimina una imagen
docker logs --follow # Sigue logs de ejecución
docker run -d mongo # Crea y ejecuta contenedor Mongo
`
- Crear contenedor con nombre:
docker create --name nombre imagen - Iniciar contenedor existente:
docker start <id> - Referenciar contenedores por nombre o ID
- Renombrar contenedores para facilitar mantenimiento
🔌 Networking y Puertos
🌐 Port Mapping
docker create -p27017:27017 --name ito mongo
docker run --name ito2 -p27017:27017 -d mongo
27017:27017→ mapea puerto host:contenedor- Permite acceder a servicios desde el host
- Ideal para peticiones externas (p.ej. conexión a Mongo desde nextjs)
🕸️ Redes Docker
docker network ls # Listar redes
docker network create red # Crear red
docker network rm red # Borrar red
- Conexión entre contenedores mediante
--network - Usar nombre del contenedor como host en conexiones
- Ejemplo: conexión
mongoose.connect("mongodb://mongo:27017/db")
🧰 Dockerfile y Builds
📄 Crear una Imagen Personalizada
docker build -t app:1 .
-tasigna etiqueta (nombre:versión).define el contexto de build- Usar imágenes base ligeras como alpine
🧠 Variables de Entorno
docker create -p27017:27017 \
--name db \
--network redapp \
-e MONGO_INITDB_ROOT_PASSWORD=pass \
mongo
- Mantener contraseñas fuera del Dockerfile
- Preferir
.envoenv_fileen docker compose
📦 Docker Compose
⚙️ Comandos Básicos
docker-compose up -d
docker-compose down
docker-compose up --build
docker-compose.ymldefine múltiples servicios- Links: permiten comunicación entre contenedores
-
Volúmenes:
- Anónimos, host o nombrados
- Ejemplo:
volumes:
- mongo-data:/data/db
🧱 Entornos de Desarrollo
docker compose -f docker-compose-dev.yml up
context: .ydockerfile: Dockerfile.dev- Soporte para hot reload con nodemon o watcher
- Definir ambientes separados para
devyprod
🔄 Ejemplos Prácticos
🧩 App Node.js + MongoDB
- GitHub - nschurmann/mongoapp-curso-docker
- Microservicio Node con Express y Mongoose
- Contenedor Mongo y backend conectados por red interna
🐍 Backend Python + MariaDB
🧪 Testeo y Linting de Dockerfiles
🧹 Limpieza y Optimización
🧽 Liberar Espacio
docker image prune [OPTIONS]
- Eliminar imágenes, contenedores o volúmenes no usados
- Ver guía: Docker Cleanup How to Remove Images, Containers & Volumes-
💾 Reducir Tamaño en WSL2
🔐 Producción y Seguridad
- Best Practices for Container Security
- Curso: Puesta en producción, seguridad y buenas prácticas - YouTube
🔒 Recomendaciones Generales
- Usar
env_fileen lugar deenvinline - Restringir acceso root en contenedores
- Eliminar exposición de puertos innecesarios
- Autenticación SSH con claves RSA
ssh-copy-id usuario@servidor
- Bloquear acceso SSH no autorizado con iptables
- Configurar políticas de
restart,healthcheck, ydeploy.limits - Monitorear contenedores con herramientas devops
💡 Ejemplos y Recursos
📡 Conexión entre Servicios y Microservicios
- Exponer puertos necesarios al host
- Definir variables de entorno globales
- Usar
network namespacepara conectar IPs - Ejemplo: unir contenedor Mongo con servicio Next.js
- Sirve DOCKER para un FRONTEND? / Enseñando docker a @goncypozzo - YouTube
omnivore Docker
type: list
name: "Notas con #docker en Omnivore"
order:
- property: date_saved
direction: desc
columns:
- file.name
- date_saved
filters:
and:
- file.inFolder("Omnivore")
- file.hasTag("docker")
views:
- type: table
name: Table
sort:
- property: file.mtime
direction: DESC
omnivore jenkins
type: list
name: "Notas con #docker en Omnivore"
order:
- property: date_saved
direction: desc
columns:
- file.name
- date_saved
filters:
and:
- file.inFolder("Omnivore")
- file.hasTag("jenkins")
views:
- type: table
name: Table
sort:
- property: file.mtime
direction: DESC
¿Te gusta este contenido? Suscríbete vía RSS