Cómo Instalar y Ejecutar Contenedores Docker en Ubuntu

DockerBeginner
Practicar Ahora

Introducción

Este completo tutorial de Docker proporciona a los desarrolladores y administradores de sistemas los conocimientos esenciales para implementar la tecnología de contenedores. Al cubrir los conceptos fundamentales de Docker, los procedimientos de instalación y ejemplos prácticos, los alumnos adquirirán habilidades prácticas en la implementación moderna de software y técnicas de virtualización.

Conceptos Fundamentales de Docker

Introducción a los Fundamentos de Docker

Docker es una potente tecnología de contenedores que revoluciona la implementación de software y la virtualización de aplicaciones. Permite a los desarrolladores empaquetar aplicaciones con todas sus dependencias en unidades estandarizadas llamadas contenedores.

Conceptos Nucleares de la Tecnología de Contenedores

graph LR A[Imagen Docker] --> B[Contenedor] B --> C[Implementación de la Aplicación] B --> D[Aislamiento]
Concepto Descripción
Imagen Docker Paquete ligero y autoejecutable
Contenedor Instancia ejecutable de una imagen
Dockerfile Script que define la configuración de la imagen

Arquitectura Básica de Docker

Los contenedores proporcionan virtualización ligera compartiendo el kernel del sistema host mientras mantienen el aislamiento de las aplicaciones. Este enfoque difiere de las máquinas virtuales tradicionales.

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

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

## Configurar el repositorio
echo "deb [arch=$(dpkg --print-architecture) 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

Primer Ejemplo de Contenedor Docker

## Extraer la imagen Ubuntu
docker pull ubuntu:latest

## Ejecutar un contenedor interactivo
docker run -it ubuntu:latest /bin/bash

## Dentro del contenedor
apt update
apt install nginx -y
exit

Configuración del Entorno de Docker

Preparando Ubuntu 22.04 para la Instalación de Docker

graph LR A[Actualización del Sistema] --> B[Instalación de Dependencias] B --> C[Configuración del Repositorio de Docker] C --> D[Instalación del Motor Docker] D --> E[Configuración de Docker]

Requisitos del Sistema

Requisito Especificación
SO Ubuntu 22.04 LTS
Arquitectura 64 bits
Kernel 5.10+
RAM Mínimo 2 GB

Script de Instalación Completo de Docker

## Actualizar paquetes del sistema
sudo apt update && sudo apt upgrade -y

## Eliminar paquetes conflictivos
sudo apt remove docker docker-engine docker.io containerd runc

## Instalar dependencias necesarias
sudo apt install -y apt-transport-https ca-certificates curl gnupg lsb-release

## Agregar 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=$(dpkg --print-architecture) 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 el motor Docker
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io

## Verificar la instalación
sudo docker --version

Configuración Post-Instalación

## Crear el grupo de usuarios docker
sudo groupadd docker

## Agregar el usuario actual al grupo docker
sudo usermod -aG docker $USER

## Habilitar el servicio Docker
sudo systemctl enable docker.service
sudo systemctl start docker.service

## Verificar la funcionalidad de Docker
docker run hello-world

Instalación de Docker Compose

## Descargar Docker Compose
sudo curl -L " -s)-$(uname -m)" -o /usr/local/bin/docker-compose

## Aplicar permisos ejecutables
sudo chmod +x /usr/local/bin/docker-compose

## Verificar la instalación
docker-compose --version

Administración de Contenedores

Descripción General del Ciclo de Vida de los Contenedores

graph LR A[Extraer Imagen] --> B[Creación del Contenedor] B --> C[Inicio del Contenedor] C --> D[Contenedor en Ejecución] D --> E[Parada del Contenedor] E --> F[Eliminación del Contenedor]

Comandos Básicos de Docker para Contenedores

Comando Función
docker run Crear e iniciar contenedor
docker ps Listar contenedores en ejecución
docker stop Detener contenedor en ejecución
docker rm Eliminar contenedor
docker exec Ejecutar comando en contenedor

Creación y Administración de Contenedores

## Extraer la imagen Ubuntu
docker pull ubuntu:latest

## Ejecutar contenedor interactivo
docker run -it --name my-ubuntu ubuntu:latest /bin/bash

## Listar todos los contenedores
docker ps -a

## Iniciar contenedor detenido
docker start my-ubuntu

## Detener contenedor en ejecución
docker stop my-ubuntu

## Eliminar contenedor
docker rm my-ubuntu

Operaciones Avanzadas con Contenedores

## Ejecutar contenedor en segundo plano
docker run -d --name nginx-server nginx:latest

## Mapear puerto de contenedor a host
docker run -p 8080:80 -d nginx:latest

## Inspeccionar detalles del contenedor
docker inspect nginx-server

## Ver registros del contenedor
docker logs nginx-server

## Ejecutar comando en contenedor en ejecución
docker exec -it nginx-server bash

Administración de Recursos de Contenedores

## Limitar recursos del contenedor
docker run -d \
  --name limited-container \
  --cpus="1" \
  --memory="512m" \
  nginx:latest

## Monitorizar el uso de recursos del contenedor
docker stats

Configuración de la Red de Contenedores

## Crear red personalizada
docker network create my-network

## Ejecutar contenedor en red específica
docker run --network=my-network -d nginx:latest

Resumen

Docker representa un enfoque revolucionario para la implementación de software, ofreciendo contenedores ligeros y portátiles que agilizan el desarrollo de aplicaciones y la gestión de la infraestructura. Al dominar los principios fundamentales de Docker, los procesos de instalación y las técnicas de administración de contenedores, los profesionales pueden mejorar significativamente sus capacidades de desarrollo e implementación de software en diversos entornos informáticos.