Cómo instalar y utilizar Docker en Debian 12

Docker es un conjunto de plataformas abiertas que proporciona virtualización a nivel de sistema operativo para desarrollar, enviar y ejecutar aplicaciones. En Docker, las aplicaciones se entregan como paquetes estandarizados llamados contenedores. Cada contenedor está aislado de los demás, incluidas las bibliotecas y los archivos de configuración, pero cada uno puede comunicarse a través de canales de red bien definidos.

Por ahora, Docker se ha convertido en un estándar para el desarrollo de software y DevOps. Millones de desarrolladores lo utilizan para crear, compartir y ejecutar aplicaciones a diario en el trabajo. Se utiliza en el ciclo de vida del desarrollo de aplicaciones, desde el propio desarrollo hasta las pruebas y la producción. Con Docker, la aplicación se vuelve más flexible y portátil. Las aplicaciones pueden ejecutarse fácilmente en cualquier lugar y en diferentes sistemas operativos, pero la aplicación en sí sigue siendo la misma, desde las bibliotecas hasta los archivos de configuración.

En esta guía, te mostraré cómo instalar el motor Docker en la última versión de Debian 12. También repasarás la gestión del servicio Docker mediante systemctl, y aprenderás el uso básico de Docker para gestionar imágenes, contenedores y volúmenes.

Requisitos previos

Asegúrate de que tienes los siguientes requisitos antes de seguir con esta guía:

Una máquina Debian 12 – Puedes utilizar tanto Debian de escritorio como de servidor.
Un usuario no root con privilegios de administrador sudo.

Instalación del motor Docker

Para obtener la última versión de Docker Engine, debes instalarlo a través del repositorio oficial de Docker. Primero debes añadir el repositorio Docker y la clave GPG, y luego instalar Docker Engine.

En primer lugar, actualiza y refresca el repositorio de Debian para obtener la información más reciente de los paquetes. A continuación, instala el paquete básico ca-certificates, curl y gnupg en tu sistema Debian. Cuando se te solicite, introduce y y pulsa INTRO para confirmar.

sudo apt update
sudo apt install ca-certificates curl gnupg

instalar curl gnupg

Ahora ejecuta los siguientes comandos para configurar la clave GPG para el repositorio Docker, que se almacenará en el directorio /etc/apt/keyrings/.

sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

Después, ejecuta el siguiente comando para añadir el repositorio Docker para el sistema Debian. En el momento de escribir esto, Docker proporciona repositorios tanto para Debian 11 como para Debian 12.

echo \
  "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
  "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

añadir clave gpg docker y repositorio

A continuación, actualiza de nuevo el repositorio de Debian e instala Docker Engine mediante el comando apt que aparece a continuación. Este comando también instalará el containerd, que es el motor de contenedores por defecto, el plugin Docker buildx como plugin de construcción por defecto con capacidades BuildKit, y el Docker compose como plugin.

sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Introduce y cuando se te solicite y pulsa INTRO.

instalar docker

Después de instalar Docker, ejecuta el siguiente comando para comprobar la versión. Durante este escrito, Docker v24.0.4 está instalado en Debian 12.

docker version

versión docker

Gestionar el servicio Docker

El motor Docker requiere containerd, que se utiliza como motor de contenedores por defecto. Tanto containerd como docker deben estar ejecutándose en tu host Docker. Ahora aprenderás a gestionar los servicios Docker y containerd mediante la utilidad systemctl de systemd.

En Debian, los servicios docker y containerd se habilitan automáticamente. Ejecuta el siguiente comando para verificar los servicios docker y containerd.

sudo systemctl is-enabled docker
sudo systemctl is-enabled containerd

Si están habilitados, deberías obtener la salida habilitada en tu terminal.

comprobar si el servicio está activado

Ahora ejecuta el siguiente comando para comprobar el estado de los servicios docker y containerd.

sudo systemctl status docker
sudo systemctl status containerd

Si el servicio se está ejecutando, aparecerá el mensaje activo (en ejecución ) en tu terminal.

comprobación del servicio docker

A continuación, puedes ejecutar el siguiente comando para iniciar los servicios docker y containerd.

