Cómo instalar utilidades adicionales en contenedores Docker

DockerDockerBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

Los contenedores Docker ofrecen una forma ligera y eficiente de empaquetar y desplegar aplicaciones, pero a veces es posible que necesites instalar utilidades adicionales para ampliar su funcionalidad. Este tutorial te guiará a través del proceso de instalación de utilidades adicionales en tus contenedores Docker, lo que te permitirá adaptar tus aplicaciones basadas en Docker a tus necesidades específicas.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker(("Docker")) -.-> docker/DockerfileGroup(["Dockerfile"]) docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker/ContainerOperationsGroup -.-> docker/run("Run a Container") docker/ContainerOperationsGroup -.-> docker/ls("List Containers") docker/ContainerOperationsGroup -.-> docker/ps("List Running Containers") docker/ContainerOperationsGroup -.-> docker/start("Start Container") docker/ContainerOperationsGroup -.-> docker/stop("Stop Container") docker/ContainerOperationsGroup -.-> docker/logs("View Container Logs") docker/ImageOperationsGroup -.-> docker/images("List Images") docker/DockerfileGroup -.-> docker/build("Build Image from Dockerfile") subgraph Lab Skills docker/run -.-> lab-411558{{"Cómo instalar utilidades adicionales en contenedores Docker"}} docker/ls -.-> lab-411558{{"Cómo instalar utilidades adicionales en contenedores Docker"}} docker/ps -.-> lab-411558{{"Cómo instalar utilidades adicionales en contenedores Docker"}} docker/start -.-> lab-411558{{"Cómo instalar utilidades adicionales en contenedores Docker"}} docker/stop -.-> lab-411558{{"Cómo instalar utilidades adicionales en contenedores Docker"}} docker/logs -.-> lab-411558{{"Cómo instalar utilidades adicionales en contenedores Docker"}} docker/images -.-> lab-411558{{"Cómo instalar utilidades adicionales en contenedores Docker"}} docker/build -.-> lab-411558{{"Cómo instalar utilidades adicionales en contenedores Docker"}} end

Comprender los contenedores Docker

Docker es una popular plataforma de contenerización que permite a los desarrolladores empaquetar y desplegar aplicaciones de manera consistente y reproducible. Los contenedores Docker encapsulan una aplicación y sus dependencias, asegurando que se ejecute de la misma manera independientemente de la infraestructura subyacente.

¿Qué es un contenedor Docker?

Un contenedor Docker es un paquete de software ligero, independiente y ejecutable que incluye todo lo necesario para ejecutar una aplicación: el código, el entorno de ejecución, las herramientas del sistema y las bibliotecas. Los contenedores están aislados entre sí y del sistema operativo host, proporcionando un entorno consistente y predecible para que la aplicación se ejecute.

Beneficios de los contenedores Docker

  • Portabilidad: Los contenedores Docker pueden ejecutarse en cualquier sistema en el que esté instalado Docker, lo que garantiza que la aplicación se comportará de la misma manera en diferentes entornos.
  • Consistencia: Los contenedores Docker proporcionan un entorno de ejecución consistente y predecible, eliminando el problema de "funciona en mi máquina".
  • Eficiencia: Los contenedores Docker son ligeros y utilizan menos recursos que las máquinas virtuales tradicionales, lo que los hace más eficientes de ejecutar y escalar.
  • Escalabilidad: Docker facilita la escalabilidad de las aplicaciones al ejecutar múltiples instancias de un contenedor, ya sea manualmente o a través de herramientas de orquestación como Docker Compose o Kubernetes.
graph LR A[Host Operating System] --> B[Docker Engine] B --> C[Docker Container 1] B --> D[Docker Container 2] B --> E[Docker Container 3]

Arquitectura de Docker

Docker utiliza una arquitectura cliente-servidor, donde el cliente Docker se comunica con el demonio Docker (el servidor) para construir, enviar y ejecutar contenedores Docker. El demonio Docker es responsable de gestionar los objetos Docker, como imágenes, contenedores, redes y volúmenes.

Componente Descripción
Cliente Docker La interfaz de línea de comandos (CLI) utilizada para interactuar con el demonio Docker.
Demonio Docker El proceso en segundo plano que gestiona los objetos Docker, como imágenes, contenedores, redes y volúmenes.
Imágenes Docker Plantillas de solo lectura utilizadas para crear contenedores Docker.
Contenedores Docker Instancias ejecutables de imágenes Docker.
Registros Docker Repositorios para almacenar y distribuir imágenes Docker.

Instalación de utilidades adicionales en Docker

Si bien los contenedores Docker están diseñados para ser ligeros y enfocados en ejecutar una sola aplicación, puede haber casos en los que necesites instalar utilidades o herramientas adicionales dentro del contenedor. Esto puede ser útil para solucionar problemas, depurar o ampliar la funcionalidad de tu aplicación.

