Docker paso a paso: Compose, Nginx, MySQL y entrar a un contenedor
Esta guía reúne en un solo lugar mi serie de videos de Docker: Docker Compose, un servidor Nginx, una base de datos MySQL y cómo entrar a un contenedor para ejecutar comandos, con un respaldo de la base de datos como ejemplo. Cada sección tiene su video y los comandos base para que puedas repetirlo en tu máquina.
Si todavía no tienes claro qué es Docker, empieza por ¿Qué es Docker? y vuelve aquí. Necesitas tener Docker instalado; todos los comandos van en una terminal.
¿Qué es Docker Compose?
Docker Compose te permite describir en un archivo (docker-compose.yml) los contenedores de tu aplicación, sus puertos y sus volúmenes, y levantarlo todo con un solo comando en lugar de escribir varios docker run. Aquí tienes la explicación corta en video:
Un ejemplo mínimo con un servidor web:
services:
web:
image: nginx
ports:
- "8080:80"
Lo levantas con docker compose up -d y lo detienes con docker compose down. En cómo instalar WordPress con Docker usamos Compose para armar un sitio completo.
Nginx en Docker
Continuamos con la serie: aquí levantamos un servidor Nginx en Docker. Si prefieres ver el video en mi canal de YouTube, puedes suscribirte aquí, o verlo a continuación.
El comando base descarga la imagen y publica el puerto 80 del contenedor en el 8080 de tu máquina:
docker run -d --name mi-nginx -p 8080:80 nginx
Abre http://localhost:8080 en el navegador y verás la página de bienvenida de Nginx.
MySQL en Docker
Continuando con la serie de videos de Docker, ahora levantamos un contenedor de MySQL:
Para que los datos no se pierdan al borrar el contenedor, guárdalos en un volumen:
docker run -d --name mi-mysql \
-e MYSQL_ROOT_PASSWORD=cambia-esta-clave \
-v mysql-datos:/var/lib/mysql \
-p 3306:3306 mysql:8
Cambia la contraseña por una tuya. Con la base de datos corriendo ya tienes algo con qué practicar la siguiente sección.
Cómo entrar a un contenedor de Docker
Hoy vemos cómo ejecutar comandos dentro de un contenedor y cómo ingresar a él. Para el ejemplo realizamos un respaldo de una base de datos MySQL.
Para abrir una terminal dentro del contenedor:
docker exec -it mi-mysql bash
Y para sacar un respaldo de MySQL sin entrar, directo a un archivo de tu máquina:
docker exec -i mi-mysql sh -c 'mysqldump -u root -p"$MYSQL_ROOT_PASSWORD" --all-databases' > respaldo.sql
Resumen de comandos
docker compose up -d/docker compose down: levantar y detener lo definido en tudocker-compose.yml.docker ps: ver los contenedores en ejecución (docker ps -aincluye los detenidos).docker logs mi-nginx: ver lo que escribe un contenedor.docker exec -it <contenedor> bash: entrar a un contenedor.docker stopydocker rm: detener y borrar un contenedor.