Cómo usar Docker en Ubuntu: Guía completa de instalación, imágenes, Dockerfile y optimización

目次

1. Introducción

¿Qué es Docker?

Docker es una plataforma que utiliza tecnología de virtualización basada en contenedores para desarrollar, distribuir y ejecutar aplicaciones de manera eficiente. A diferencia de las máquinas virtuales tradicionales (VM), los contenedores comparten el kernel del sistema operativo anfitrión, lo que permite un arranque más rápido y un menor consumo de recursos.

Beneficios de usar Docker en Ubuntu

Ubuntu es una de las distribuciones Linux con mayor compatibilidad con Docker. Las razones principales incluyen:

  • Soporte oficial : Docker brinda soporte oficial a Ubuntu, lo que permite una instalación sencilla a través del repositorio oficial.
  • Gestión de paquetes estable : El gestor de paquetes APT de Ubuntu hace que el manejo de versiones sea directo.
  • Amplio soporte comunitario : Ubuntu cuenta con una gran base de usuarios a nivel mundial, facilitando la resolución de problemas cuando surgen.

Qué aprenderá en este artículo

Esta guía explica los siguientes temas paso a paso:

  1. Cómo instalar Docker en Ubuntu
  2. Operaciones básicas con imágenes Docker
  3. Creación de imágenes personalizadas mediante Dockerfile
  4. Configuración de la localización japonesa en un contenedor Ubuntu
  5. Optimización y minimización de imágenes Docker
  6. Desarrollo de aplicaciones dentro de contenedores Ubuntu
  7. Errores comunes y solución de problemas

El contenido es útil tanto para principiantes como para usuarios avanzados, por lo que puede consultarse en cualquier etapa.

2. Instalación de Docker en Ubuntu

Instalación de Docker usando el repositorio oficial

En Ubuntu, puede instalar Docker fácilmente mediante el repositorio oficial. Siga los pasos a continuación para preparar su entorno.

1. Eliminar paquetes Docker existentes

Ubuntu puede incluir un paquete llamado docker.io, que podría ser una versión anterior. Elimínelo antes de instalar la última versión de Docker.

sudo apt remove docker docker-engine docker.io containerd runc

2. Instalar paquetes requeridos

Instale los paquetes de dependencia antes de la instalación.

sudo apt update
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common

3. Añadir el repositorio oficial de Docker

Agregue la clave GPG oficial de Docker y configure el repositorio.

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

4. Instalar Docker

Después de añadir el repositorio, instale Docker.

sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io

5. Verificar la instalación

Compruebe que Docker se haya instalado correctamente mostrando la información de la versión.

docker --version

Configuración inicial después de la instalación

1. Iniciar y habilitar el servicio Docker

Inicie el servicio Docker y habilite su arranque automático al iniciar el sistema.

sudo systemctl start docker
sudo systemctl enable docker

2. Permitir a usuarios no root ejecutar Docker

Por defecto, solo root puede ejecutar Docker. Permita que usuarios regulares ejecuten los comandos de Docker.

sudo usermod -aG docker $USER

Cierre sesión y vuelva a iniciarla para que los cambios surtan efecto.

3. Probar el funcionamiento de Docker

Ejecute el contenedor hello-world usando una cuenta de usuario regular.

docker run hello-world

Si la salida incluye “Hello from Docker!”, la instalación fue exitosa.

3. Operaciones básicas de imágenes Docker

¿Qué es una imagen Docker?

Una imagen Docker funciona como una plantilla para crear contenedores. Al usar una imagen Docker basada en Ubuntu, puede lanzar rápidamente un entorno Ubuntu.

Descargar imágenes Ubuntu desde Docker Hub

Docker Hub ofrece numerosas imágenes Docker oficiales. Para descargar una imagen Ubuntu, ejecute:

docker pull ubuntu

Iniciar y detener contenedores

Utilice la imagen Ubuntu descargada para iniciar un contenedor:

docker run -it ubuntu bash

Esto abre una shell dentro del contenedor Ubuntu, permitiéndote operar dentro de él.

Listar contenedores

Mostrar contenedores en ejecución:

docker ps

Mostrar todos los contenedores, incluidos los detenidos:

docker ps -a

Detener y eliminar contenedores

Detener un contenedor en ejecución:

docker stop [container ID or name]

Eliminar un contenedor innecesario:

docker rm [container ID or name]

Gestionar imágenes Docker

Listar imágenes Docker descargadas:

docker images

Eliminar una imagen:

docker rmi [image ID]

4. Crear imágenes personalizadas con Dockerfile

¿Qué es un Dockerfile?

Un Dockerfile es un archivo de configuración utilizado para crear imágenes Docker. Con base en las instrucciones escritas en el Dockerfile, puedes crear imágenes Docker personalizadas. Esto permite unificar entornos de desarrollo o crear imágenes que incluyan los paquetes requeridos.

Sintaxis básica del Dockerfile

Un Dockerfile suele incluir los siguientes comandos:

CommandDescription
FROMSpecifies the base image
RUNExecutes commands to build the image
COPYCopies files into the container
WORKDIRSets the working directory
CMDDefault command executed when the container starts
ENTRYPOINTDefines the entry point of the container

Crear una imagen personalizada basada en Ubuntu

Sigue los pasos a continuación para crear una imagen Docker personalizada basada en Ubuntu.

1. Crear un directorio de trabajo

Primero, crea un nuevo directorio de proyecto y muévete a él.

mkdir my-ubuntu-image
cd my-ubuntu-image

2. Crear un Dockerfile

Crea un Dockerfile dentro del directorio y escribe el siguiente contenido:

# Base Ubuntu official image
FROM ubuntu:latest

# Maintainer information (optional)
LABEL maintainer="your-email@example.com"

# Update package list and install basic tools
RUN apt update && apt install -y curl vim git

# Set working directory
WORKDIR /workspace

# Default command when the container starts
CMD ["bash"]

3. Construir la imagen Docker

Construye una imagen personalizada a partir de tu Dockerfile:

docker build -t my-ubuntu-image .

La opción -t asigna un nombre a la imagen.

4. Verificar la imagen

Comprueba la imagen recién construida:

docker images

5. Ejecutar un contenedor

Inicia un contenedor a partir de la imagen personalizada:

docker run -it my-ubuntu-image

Esta imagen incluye herramientas como curl y vim.

5. Configurar un entorno japonés en contenedores Ubuntu

La imagen predeterminada de Ubuntu utiliza un entorno en inglés. Para usar japonés, se requiere configuración adicional.

Configurar la localización japonesa

Para habilitar la visualización e introducción de japonés en un contenedor Ubuntu, instala la localización japonesa.

1. Instalar paquetes requeridos

apt update
apt install -y language-pack-ja locales

2. Configurar la localización

Genera y aplica la localización:

locale-gen ja_JP.UTF-8
update-locale LANG=ja_JP.UTF-8

3. Aplicar la configuración

export LANG=ja_JP.UTF-8

Configurar la entrada japonesa

Para introducir caracteres japoneses en la terminal, instala ibus-mozc:

apt install -y ibus-mozc

Si utilizas aplicaciones GUI, agrega las siguientes variables de entorno:

export GTK_IM_MODULE=ibus
export XMODIFIERS=@im=ibus
export QT_IM_MODULE=ibus

Uso de aplicaciones GUI

Para ejecutar aplicaciones GUI dentro de un contenedor Docker, utiliza un servidor X en la máquina host.

Ejecuta el contenedor con X11 habilitado:

docker run -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix my-ubuntu-image

6. Optimizar y minimizar imágenes Docker

Las imágenes Docker pueden optimizarse para mejorar la velocidad de inicio del contenedor y reducir el uso de almacenamiento. Aquí hay varias técnicas para crear imágenes ligeras.

