Cómo instalar Docker en Debian 11
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 unidades estandarizadas de paquetes llamadas contenedores. Cada contenedor está aislado de los demás, incluidas las bibliotecas y los archivos de configuración, pero cada uno de ellos 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. Lo utilizan millones de desarrolladores para construir, compartir y ejecutar cualquier aplicación cada día en el trabajo. Se utiliza en el ciclo de vida del desarrollo de aplicaciones, desde el propio desarrollo, las pruebas y la producción. Con Docker, la aplicación se vuelve más flexible y portátil. Las aplicaciones pueden ejecutarse en cualquier lugar en diferentes sistemas operativos de forma sencilla, pero la aplicación en sí, sigue siendo la misma desde las librerías hasta los archivos de configuración.
En este tutorial, aprenderás a instalar Docker en Debian 11 Bullseye. Además, aprenderás el uso básico de Docker para ejecutar contenedores y gestionar imágenes.
Requisitos previos
- Un servidor Debian 11. Asegúrate de que todos los paquetes están actualizados a la última versión.
- Un usuario root o un usuario con privilegios de root. Este usuario se utilizará para instalar nuevos paquetes y editar las configuraciones del sistema.
Instalar las dependencias
En primer lugar, instalarás algunas dependencias de paquetes básicos en tu sistema Debian.
1. Ejecuta el siguiente comando apt para instalar nuevas dependencias de paquetes.
apt install \
apt-transport-https \
ca-certificates \
curl \
gnupg \
lsb-release
Escribe‘y‘ y pulsa‘Enter’ para instalar todos esos paquetes.
Añadir el repositorio Docker
Para esta guía, instalarás Docker desde el repositorio oficial de Docker. Así que añadirás un nuevo repositorio Docker a tu sistema Debian.
1. Ejecuta el siguiente comando para añadir la clave GPG para Docker.
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
2. Después, añade el repositorio de Docker para el sistema Debian 11 utilizando el siguiente comando.
echo \
"deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
3. Ahora ejecuta el comando‘apt update‘ para actualizar/refrescar todos los repositorios disponibles.
apt update
Ahora estás listo para instalar Docker en Debian 11 Bullseye.
Instalación de Docker en Debian 11
1. Si tu sistema tiene Docker instalado desde el repositorio de Debian anteriormente, debes eliminarlo utilizando el comando que aparece a continuación.
sudo apt remove docker docker-engine docker.io containerd runc
2. Después, puedes instalar Docker de nuevo utilizando el comando apt que aparece a continuación.
apt install docker-ce docker-ce-cli containerd.io
Escribe‘y‘ y pulsa‘Enter’ para confirmar la instalación.
3. Si la instalación se ha completado, ejecuta el siguiente comando para verificar la instalación.
Comprueba si el servicio está habilitado o no.
systemctl is-enabled docker
systemctl is-enabled containerd
Comprueba el estado del servicio Docker y Containerd.
systemctl status docker containerd
A continuación se muestra la salida similar que obtendrás.
Como se ve, los servicios Docker y Containerd están activos (en ejecución), y ambos servicios están habilitados y se ejecutarán automáticamente al iniciar el sistema.
Permitir el acceso a Docker a usuarios no root
Por defecto, Docker sólo permite al usuario«root» ejecutar contenedores. Y para que un usuario no root pueda ejecutar contenedores, debes añadir tu usuario no root al grupo‘docker‘, que se crea automáticamente durante la instalación de Docker.
1. En este ejemplo, utilizarás un usuario ‘johndoe‘ para ejecutar un contenedor Docker.
Crea el nuevo usuario ‘johndoe’ en tu sistema Debian utilizando el siguiente comando.
useradd -m -s /bin/bash johndoe
2. Después, ejecuta el siguiente comando para añadir el usuario ‘johndoe‘ al grupo‘docker‘.
usermod -aG docker johndoe
3. Ahora inicia la sesión como usuario ‘johndoe‘ utilizando el siguiente comando y verifica la configuración.
su - johndoe
4. Ejecuta el siguiente comando docker para verificar tu instalación.
docker run hello-world
Y verás el mensaje‘Hello Docker‘ que aparece a continuación.
A continuación se explica de forma sencilla el comando docker que se ejecuta en la parte superior.
- El docker intentará encontrar una imagen con el nombre de ‘hola-mundo’. Si la imagen está disponible localmente, el docker ejecutará el contenedor, si la imagen no está disponible localmente, el docker encontrará y descargará la imagen ‘hello-world’ en el Docker-hub (repositorio de imágenes docker por defecto).
- Si la imagen Docker se descarga, el Docker ejecutará el contenedor. Y el contenedor ejecuta los comandos y te muestra el mensaje ‘Hello Docker’.
4. Ahora comprueba el contenedor docker utilizando el siguiente comando docker
Comprobando el contenedor con estado‘en ejecución‘.
docker ps
Comprobando todos los contenedores – te mostrará todos los contenedores, los que se están ejecutando y los que están parados.
docker ps -a
A continuación se muestra una salida similar a la de abajo.
Como puedes ver, el nuevo nombre de contenedor ‘bold_bartix‘ se ha creado con la imagen base‘hello-world‘, y el estado actual del contenedor es ‘Exited‘ o detenido. El nombre del contenedor ‘bold_bartix’ en la captura de pantalla es elegido aleatoriamente por Docker, pero puedes especificar el nombre de tu contenedor.
Uso básico de Docker
En esta etapa, aprenderás un uso muy básico de Docker para gestionar imágenes y contenedores.
1. En primer lugar, descarga las imágenes Docker en tu ordenador local utilizando el siguiente comando.
docker pull nginx:alpine
El comando descargará el nombre de la imagen Docker‘nginx‘ y la etiqueta‘alpine‘ en tu sistema.
El término ‘tags‘ es como una versión de la propia imagen. El‘nginx:alpine‘ significa la imagen ‘nginx‘ con la etiqueta ‘alpine‘, que significa que está basada en el sistema operativo Linux Alpine. Comprueba siempre todas las etiquetas disponibles de las imágenes Docker en el repositorio oficial Docker-Hub.
A continuación se muestra un ejemplo de todas las etiquetas disponibles para la imagen Docker‘nginx‘.
Para comprobar todas las imágenes Docker disponibles en tu sistema local, ejecuta el siguiente comando Docker.
docker images
Verás una salida similar a la de abajo.
Como se ve, tienes dos imágenes Docker, la nginx:alpine y la hello-world.
2. A continuación, ejecuta el siguiente comando para ejecutar un contenedor.
docker run -it --rm -d -p 8080:80 --name web nginx:alpine
Ahora obtendrás la cadena y el número aleatorios del nuevo contenedor.
Opciones que debes conocer:
- -i o –interactive – mantener el STDIN del contenedor abierto aunque no esté conectado.
- -t o –tty – asigna una pseudo-terminal que conecta tu terminal con los STDIN y STDOUT del contenedor.
- –rm – elimina automáticamente el contenedor cuando se sale de él o se detiene.
- -d – ejecutar el contenedor en segundo plano, desinstalar el contenedor después de su ejecución.
- -p 8080:80 – asignar el puerto entre el contenedor y el sistema anfitrión. El puerto ‘80‘ del contenedor se mapea con el puerto‘8080’ del sistema anfitrión.
- –name web – especifica el nuevo nombre del contenedor como‘web‘.
- nginx:alpine– la imagen Docker que utilizamos es‘nginx:alpine‘.
Ahora comprueba el contenedor que se está ejecutando utilizando el siguiente comando.
docker ps
Verás un resultado similar al de abajo.
Para verificar tu contenedor Nginx, abre tu navegador web y escribe la dirección IP de tu servidor con el puerto‘8080‘.
http://192.168.1.10:8080/
Y verás la página de índice de Nginx del contenedor‘web ‘ como se indica a continuación.
3. A continuación, puedes comprobar el registro del contenedor ejecutando el siguiente comando docker.
docker logs web
Y verás todos los logs de tu contenedor, desde el principio hasta el final.
Para limitar la salida del registro, puedes utilizar la opción‘–tail n‘ como se indica a continuación.
docker logs --tail 10 web
Y verás las últimas 10 líneas de los registros del contenedor.
4. Ahora, para detener el contenedor Docker, puedes el comando Docker de abajo.
docker stop web
Después de eso, verifica el contenedor en ejecución utilizando el siguiente comando.
docker ps
docker ps -a
Verás la siguiente salida
El contenedor«web» se ha detenido y se ha eliminado automáticamente. Esto se debe a que utilizas la opción‘–rm‘ al ejecutar el contenedor.
5. A continuación, aprenderás a ejecutar el contenedor con el volumen personalizado. El directorio de la máquina anfitriona se utilizará como volumen para el contenedor Docker.
Crea el nuevo directorio‘data‘ y el archivo personalizado ‘index.html‘ con el siguiente comando.
mkdir -p ~/data/
nano ~/data/index.html
Copia y pega el script personalizado ‘index.html‘ como se indica a continuación.
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Welcome to Docker Nginx</title>
</head>
<body>
<h2>Hello from Nginx container</h2>
</body>
</html>
Guarda la configuración pulsando el botón«Ctrl+x«, escribe«y» y pulsa«Enter«.
A continuación, crea el nuevo contenedor utilizando el comando docker que aparece a continuación.
docker run -it --rm -d -p 8080:80 --name web -v ~/data:/usr/share/nginx/html nginx:alpine
Ahora obtendrás el número aleatorio y la cadena del contenedor.
La opción‘-v ~/data:/usr/share/nginx/html‘ montará el‘~/data’ en la máquina local al contenedor en el directorio‘/usr/share/nginx/html‘.
Ahora verifica el contenedor Docker con el siguiente comando.
docker ps
Y verás una salida similar a la de abajo.
A continuación, abre de nuevo tu navegador web y escribe la dirección IP del servidor siguiendo con el puerto‘8080‘ como se indica a continuación.
Y obtendrás el ‘index.html’ personalizado que acabas de crear en la parte superior, lo que significa que el directorio‘~/data‘ está montado en el directorio del contenedor‘/usr/share/nginx/html‘.
6. Además, puedes entrar en el contenedor ‘web‘ que está en marcha ejecutando el siguiente comando docker.
En primer lugar, comprueba que el contenedor‘web’ se está ejecutando.
docker ps
Ahora conéctate al contenedor ‘web’ utilizando el siguiente comando.
docker exec -it web /bin/sh
Dentro del contenedor, comprueba el nombre de host del contenedor utilizando el siguiente comando.
hostname
Comprueba la dirección IP del contenedor utilizando el siguiente comando‘ip‘.
ip a
Comprueba la tabla de enrutamiento del contenedor utilizando el siguiente comando.
route -n
A continuación se muestra la salida similar que obtendrás.
Para limpiar tu entorno actual, detén el contenedor«web» utilizando el siguiente comando.
docker stop web
Además, puedes eliminar todos los contenedores con el estado ‘exited‘ utilizando el siguiente comando.
docker rm $(docker ps --filter "status=exited" -q)
Conclusión
Enhorabuena! Has instalado con éxito Docker en Debian 11 Bullseye. Además, has aprendido el uso básico de Docker para extraer una imagen de Docker-Hub, ejecutar el contenedor Docker, comprobar el estado del contenedor Docker, los registros y el uso básico del volumen Docker. Para el siguiente paso, puedes intentar crear tu imagen Docker personalizada para tu aplicación y empujarla al repositorio Docker Hub.