Instalación de paquetes en contenedores Docker

Para instalar paquetes adicionales en un contenedor Docker, puedes utilizar el gestor de paquetes de la imagen base que estés utilizando. Por ejemplo, si estás utilizando una imagen basada en Ubuntu, puedes utilizar el gestor de paquetes apt para instalar paquetes.

## Dockerfile
FROM ubuntu:22.04

RUN apt-get update && apt-get install -y \
  vim \
  curl \
  wget \
  net-tools \
  && rm -rf /var/lib/apt/lists/*

En el ejemplo anterior, estamos instalando los paquetes vim, curl, wget y net-tools en el contenedor Docker.

Acceso a las utilidades instaladas

Una vez instaladas las utilidades adicionales, puedes acceder a ellas dentro del contenedor en ejecución. Por ejemplo, puedes utilizar el editor de texto vim o el comando curl para realizar solicitudes HTTP.

## Run the container
docker run -it my-ubuntu-image /bin/bash

## Access the installed utilities
root@container:/## vim
root@container:/## curl https://www.example.com

Persistencia de las utilidades instaladas

Es importante tener en cuenta que cualquier cambio realizado en el contenedor, incluyendo los paquetes instalados, no se conserva por defecto. Si necesitas asegurarte de que las utilidades instaladas estén disponibles en ejecuciones posteriores del contenedor, debes:

  1. Construir una nueva imagen Docker: Modifica el Dockerfile para incluir la instalación de las utilidades necesarias y luego reconstruye la imagen.
  2. Utilizar un volumen: Monta un volumen en el contenedor que contenga las utilidades o archivos de configuración necesarios.
graph LR A[Docker Container] --> B[Ephemeral File System] B --> C[Installed Utilities] A --> D[Volume] D --> E[Persistent Utilities]

Al entender cómo instalar utilidades adicionales en contenedores Docker, puedes ampliar la funcionalidad de tus aplicaciones y facilitar la solución y depuración de problemas dentro del entorno del contenedor.

Casos de uso prácticos y ejemplos

La instalación de utilidades adicionales en contenedores Docker puede ser útil en una variedad de escenarios. Aquí hay algunos casos de uso prácticos y ejemplos:

Depuración y solución de problemas

Al ejecutar una aplicación en un contenedor Docker, es posible que necesites realizar tareas de solución de problemas o depuración. Instalar utilidades como vim, curl, wget o net-tools puede ayudarte a inspeccionar el entorno del contenedor, las conexiones de red y los registros.

## Dockerfile
FROM ubuntu:22.04

RUN apt-get update && apt-get install -y \
  vim \
  curl \
  wget \
  net-tools \
  && rm -rf /var/lib/apt/lists/*

Ampliar la funcionalidad

Si tu aplicación requiere herramientas o utilidades específicas que no están incluidas en la imagen base de Docker, puedes instalarlas para ampliar la funcionalidad del contenedor. Por ejemplo, es posible que necesites instalar un cliente de base de datos, un cliente de cola de mensajes o un agente de monitoreo.

## Dockerfile
FROM python:3.9-slim

RUN apt-get update && apt-get install -y \
  postgresql-client \
  rabbitmq-tools \
  && rm -rf /var/lib/apt/lists/*

## Install Python dependencies
COPY requirements.txt.
RUN pip install --no-cache-dir -r requirements.txt

Compilaciones en múltiples etapas

Al construir una imagen Docker, puedes utilizar un proceso de compilación en múltiples etapas para instalar utilidades adicionales durante la etapa de compilación, pero excluirlas de la imagen final. Esto puede ayudar a reducir el tamaño total de la imagen.

## Dockerfile
FROM ubuntu:22.04 AS builder
RUN apt-get update && apt-get install -y \
  build-essential \
  cmake \
  && rm -rf /var/lib/apt/lists/*

## Build your application
COPY. /app
WORKDIR /app
RUN cmake. && make

## Final stage
FROM ubuntu:22.04
COPY --from=builder /app/bin /app/bin
CMD ["/app/bin/my-app"]

Al entender estos casos de uso prácticos y ejemplos, puedes aprovechar eficazmente la capacidad de instalar utilidades adicionales en contenedores Docker para mejorar la funcionalidad, la solución de problemas y la experiencia general de desarrollo de tus aplicaciones.

Resumen

Al final de este tutorial, tendrás una comprensión sólida de cómo instalar utilidades adicionales en tus contenedores Docker, lo que te permitirá mejorar las capacidades de tus aplicaciones basadas en Docker. Ya sea que necesites agregar herramientas especializadas, utilidades de depuración o scripts personalizados, esta guía te proporcionará el conocimiento necesario para aprovechar al máximo la flexibilidad y el poder de Docker.