Cómo crear una imagen ligera basada en Ubuntu

La imagen predeterminada ubuntu:latest es relativamente grande. Usar una opción más ligera como ubuntu:minimal ayuda a reducir el tamaño del contenedor.

FROM ubuntu:minimal

Otra opción es usar Alpine Linux, que es significativamente más pequeña que Ubuntu.

FROM alpine:latest
RUN apk add --no-cache bash curl

Usar Alpine puede reducir el tamaño de la imagen en varios cientos de megabytes.

Reducir el tamaño de la imagen eliminando archivos innecesarios

Puedes reducir el tamaño de la imagen eliminando los archivos de caché innecesarios creados por apt-get.

RUN apt update && apt install -y curl vim \
    && apt clean \
    && rm -rf /var/lib/apt/lists/*

En particular, el comando rm -rf /var/lib/apt/lists/* elimina las listas de paquetes y los datos no utilizados.

Uso de compilaciones multi‑etapa

Las compilaciones multi‑etapa te permiten usar herramientas solo durante el proceso de construcción, manteniendo la imagen final ligera.

FROM ubuntu as builder
RUN apt update && apt install -y gcc

FROM ubuntu:minimal
COPY --from=builder /usr/bin/gcc /usr/bin/gcc

De esta manera, evitas incluir herramientas de desarrollo en la imagen final, lo que resulta en una huella mucho más pequeña.

7. Ejemplo práctico: desarrollo de aplicaciones en contenedores Ubuntu

Esta sección presenta cómo configurar entornos de desarrollo dentro de contenedores Ubuntu.

Configuración de un entorno de desarrollo Python

Crea el siguiente Dockerfile para configurar un entorno de desarrollo Python en un contenedor Ubuntu:

FROM ubuntu:latest
RUN apt update && apt install -y python3 python3-pip
CMD ["python3"]

Construye la imagen y ejecuta el contenedor:

docker build -t python-dev .
docker run -it python-dev

Este entorno te permite usar el comando python3 para el desarrollo y pruebas de scripts.

Configuración de un entorno de desarrollo Node.js

Para configurar un entorno de desarrollo Node.js, utiliza el siguiente Dockerfile:

FROM ubuntu:latest
RUN apt update && apt install -y nodejs npm
CMD ["node"]

Construye y ejecuta el contenedor:

docker build -t node-dev .
docker run -it node-dev

Este entorno permite la ejecución de JavaScript y el desarrollo de aplicaciones con el comando node.

8. Preguntas frecuentes y solución de problemas

El uso de Docker puede generar varios problemas. A continuación se presentan preguntas comunes y soluciones típicas.

Diferencia entre Docker y máquinas virtuales

  • Docker: Comparte el kernel del sistema operativo host, lo que lo hace ligero y permite un arranque rápido de los contenedores.
  • Máquinas virtuales (VMs): Cada VM incluye su propio sistema operativo, lo que conlleva un mayor consumo de recursos y un arranque más lento.

Docker sobresale en la optimización de recursos y es adecuado para entornos de desarrollo y despliegues automatizados.

Persistencia de datos en contenedores Ubuntu

Para conservar los datos incluso después de que un contenedor se detenga, usa montajes de volúmenes:

docker run -v my_data:/data ubuntu

Incluso si el contenedor se elimina, los datos almacenados en el volumen my_data pueden reutilizarse.

Errores comunes y soluciones

1. Error permission denied

Si ves permission denied al intentar ejecutar Docker, es posible que tu usuario no pertenezca al grupo docker.

Agrega el usuario al grupo Docker:

sudo usermod -aG docker $USER

Cierra sesión y vuelve a iniciarla para aplicar el cambio.

2. Error image not found

Si una imagen ha sido eliminada de Docker Hub, especifica una etiqueta más reciente al descargarla:

docker pull ubuntu:22.04

Especificar una versión explícita garantiza que se recupere la imagen correcta.

侍エンジニア塾