sudo systemctl start docker
sudo systemctl start containerd

Si es necesario detener Docker, ejecuta los siguientes comandos para detener los servicios Docker y containerd.

sudo systemctl stop docker
sudo systemctl stop containerd

Por último, reinicia utilizando el siguiente comando si realizas cambios en la configuración de Docker.

sudo systemctl restart docker
sudo systemctl restart containerd

Configurar Docker para usuarios no root

Por defecto, sólo el usuario root puede ejecutar el contenedor con Docker Engine. Para permitir usuarios no root, debes añadir el usuario al grupo docker. Para añadir tu usuario al grupo docker, completa estas secciones y, a continuación, ejecuta el contenedor hello-world.

Ejecuta el siguiente comando usermod para añadir tu usuario al grupo docker e inicia sesión como tu usuario mediante su.

sudo usermod -aG docker username
su - username

Ahora introduce el siguiente comando para ejecutar el contenedor hello-world a través de tu usuario.

docker run hello-world

Si todo va bien, el contenedor Docker debería mostrarte el mensaje Hola Mundo de la siguiente manera:

docker para no root

Por último, ejecutando el siguiente comando docker puedes verificar la lista de contenedores.

docker ps -a

Deberías ver un contenedor con el estado Salido. El nombre del contenedor hola-mundo es aleatorio por defecto, en este caso, el nombre es optmistic_edison.

comprobar toantiner

Ejecutar y gestionar el contenedor con Docker

Llegados a este punto, el motor Docker se está ejecutando y puedes empezar a crear contenedores a través de la línea de comandos docker. En la siguiente sección, aprenderás el uso básico de Docker para:

  • Gestionar imágenes Docker
  • Crear y gestionar contenedores
  • Comprobar los registros de los contenedores
  • Crear y gestionar volúmenes Docker

Gestionar imágenes Docker

Una imagen Docker es la totalidad de tu aplicación empaquetada en una sola imagen y distribuida fácilmente a través del registro de imágenes. El registro de imágenes predeterminado para Docker es https://hub.docker.com/.

En la siguiente sección, aprenderás a descargar imágenes Docker, comprobar las imágenes descargadas y eliminar imágenes.

Para descargar la imagen Docker del Registro Docker, ejecuta el siguiente comando docker pull. El siguiente comando descargará la imagen nginx con la etiqueta por defecto latest.

docker pull nginx

docker pull

Para especificar la versión de la imagen, añade la versión imager después de la imagen de destino como se indica a continuación.

docker pull nginx:alpine

descargar una versión específica de la imagen

Ahora comprueba las imágenes disponibles en tu host Docker mediante el comando siguiente.

docker images

Las imágenes Docker descargadas deberían estar disponibles con información detallada como la etiqueta y el tamaño de la imagen.

listar imágenes

Por último, utiliza el parámetro rmi para eliminar la imagen Docker de tu máquina.

docker rmi imagename

Gestionar contenedores

Un contenedor es donde se ejecuta tu aplicación, y se basa en tu imagen Docker. Un contenedor puede montar un directorio o volumen específico para datos persistentes y exponer un puerto específico en el host Docker para la aplicación.

En esta sección, aprenderás a crear y ejecutar el contenedor, a comprobar el contenedor y a iniciar y detener el contenedor mediante la línea de comandos de Docker.

Para ejecutar el contenedor, utiliza el parámetro ejecutar dentro del comando docker de la siguiente manera.

docker run -it -d -p 8080:80 --name web nginx:alpine

El siguiente comando ejecutará un contenedor web utilizando la imagen nginx:alpine. Además, el contenedor web expondrá el puerto 80 dentro del contenedor y el puerto 8080 dentro de la máquina anfitriona Docker. Además, el parámetro -it te separará del contenedor, y el parámetro -d ejecutará el contenedor web en segundo plano.

contenedor runc reate

Ahora ejecuta el comando docker ps que aparece a continuación para verificar la lista de contenedores de tu máquina Docker.

docker ps
docker ps -a

Si todo va bien, deberías ver la web del contenedor en ejecución y expuesta al puerto 8080 en la máquina anfitriona.

contenedor de control

