Docker: conceptos y primer contenedor explicado
- Imagen, contenedor y registro
- Primera prueba: una web local
- Qué significa publicar un puerto
- Detener, iniciar y eliminar
- Persistencia: la parte que suele causar pérdidas
- Docker frente a una máquina virtual
- Cuándo conviene pasar a Compose
- Preguntas frecuentes
- En pocas palabras
- Conclusión
- Fuentes y documentación
Docker es una plataforma para construir y ejecutar aplicaciones en contenedores. Una imagen reúne archivos y configuración; un contenedor es una instancia que se ejecuta a partir de ella. Esta separación ayuda a recrear entornos y distribuir aplicaciones, pero no elimina por sí sola los problemas de seguridad, datos o compatibilidad.
Esta introducción está pensada para quien ya tiene Docker funcionando y quiere entender los conceptos antes de copiar un archivo Compose de varias aplicaciones.
Imagen, contenedor y registro
La imagen funciona como una base reutilizable. Puedes crear varios contenedores a partir de ella y cada uno tendrá su propia ejecución. Un registro almacena imágenes; descargar una no significa que el servicio ya esté instalado como aplicación permanente en tu sistema.
Las etiquetas, como stable o una versión mayor, pueden apuntar a nuevas revisiones con el tiempo. Para reproducibilidad estricta se puede usar un digest. Esa fijación también exige un proceso de actualización: conservar para siempre una versión vulnerable no es mantenimiento.
Primera prueba: una web local
El siguiente ejemplo ejecuta Nginx y publica el puerto 80 del contenedor en el 8080 de tu equipo. Se liga a loopback para que la demostración no pretenda abrir un sitio público.
docker run -d --name ejemplo-web \
-p 127.0.0.1:8080:80 nginx:stable-alpine
docker ps
curl -I http://127.0.0.1:8080
docker logs --tail 20 ejemplo-web
Una respuesta HTTP muestra que la petición llegó a un servidor. Comprueba además que corresponde al contenedor correcto, especialmente si ya utilizas proxies o varios servicios locales.
Qué significa publicar un puerto
El proceso dentro del contenedor escucha en su propio entorno de red. La publicación conecta una dirección y un puerto del host con un puerto del contenedor. EXPOSE en un Dockerfile documenta un puerto, pero no equivale a publicarlo.
No abras puertos de bases de datos por costumbre. Dos servicios en la misma red Docker pueden comunicarse por su nombre de servicio sin exponer la base a internet. La aplicación pública y la base necesitan controles distintos.
Detener, iniciar y eliminar
docker stop ejemplo-web
docker start ejemplo-web
docker inspect ejemplo-web
docker stop ejemplo-web
docker rm ejemplo-web
Detener no elimina el contenedor. Eliminarlo sí descarta su capa de escritura. Antes de borrar, distingue qué información vive en esa capa y cuál está guardada en un volumen o en una carpeta del host.
Persistencia: la parte que suele causar pérdidas
Un volumen conserva datos independientemente de un contenedor determinado. Un bind mount utiliza una ruta del host. Ambos tienen implicaciones de permisos, respaldo y portabilidad.
Si una base guarda información únicamente dentro de la capa del contenedor, recrearlo puede perderla. Si utiliza un volumen, eliminar ese volumen también puede destruirla. Lee las opciones de limpieza antes de usar comandos que borren recursos.
Un volumen no es un backup. Para datos importantes necesitas una copia consistente fuera del entorno y un procedimiento de restauración que hayas comprobado.
Docker frente a una máquina virtual
Los contenedores comparten aspectos del sistema anfitrión y no proporcionan exactamente el mismo aislamiento que una máquina virtual. En Docker Desktop interviene además una capa de virtualización para ejecutar contenedores Linux en otros sistemas.
La arquitectura de la imagen también importa. No asumas que un binario para amd64 correrá de forma nativa en arm64. La emulación puede ayudar en algunos escenarios, con costos y limitaciones propios.
Cuándo conviene pasar a Compose
Cuando una aplicación depende de varios servicios, Compose permite declarar configuración, redes y volúmenes en archivos. Eso mejora la repetibilidad, pero no convierte automáticamente el proyecto en una plataforma de alta disponibilidad.
Antes de añadir complejidad, aprende a identificar procesos, revisar logs, limitar puertos y recuperar datos. Comprender esas piezas reduce la dependencia de tutoriales que solo muestran un comando exitoso.
Preguntas frecuentes
¿Un contenedor mantiene mis archivos al reiniciar?
Reiniciar el mismo contenedor y recrearlo son operaciones distintas. La persistencia debe diseñarse con volúmenes o mounts apropiados y comprobarse antes de confiar datos reales.
¿Puedo usar cualquier imagen que encuentre?
Revisa procedencia, documentación, mantenimiento y arquitectura. Una imagen puede ejecutar código con acceso a redes, archivos o credenciales que le hayas proporcionado.
¿Docker hace que mi aplicación sea segura?
No por sí solo. La seguridad también depende del código, las imágenes, los permisos, los secretos, los puertos y el mantenimiento del host.
En pocas palabras
Docker permite ejecutar aplicaciones con su entorno empaquetado en imágenes. Los contenedores, las redes y los volúmenes cumplen funciones diferentes; entenderlas evita confundir una prueba con un despliegue preparado.
Conclusión
Repite el ejemplo, revisa sus puertos y conserva las instrucciones que permiten recrearlo. Después incorpora datos persistentes y una prueba de recuperación antes de alojar información importante.
Para continuar, revisa Cómo instalar Docker en Ubuntu 24.04: guía práctica paso a paso y WordPress en Docker (ARM y x86): guía completa con docker-compose, Dockerfile y PHP.ini.
