
Los contenedores han revolucionado la forma en que desarrollamos, desplegamos y ejecutamos aplicaciones. A diferencia de las máquinas virtuales, que emulan un sistema operativo completo, los contenedores comparten el kernel del sistema operativo anfitrión, lo que los hace mucho más ligeros y eficientes. Esta eficiencia los convierte en una excelente opción para el desarrollo moderno y la implementación de microservicios.
Docker es la plataforma de contenedores más popular actualmente, y Linux es el sistema operativo donde Docker brilla con más intensidad. Con Docker, puedes empaquetar una aplicación con todas sus dependencias en una unidad estandarizada, garantizando que se ejecute consistentemente en cualquier entorno, desde el portátil de un desarrollador hasta un servidor de producción. Este artículo te guiará a través del proceso de instalación y uso de Docker en un sistema Linux.
Instalación de Docker
El proceso de instalación varía según la distribución de Linux que utilices. Para Debian y Ubuntu, puedes usar el gestor de paquetes apt. Primero, actualiza la lista de paquetes con sudo apt update y luego instala Docker con sudo apt install docker. Este comando descargará e instalará Docker y sus dependencias.
Una vez instalado, es crucial agregar tu usuario al grupo docker para evitar utilizar sudo cada vez que ejecutes un comando de Docker. Puedes hacerlo con el comando sudo usermod -aG docker $USER, y luego debes reiniciar tu sesión para que los cambios surtan efecto. Esto permitirá que tu usuario ejecute Docker sin privilegios de administrador.
Finalmente, verifica la instalación ejecutando docker run hello-world. Si todo está configurado correctamente, Docker descargará una imagen de ejemplo, ejecutará un contenedor, e imprimirá un mensaje de saludo. Este comando es una prueba rápida y sencilla para asegurar que Docker está funcionando correctamente.
Imágenes Docker
Las imágenes Docker son plantillas de solo lectura que contienen las instrucciones para crear un contenedor. Una imagen contiene todo lo que necesita una aplicación para ejecutarse: el código, el tiempo de ejecución, las herramientas del sistema, las bibliotecas y las variables de entorno. Las imágenes se construyen a partir de un archivo llamado Dockerfile.
Para buscar imágenes en Docker Hub, el registro público de Docker, puedes usar el comando docker search <nombre_de_la_imagen>. Docker Hub alberga una gran cantidad de imágenes preconstruidas, desde distribuciones de Linux hasta bases de datos y servidores web. Utilizar imágenes existentes puede ahorrarte mucho tiempo y esfuerzo.
Una vez encontrada la imagen deseada, puedes descargarla utilizando el comando docker pull <nombre_de_la_imagen>. Este comando descargará la imagen a tu sistema local, preparándola para ser usada en la creación de contenedores. Recuerda que las imágenes pueden ser grandes, así que asegúrate de tener suficiente espacio en disco.
Ejecutando Contenedores
Una vez que tienes una imagen, puedes ejecutar un contenedor a partir de ella usando el comando docker run <nombre_de_la_imagen>. Este comando creará un nuevo contenedor basado en la imagen y lo ejecutará. De forma predeterminada, el contenedor se ejecutará en primer plano y mostrará su salida en la terminal.
Para ejecutar un contenedor en segundo plano (detached mode), utiliza la opción -d. Esto permite que el contenedor se ejecute en segundo plano sin bloquear tu terminal. Puedes monitorear contenedores en ejecución con el comando docker ps.
Para detener un contenedor en ejecución, usa el comando docker stop <ID_del_contenedor>. Puedes obtener el ID del contenedor usando docker ps. Es importante saber cómo detener los contenedores para liberar recursos del sistema.
Networking y Puertos

Docker utiliza un sistema de networking virtual para permitir que los contenedores se comuniquen entre sí y con el mundo exterior. Por defecto, cada contenedor tiene su propia dirección IP y aislado de la red del anfitrión. Sin embargo, puedes exponer puertos del contenedor al anfitrión para permitir el acceso desde el exterior.
Para exponer un puerto, utiliza la opción -p al ejecutar el contenedor. La sintaxis es -p <puerto_anfitrión>:<puerto_contenedor>. Esto mapeará el puerto especificado en el anfitrión al puerto correspondiente en el contenedor. Esto permite acceder a los servicios que se ejecutan dentro del contenedor desde tu navegador o desde otros contenedores.
También puedes crear redes Docker personalizadas para conectar contenedores entre sí. Esto te permite crear entornos más complejos y controlar cómo se comunican los contenedores. El comando docker network create <nombre_de_la_red> crea una nueva red.
Gestión de Volúmenes
Los volúmenes Docker son el mecanismo preferido para persistir datos generados por y utilizados por contenedores. A diferencia de los datos almacenados dentro del contenedor, que se pierden cuando el contenedor se detiene y elimina, los volúmenes están diseñados para ser persistentes. Esto garantiza que tus datos no se pierdan.
Para crear un volumen, usa el comando docker volume create <nombre_del_volumen>. Luego, puedes montar el volumen en un contenedor usando la opción -v al ejecutar el contenedor. La sintaxis es -v <nombre_del_volumen>:<ruta_de_montaje>. Esto monta el volumen en la ruta especificada dentro del contenedor.
Los volúmenes son útiles para almacenar bases de datos, archivos de configuración y otros datos que necesitas mantener incluso si el contenedor se detiene o se elimina. Utilizar volúmenes es una buena práctica para garantizar la seguridad y la persistencia de tus datos.
Conclusión
Docker facilita enormemente la gestión y el despliegue de aplicaciones. Al encapsular aplicaciones y sus dependencias en contenedores, se garantiza la consistencia entre diferentes entornos, reduciendo significativamente los problemas de “funciona en mi máquina”. La capacidad de aislar aplicaciones y crear entornos reproducibles es un cambio de paradigma en el desarrollo de software moderno.
Docker es una herramienta poderosa y versátil que puede mejorar significativamente tu flujo de trabajo de desarrollo y despliegue. Aprender a utilizar Docker es una habilidad valiosa para cualquier desarrollador o administrador de sistemas que trabaje con aplicaciones modernas. La comunidad Docker es activa y ofrece una gran cantidad de recursos para aprender y resolver problemas.