Introducción

Los contenedores de Linux y Docker han revolucionado la forma en que desarrollamos, desplegamos y gestionamos aplicaciones. En esta sección, aprenderás los conceptos básicos de los contenedores, cómo funcionan y cómo utilizar Docker para gestionar contenedores de manera eficiente.

¿Qué es un Contenedor?

Un contenedor es una unidad estándar de software que empaqueta el código y todas sus dependencias para que la aplicación se ejecute de manera rápida y confiable en diferentes entornos informáticos. Los contenedores son ligeros y se ejecutan en el mismo sistema operativo, pero están aislados unos de otros.

Ventajas de los Contenedores

  • Portabilidad: Los contenedores pueden ejecutarse en cualquier entorno que soporte Docker.
  • Aislamiento: Cada contenedor tiene su propio entorno aislado.
  • Eficiencia: Los contenedores son ligeros y utilizan menos recursos que las máquinas virtuales.
  • Escalabilidad: Facilitan la escalabilidad horizontal de las aplicaciones.

Docker: La Plataforma de Contenedores

Docker es una plataforma de contenedores que permite a los desarrolladores empaquetar aplicaciones en contenedores. Docker proporciona herramientas para crear, desplegar y gestionar contenedores de manera eficiente.

Instalación de Docker

En Ubuntu

sudo apt update
sudo apt install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt update
sudo apt install docker-ce

En CentOS

sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce docker-ce-cli containerd.io
sudo systemctl start docker
sudo systemctl enable docker

Comandos Básicos de Docker

Verificar la Instalación

docker --version

Ejecutar un Contenedor

docker run hello-world

Este comando descarga una imagen de prueba y ejecuta un contenedor que imprime un mensaje de bienvenida.

Listar Contenedores

docker ps

Detener un Contenedor

docker stop <container_id>

Eliminar un Contenedor

docker rm <container_id>

Creación de Imágenes Docker

Las imágenes Docker son plantillas que se utilizan para crear contenedores. Puedes crear tus propias imágenes utilizando un archivo Dockerfile.

Ejemplo de Dockerfile

# Usar una imagen base de Python
FROM python:3.8-slim

# Establecer el directorio de trabajo
WORKDIR /app

# Copiar los archivos necesarios
COPY . /app

# Instalar las dependencias
RUN pip install -r requirements.txt

# Comando para ejecutar la aplicación
CMD ["python", "app.py"]

Construir una Imagen

docker build -t my-python-app .

Ejecutar un Contenedor desde una Imagen

docker run -d -p 5000:5000 my-python-app

Docker Compose

Docker Compose es una herramienta para definir y ejecutar aplicaciones Docker con múltiples contenedores. Utiliza un archivo docker-compose.yml para configurar los servicios.

Ejemplo de docker-compose.yml

version: '3'
services:
  web:
    image: my-python-app
    ports:
      - "5000:5000"
  redis:
    image: "redis:alpine"

Comandos de Docker Compose

  • Iniciar los Servicios: docker-compose up
  • Detener los Servicios: docker-compose down

Ejercicios Prácticos

Ejercicio 1: Crear y Ejecutar un Contenedor Simple

  1. Objetivo: Crear un contenedor que ejecute una aplicación simple de Python.
  2. Pasos:
    • Crear un archivo app.py con el siguiente contenido:
      print("Hello, Docker!")
      
    • Crear un archivo Dockerfile con el siguiente contenido:
      FROM python:3.8-slim
      COPY app.py /app.py
      CMD ["python", "/app.py"]
      
    • Construir la imagen:
      docker build -t hello-docker .
      
    • Ejecutar el contenedor:
      docker run hello-docker
      

Ejercicio 2: Configurar una Aplicación con Docker Compose

  1. Objetivo: Configurar una aplicación web simple con Redis utilizando Docker Compose.
  2. Pasos:
    • Crear un archivo app.py con el siguiente contenido:
      from flask import Flask
      from redis import Redis
      
      app = Flask(__name__)
      redis = Redis(host='redis', port=6379)
      
      @app.route('/')
      def hello():
          redis.incr('hits')
          return f"Hello! This page has been visited {redis.get('hits').decode('utf-8')} times."
      
      if __name__ == "__main__":
          app.run(host="0.0.0.0", debug=True)
      
    • Crear un archivo requirements.txt con el siguiente contenido:
      Flask
      redis
      
    • Crear un archivo Dockerfile con el siguiente contenido:
      FROM python:3.8-slim
      WORKDIR /app
      COPY . /app
      RUN pip install -r requirements.txt
      CMD ["python", "app.py"]
      
    • Crear un archivo docker-compose.yml con el siguiente contenido:
      version: '3'
      services:
        web:
          build: .
          ports:
            - "5000:5000"
        redis:
          image: "redis:alpine"
      
    • Iniciar los servicios:
      docker-compose up
      

Conclusión

En esta sección, has aprendido los conceptos básicos de los contenedores de Linux y cómo utilizar Docker para gestionar contenedores. Has visto cómo crear y ejecutar contenedores, construir imágenes Docker y utilizar Docker Compose para gestionar aplicaciones con múltiples contenedores. Con estos conocimientos, estás preparado para aprovechar al máximo las ventajas de los contenedores en tus proyectos.

En la siguiente sección, exploraremos la automatización con Ansible, una herramienta poderosa para la gestión de configuraciones y despliegues.

Maestría en Linux: De Principiante a Avanzado

Módulo 1: Introducción a Linux

Módulo 2: Comandos Básicos de Linux

Módulo 3: Habilidades Avanzadas en la Línea de Comandos

Módulo 4: Scripting en Shell

Módulo 5: Administración del Sistema

Módulo 6: Redes y Seguridad

Módulo 7: Temas Avanzados

Módulo 8: Proyectos Prácticos

© Copyright 2024. Todos los derechos reservados