Contenido
Vamos a creae una base de datos naciendo en un contenedor, y desde fuera un cliente elegante (Workbench) hablando con ella a través del vacío digital. Eso es red, puertos y aislamiento en acción.
- Crear contenedor MySQL.
- Publicar puerto al host.
- Conectarse desde MySQL Workbench.
- Ver que el contenedor es “otro sistema”, pero accesible.
Arquitectura:
Workbench (Host) → localhost:3306 → Contenedor MySQL
Paso 1 — Crear contenedor MySQL
En terminal:
docker run -d \
--name mysql-demo \
-e MYSQL_ROOT_PASSWORD=1234 \
-e MYSQL_DATABASE=demo \
-p 3306:3306 \
mysql:8
Qué significa cada parte (esto es lo que debes explicar)
-d→ modo daemon (segundo plano)--name mysql-demo→ nombre del contenedorMYSQL_ROOT_PASSWORD→ password del root (obligatorio)MYSQL_DATABASE→ crea BD inicial-p 3306:3306→ publica puerto MySQL al hostmysql:8→ imagen oficial
Paso 2 — Verificar que el contenedor está vivo
docker ps
Debe aparecer algo como:
mysql-demo mysql:8 Up ... 0.0.0.0:3306->3306/tcp
Si no arranca:
docker logs mysql-demo
MySQL tarda unos segundos en inicializar. Paciencia científica.
Paso 3 — Conectar desde MySQL Workbench
En Workbench → New Connection
Parámetros:
- Host: 127.0.0.1
- Port: 3306
- User: root
- Password: 1234
Test Connection → Connect.
Si todo va bien, verás la BD demo.
Paso 4 — Prueba real
En Workbench ejecuta:
CREATE TABLE alumnos (
id INT AUTO_INCREMENT PRIMARY KEY,
nombre VARCHAR(50)
);
INSERT INTO alumnos (nombre) VALUES ('Neo'), ('Trinity');
SELECT * FROM alumnos;
Luego demuestra algo mágico:
Entra al contenedor
docker exec -it mysql-demo mysql -uroot-p1234
Dentro:
USE demo;
SELECT * FROM alumnos;
Los datos están ahí → Workbench y contenedor hablan con la misma base.
Eso hace que los alumnos comprendan el concepto de servicio expuesto por red.
Problemas típicos (para que no te sabotee el universo)
Puerto ocupado
Si tienes MySQL local:
lsof -i :3306
Cambia puerto:
-p3307:3306
Y en Workbench → puerto 3307.
No conecta
Comprobar:
docker ps
docker logs mysql-demo
Esperar inicialización (MySQL tarda).
Workbench no conecta pero CLI sí
A veces el plugin de auth:
docker exec -it mysql-demo mysql -uroot-p1234
En SQL
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '1234';
FLUSH PRIVILEGES;










![[Reto] - Despliegue de servicios con Docker y Docker Compose b2427176-50e6-4af6-ada1-f4903698014f](https://laaventuradeaprender.com/wp-content/uploads/2026/06/b2427176-50e6-4af6-ada1-f4903698014f-150x150.png)




![[Reto] - Dockerizar app JEE (Tomcat 10 + MySQL) 4b9bc3d2-8253-4715-adf6-d5b1eed959d3](https://laaventuradeaprender.com/wp-content/uploads/2026/02/4b9bc3d2-8253-4715-adf6-d5b1eed959d3-150x150.png)