Como configurar Docker

 

www.onlinetis.com

Docker es una plataforma de código abierto que facilita la creación, el despliegue y la ejecución de aplicaciones utilizando contenedores. A diferencia de las máquinas virtuales, los contenedores de Docker comparten el mismo sistema operativo del host, lo que los hace más ligeros y rápidos.


Conceptos Clave

  1. Contenedor: Es la unidad fundamental de Docker. Un contenedor es un entorno de software ligero, portátil y autónomo que empaqueta una aplicación y todas sus dependencias (bibliotecas, configuraciones, etc.). Esto garantiza que la aplicación se ejecute de la misma manera, independientemente del entorno en el que se despliegue.

  2. Imagen: Es una plantilla de solo lectura que se utiliza para crear contenedores. Una imagen incluye el código de la aplicación, un sistema operativo mínimo y cualquier otra dependencia necesaria. Se pueden obtener imágenes de un registro (como Docker Hub) o crearlas a partir de un Dockerfile.

  3. Dockerfile: Es un archivo de texto que contiene las instrucciones para construir una imagen de Docker. Cada comando en el Dockerfile se convierte en una capa en la imagen, lo que permite un almacenamiento y una gestión eficientes.

  4. Docker Hub: Es un registro público donde los usuarios pueden encontrar, descargar y compartir imágenes de Docker. Es la forma más común de obtener imágenes oficiales de software popular como Ubuntu, Nginx, o MySQL.


¿Cómo funciona?

Docker funciona mediante una arquitectura cliente-servidor.

  • Docker Daemon (Servidor): Es un servicio que se ejecuta en el sistema host y gestiona los objetos de Docker (imágenes, contenedores, redes y volúmenes).

  • Docker Client (Cliente): Es una herramienta de línea de comandos que se comunica con el Docker Daemon para ejecutar comandos como docker build (construir una imagen) o docker run (ejecutar un contenedor).

Esta arquitectura permite que un cliente en tu máquina local se conecte a un daemon que se ejecuta en un servidor remoto, facilitando el despliegue de aplicaciones en la nube o en entornos de producción.


¿Por qué usar Docker?

  • Portabilidad: Los contenedores eliminan el problema de "funciona en mi máquina". Una vez que se empaqueta una aplicación en un contenedor, se garantiza que funcionará de la misma manera en cualquier lugar que tenga Docker.

  • Aislamiento: Cada contenedor se ejecuta de forma aislada, lo que evita conflictos entre las dependencias de diferentes aplicaciones en el mismo servidor. Esto mejora la seguridad y la estabilidad.

  • Eficiencia: Los contenedores son más ligeros y consumen menos recursos que las máquinas virtuales, lo que permite ejecutar más aplicaciones en un solo servidor.

  • Estandarización: Docker proporciona un flujo de trabajo estándar para desarrolladores y equipos de operaciones, lo que simplifica la integración y el despliegue continuo (CI/CD).

     

    Configurar Docker implica varios pasos, desde la instalación inicial hasta la configuración de imágenes, redes y volúmenes. Aquí tienes una guía básica para empezar.

    1. Instalación de Docker

    El primer paso es instalar Docker Engine en tu sistema operativo. Los comandos varían según la plataforma (Linux, macOS, Windows).

    En sistemas basados en Debian/Ubuntu:

    Bash
    # Actualiza el índice de paquetes
    sudo apt-get update
    
    # Instala los paquetes necesarios para usar el repositorio de Docker
    sudo apt-get install ca-certificates curl gnupg
    
    # Agrega la clave GPG oficial de Docker
    sudo install -m 0755 -d /etc/apt/keyrings
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
    sudo chmod a+r /etc/apt/keyrings/docker.gpg
    
    # Agrega el repositorio a la lista de fuentes de apt
    echo \
      "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
      "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
      sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    
    # Instala Docker Engine
    sudo apt-get update
    sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
    

    Post-instalación (opcional pero recomendado):

    Para evitar usar sudo cada vez que ejecutes un comando Docker, añade tu usuario al grupo docker.

    Bash
    sudo usermod -aG docker $USER
    # Cierra sesión y vuelve a iniciarla para que el cambio surta efecto
    

    2. Creación de un Dockerfile

    Un Dockerfile es un archivo de texto que contiene las instrucciones para construir una imagen de Docker. Es el método más común para configurar el entorno de tu aplicación.

    A continuación, un ejemplo de un Dockerfile para una aplicación web simple:

    Dockerfile
    # Usa una imagen base de Node.js
    FROM node:18-alpine
    
    # Establece el directorio de trabajo dentro del contenedor
    WORKDIR /app
    
    # Copia los archivos de la aplicación al contenedor
    COPY . .
    
    # Instala las dependencias
    RUN npm install
    
    # Expone el puerto que usará la aplicación
    EXPOSE 3000
    
    # Comando para ejecutar la aplicación
    CMD ["npm", "start"]
    

    Construir la imagen:

    Una vez que tengas el Dockerfile, navega hasta el directorio que lo contiene y ejecuta:

    Bash
    docker build -t mi-aplicacion .
    

    El comando -t etiqueta la imagen con un nombre (mi-aplicacion), y el . indica que el Dockerfile está en el directorio actual.


    3. Ejecución de un Contenedor

    Para ejecutar un contenedor a partir de tu imagen, usa el comando docker run.

    Bash
    docker run -d -p 80:3000 --name mi-contenedor mi-aplicacion
    
    • -d: Ejecuta el contenedor en segundo plano (detached mode).

    • -p 80:3000: Mapea el puerto 80 del host al puerto 3000 del contenedor (el que expusimos en el Dockerfile). Esto permite acceder a la aplicación desde http://localhost:80.

    • --name: Asigna un nombre al contenedor para que sea más fácil de gestionar.


    4. Gestión de Contenedores y Redes

    Una parte clave de la configuración de Docker es la gestión de los contenedores y las redes entre ellos.

    • Listar contenedores:

      • docker ps: Muestra los contenedores en ejecución.

      • docker ps -a: Muestra todos los contenedores (incluyendo los que están detenidos).

    • Detener y eliminar:

      • docker stop mi-contenedor

      • docker rm mi-contenedor

    • Redes:

      Docker crea una red predeterminada, pero para entornos más complejos, puedes crear redes personalizadas. Esto permite que los contenedores se comuniquen entre sí de forma segura usando sus nombres en lugar de sus direcciones IP.

      Bash
      # Crea una red
      docker network create mi-red
      
      # Conecta un contenedor a la red
      docker run --network mi-red --name db-mysql -e MYSQL_ROOT_PASSWORD=secret mysql
      docker run --network mi-red --name mi-aplicacion-web mi-aplicacion
      
      # Ahora, el contenedor "mi-aplicacion-web" puede acceder a "db-mysql" usando su nombre
      

    Con estos pasos, tienes una base sólida para empezar a configurar y gestionar tus aplicaciones con Docker. Para configuraciones más complejas con múltiples servicios, se recomienda usar Docker Compose.

     

Entradas populares de este blog

Ciberseguridad y hacking con Whatweb

Como robar contraseñas haciendo un phishing web

Arsenal software hacking NFC