Cómo Dominar los Conceptos Básicos de Docker para Principiantes

DockerBeginner
Practicar Ahora

Introducción

Este completo tutorial de Docker proporciona a los desarrolladores y profesionales de TI una comprensión fundamental de la tecnología de contenedores. Al explorar los conceptos centrales de Docker, los procedimientos de instalación y las técnicas prácticas de la línea de comandos, los participantes adquirirán habilidades prácticas para empaquetar, implementar y gestionar aplicaciones en diferentes entornos informáticos.

Conceptos Básicos de Docker

Introducción a Docker y la Tecnología de Contenedores

Docker es una plataforma potente para la contenedorización, que permite a los desarrolladores empaquetar, distribuir y ejecutar aplicaciones de forma consistente en diferentes entornos informáticos. Como herramienta clave en la implementación moderna de software, Docker simplifica el proceso de creación, gestión y escalado de aplicaciones.

Conceptos Fundamentales de Docker

graph TD
    A[Imagen Docker] --> B[Contenedor Docker]
    A --> C[Dockerfile]
    B --> D[Entorno de Ejecución del Contenedor]

Docker introduce varios conceptos fundamentales:

Concepto Descripción
Imagen Docker Plantilla de solo lectura que contiene el código de la aplicación y las dependencias
Contenedor Docker Instancia ejecutable de una imagen
Dockerfile Archivo de texto que define las instrucciones de creación de la imagen
Registro Docker Repositorio para almacenar y compartir imágenes

Instalación en Ubuntu 22.04

## Actualizar el índice de paquetes
sudo apt update

## Instalar dependencias
sudo apt install apt-transport-https ca-certificates curl software-properties-common

## Añadir la clave GPG oficial de Docker
curl -fsSL | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

## Configurar el repositorio estable
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg]  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

## Instalar Docker Engine
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io

Comandos Básicos de Docker

## Comprobar la versión de Docker

## Extraer una imagen de Docker Hub

## Listar imágenes disponibles

## Ejecutar un contenedor

## Listar contenedores en ejecución

## Detener un contenedor

Ejemplo Práctico: Ejecutando una Aplicación Web Simple

## Extraer la imagen de Nginx
docker pull nginx:latest

## Ejecutar el contenedor de Nginx
docker run -d -p 8080:80 nginx:latest

## Verificar que el contenedor se está ejecutando
docker ps

Este ejemplo demuestra cómo desplegar rápidamente un servidor web utilizando Docker, mostrando su simplicidad y eficiencia en el despliegue de software.

Gestión de Contenedores

Operaciones del Ciclo de Vida de los Contenedores

Docker proporciona herramientas completas para gestionar los ciclos de vida de los contenedores, permitiendo a los desarrolladores controlar y manipular los contenedores de forma eficiente.

graph LR
    A[Creado] --> B[En ejecución]
    B --> C[Detenido]
    C --> D[Eliminado]
    D --> E[Reiniciado]

Comandos de Gestión de Contenedores

Comando Función Ejemplo
docker create Crear un contenedor docker create nginx
docker start Iniciar un contenedor detenido docker start <id_contenedor>
docker stop Detener un contenedor en ejecución docker stop <id_contenedor>
docker restart Reiniciar un contenedor docker restart <id_contenedor>
docker rm Eliminar un contenedor docker rm <id_contenedor>

Control Avanzado de Contenedores

## Ejecutar contenedor con nombre personalizado
docker run --name web-server -d nginx:latest

## Inspeccionar detalles del contenedor
docker inspect web-server

## Ver registros del contenedor
docker logs web-server

## Ejecutar comandos dentro del contenedor en ejecución
docker exec -it web-server /bin/bash

Gestión de Recursos de Contenedores

## Limitar CPU y memoria del contenedor
docker run -d --cpus=0.5 --memory=512m nginx:latest

## Listar contenedores en ejecución con uso de recursos
docker stats

Operaciones de Gestión de Imágenes

## Listar imágenes locales
docker images

## Eliminar una imagen específica
docker rmi nginx:latest

## Eliminar imágenes no utilizadas
docker image prune

## Extraer una versión específica de la imagen
docker pull ubuntu:20.04

Gestión de Redes de Contenedores

## Crear una red personalizada
docker network create mynetwork

## Ejecutar un contenedor en una red específica
docker run --network=mynetwork nginx:latest

Técnicas Avanzadas de Docker

Construcciones Multietapa

Las construcciones multietapa optimizan la complejidad de los Dockerfile y reducen el tamaño final de la imagen.

## Etapa de construcción
FROM golang:1.17 AS builder
WORKDIR /app
COPY . .
RUN go build -o myapp

## Etapa de producción
FROM alpine:latest
COPY --from=builder /app/myapp /usr/local/bin/
CMD ["myapp"]

Flujo de Trabajo de Docker Compose

graph LR
    A[Archivo de Docker Compose] --> B[Definición del Servicio]
    B --> C[Orquestación de Contenedores]
    C --> D[Aplicaciones en Red]

Ejemplo de Configuración de Compose

version: "3"
services:
  web:
    image: nginx:latest
    ports:
      - "8080:80"
  database:
    image: postgres:12
    environment:
      POSTGRES_PASSWORD: secret

Técnicas de Optimización del Rendimiento

Técnica Descripción
Caché de Capas Minimizar la reconstrucción de capas
.dockerignore Excluir archivos innecesarios
Imágenes Alpine Usar imágenes base mínimas

Redes Avanzadas

## Crear una red puente personalizada
docker network create --driver bridge isolated_network

## Conectar un contenedor a una red específica
docker run --network=isolated_network nginx:latest

Estrategias de Gestión de Volúmenes

## Crear un volumen con nombre
docker volume create app-data

## Montar el volumen en el contenedor
docker run -v app-data:/var/lib/data nginx:latest

Monitorización de Contenedores

## Métrica de contenedores en tiempo real

## Inspeccionar los registros del contenedor

Buenas Prácticas de Seguridad

## Ejecutar el contenedor como usuario no root
docker run --user 1000 nginx:latest

## Establecer el sistema de archivos como de solo lectura
docker run --read-only nginx:latest

Resumen

Docker revoluciona la implementación de software al proporcionar una plataforma consistente y eficiente para la creación de contenedores. A través de este tutorial, los lectores han aprendido conceptos esenciales como imágenes Docker, contenedores y los fundamentos de Dockerfile, junto con habilidades prácticas para instalar Docker, gestionar contenedores y ejecutar aplicaciones web. Estas habilidades forman una base fundamental para el desarrollo de software moderno y la gestión de infraestructura.