Aunque el comando docker run creará e iniciará el contenedor, también puedes iniciarlo y detenerlo mediante el comando docker.

Ejecuta el siguiente comando docker stop para detener el contenedor web.

docker container stop web
docker ps -a

contenedor de parada

Para volver a iniciar el contenedor web, utiliza el siguiente comando docker start.

docker container start web
docker ps

iniciar contenedor

Por último, ejecuta el siguiente comando docker rm para eliminar el contenedor. El parámetro -f se utiliza para forzar la eliminación del contenedor, incluso cuando el contenedor de destino está en ejecución.

docker container rm optimistic_edison
docker container rm optimistic_edison -f

eliminar contenedor

Comprobación de los registros del contenedor

Comprobar los registros en Docker es importante porque siempre los necesitarás para depurar tu aplicación en contenedores. Ahora aprenderás a comprobar los registros de los contenedores en Docker.

Para comprobar los registros del contenedor, utiliza el parámetro logs en el comando docker de la siguiente manera. Esto mostrará los registros desde que se crea el contenedor.

docker logs web

comprueba el registro de toantiner

Ahora también puedes añadir la opción –tail N para obtener sólo los últimos logs de esta forma. En este caso, la opción –tail 15 mostrará sólo las últimas 15 líneas de registros.

docker logs --tail 15 web

comprobar el último contenedor de registro

Gestionar el volumen Docker

El volumen Docker es donde tu aplicación puede utilizar el almacenamiento persistente. Puedes cambiar tus contenedores y seguir utilizando el mismo volumen o datos para tu aplicación. La siguiente sección te muestra el uso básico del volumen Docker, desde la creación del volumen hasta la comprobación y el uso del volumen dentro del contenedor.

Para crear un nuevo volumen, ejecuta el siguiente comando docker volume. En esta demostración, crearás un nuevo volumen Docker myvol.

docker volume create myvol

Comprueba los volúmenes disponibles en tu host Docker utilizando la opción ls de esta forma. Deberías ver que se ha creado el volumen myvol.

docker volume ls

crear volumen de comprobación docker

Por defecto, Docker creará el volumen con el controlador local, que utiliza el directorio local como almacén de datos. Y el directorio por defecto del almacén de datos se encuentra en el directorio /var/lib/docker/volume. Ejecuta la opción inspeccionar así para comprobar los detalles del volumen myvol.

docker volume inspect myvol

Deberías ver el volumen myvol con el controlador por defecto local y el almacén de datos se encuentra en el directorio /var/lib/docker/volumes/myvol/_data. La sección Mountpoint es el directorio local del almacén de datos.

volumen detallado

A continuación, puedes utilizar el volumen Docker en tu contenedor mediante la opción -v, que combina todas las opciones en un solo campo, y la opción –mount, que es más explícita, verbosa y de sintaxis separada.

Ejecuta el siguiente comando docker run para crear un nuevo contenedor web2 con el volumen myvol mediante la opción –mount. A continuación, inspecciona el contenedor web mediante el comando docker inspect.

docker run -d \
  -p 8081:80 \
  --name web2 \
  --mount source=myvol,target=/app \
  nginx:alpine
docker inspect web

Dentro de la sección Montajes, deberías ver que el contenedor web está utilizando el volumen myvol en el directorio de destino /app dentro del contenedor.

comprobación del montaje

Para utilizar la opción -v, el comando docker run debería tener este aspecto. La opción -v utiliza un único campo para montar el volumen myvol2 en el directorio de destino /app.

docker run -d \
  -p 8082:80 \
  --name web3 \
  -v myvol2:/app \
  nginx:alpine

Por último, ejecuta el siguiente comando docker volume con el parámetro rm para eliminar el volumen Docker

docker rm web2 -f
docker volume rm myvol

Conclusión

¡Un trabajo impresionante! Has completado la instalación de Docker Engine en tu servidor Debian 12. También has aprendido a gestionar el servicio Docker mediante la utilidad de comandos systemctl y has aprendido a gestionar imágenes Docker, contenedores y volúmenes Docker mediante el cliente docker.

Si sigues explorando, puedes empezar a construir una imagen Docker para tu aplicación mediante Dockerfile.

También te podría gustar...