Docker CE en Alma Linux 9: Guía de instalación rápida y sencilla

Docker es un software OpenSource 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 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 se pueden ejecutar en cualquier lugar en diferentes sistemas operativos de una manera fácil, pero la aplicación en sí, sigue siendo la misma, desde las bibliotecas a los archivos de configuración.

En esta guía, aprenderás a instalar Docker CE (Community Edition) en Alma Linux 9. Esta guía también cubre el uso básico de Docker para gestionar imágenes, contenedores y volúmenes, trabajar con registros de contenedores y acceder a los contenedores a través de Docker Host.

Requisitos previos

Esta guía requiere lo siguiente

  • Un servidor Linux ejecutando Alma Linux 9 – Este ejemplo utiliza un servidor Alma Linux con nombre de host‘alma-linux‘ y dirección IP‘192.168.5.’
  • Un usuario no root con privilegios de administrador sudo/root.

Añadir repositorio Docker CE

Docker es una herramienta de orquestación para desarrollar, enviar y ejecutar aplicaciones mediante contenedores. Agiliza el proceso de desarrollo porque Docker te permite crear imágenes de aplicaciones sin depender de la máquina anfitriona. Esto hace que la distribución de aplicaciones a los desarrolladores sea más rápida y sencilla.

Docker es una orquestación de contenedores multiplataforma, se puede instalar en Escritorio y Servidor. Si utilizas un Escritorio, puedes instalar Docker Desktop, pero si utilizas un servidor, puedes instalar Docker Engine a través del repositorio oficial de Docker.

En la primera sección, configurarás el repositorio Docker CE en tu servidor Alma Linux.

Ejecuta el siguiente comando para instalar el paquete‘dnf-utils‘.

sudo dnf install dnf-utils

Introduce y cuando se te pida, y pulsa ENTER para continuar.

instala dnf utils

Ahora, añade el repositorio Docker CE utilizando el siguiente comando dnf.

sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

Una vez añadido el repositorio Docker CE, verifícalo utilizando el siguiente comando. Esto te mostrará la lista de repositorios disponibles en tu Alma Linux.

sudo dnf repolist

Si se realiza correctamente, deberías recibir una salida como esta:

añadir repositorio

Pasa a la siguiente sección para instalar Docker CE.

Instalación de Docker CE

En esta sección, instalarás Docker CE en el servidor Alma Linux. Al final de esta sección, tendrás Docker funcionando en tu sistema.

Instala Docker CE utilizando el siguiente comando dnf. Con esto, instalarás Docker con el paquete adicional ‘docker-buildx-plugin‘ es el plugin Docker Build que hace más rápida la construcción de imágenes, y el‘docker-compose-plugin‘ es el plugin Docker Compose para facilitar el desarrollo de aplicaciones.

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

Cuando se te pida, introduce y para confirmar, y pulsa ENTER para continuar.

instalar Docker

Además, se te pedirá que confirmes la clave GPG para el repositorio Docker. Introduce para confirmar y pulsa INTRO.

aceptar clave gpg

Una vez instalado Docker, ejecuta el siguiente comando systemctl para iniciar y habilitar el servicio «docker».

sudo systemctl start docker
sudo systemctl enable docker

Tras ejecutar el comando, Docker se ejecutará y también estará habilitado, lo que significa que Docker se iniciará automáticamente al arrancar el sistema.

Ejecuta el siguiente comando para verificar el estado del servicio Docker y asegurarte de que Docker se está ejecutando.

sudo systemctl status docker

Cuando Docker se esté ejecutando, deberías esperar una salida como la siguiente:

start habilitar y verificar docker

Permitir que un usuario no root ejecute un contenedor Docker

Por defecto, sólo el usuario root puede ejecutar el contenedor a través de Docker. Esta sección te mostrará cómo permitir que usuarios no root ejecuten contenedores Docker añadiendo el usuario al grupo existente llamado«docker«.

Ejecuta el siguiente comando para añadir tu usuario al grupo ‘docker‘. Este ejemplo utiliza un usuario llamado ‘testuser‘.

sudo usermod -aG docker testuser

Ahora, inicia sesión como tu usuario utilizando el siguiente comando. A continuación, ejecuta el siguiente comando ‘dockerrun‘ para ejecutar el contenedor‘hello-world‘.

su - testuser
docker run hello-world

Cuando se ejecute correctamente, deberías recibir una salida como la siguiente:

ejecutar contenedor como usuario no root

A continuación, ejecuta el siguiente comando docker para comprobar el contenedor en ejecución en tu sistema.

docker ps
docker ps -a

El primer comando ‘docker ps‘ no tendrá salida porque sólo te mostrará un contenedor en ejecución, y el contenedor ‘hola-mundo‘ se sale/detendrá después de que se imprima el mensaje«Hola de Docker«. Pero el segundo comando«docker ps -a» te mostrará tanto los contenedores en ejecución como los que han salido.

contenedor docker check

Uso básico de Docker

Ya has llegado con éxito a la fase en la que Docker está en funcionamiento, y también has permitido que tu usuario no root ejecute el contenedor Docker. No, pasa al uso básico de Docker.

Los siguientes pasos te mostrarán algunos escenarios de uso de Docker. Aprenderás a gestionar imágenesDocker, a trabajar con el contenedor y el volumen, y también aprenderás a acceder al contenedor desde la máquina anfitriona.

Con todo listo, empecemos.

Trabajar con imágenes

En el primer paso, trabajarás con la imagen Docker. Descargarás la imagen y comprobarás la lista de imágenes disponibles en tu máquina local.

Para descargar una imagen, visita el DockerHub e introduce el nombre de la imagen Docker que deseas descargar. En este ejemplo, descargarás la imagen‘nginx‘con las etiquetas‘alpine‘. Si haces clic en la pestaña TAGS, deberías ver la lista de versiones disponibles de la imagen Nginx.

lista etiquetas docker hub

Ahora ejecuta el siguiente comando‘docker pull ‘ para descargar las imágenes Docker. En este ejemplo, descargarás la imagen‘nginx:alpine‘, que se referirá a la última versión de la imagen Nginx Alpine.

docker pull nginx:alpine

docker pull descargar imagen

Una vez descargada, ejecuta el siguiente comando para listar las imágenes disponibles en tu host. Si sigues estos pasos desde el principio, deberías ver dos imágenes Docker, ‘hello-world‘ con la etiqueta‘latest’ y‘nginx‘ con la etiqueta‘alpine‘.

docker images

listado de imágenes

Trabajar con el contenedor

Con la imagen Docker descargada, ya puedes ejecutar el contenedor. Esta sección te mostrará cómo crear y ejecutar un contenedor mediante Docker.

Para ejecutar un contenedor, ejecuta el siguiente comando‘docker run‘.

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

Este comando creará un nuevo contenedor llamado ‘web‘, que se basa en la imagen Docker‘nginx:alpine‘. El nuevo contenedor ‘web‘ expondrá el puerto‘8080‘ en el host Docker, que es igual al puerto 80 en el contenedor. El parámetro adicional‘-it‘ se utiliza para ejecutar el contenedor en modo interactivo, y el parámetro‘-d‘ ejecutará el contenedor en segundo plano.

Una vez ejecutado el comando, deberías ver el número aleatorio y la cadena, que es el‘ID DEL CONTENEDOR’.

Ahora, ejecuta el siguiente comando para comprobar la lista de contenedores en ejecución.

docker ps

Deberías esperar una salida como ésta – El contenedor‘web‘ con el estado‘Up‘ y expuesto el puerto 8080 en el host Docker.

ejecuta y comprueba el contenedor

A continuación, ejecuta el siguiente comando curl para acceder al contenedor «web» que está expuesto en el puerto 8080. Cuando lo consigas, deberías ver el código fuente HTML del índice por defecto del contenedor ‘web‘.

curl http://192.168.5.43:8080/

comprobar contenedor nginx

Por último, si quieres acceder a tu contenedor desde la red exterior, debes abrir el puerto 8080 en tu servidor Alma Linux mediante el comando‘firewall-cmd‘ que aparece a continuación.

sudo firewall-cmd --add-port=8080/tcp --permanent
sudo firewall-cmd --reload

Ahora abre el navegador web y tu máquina local y visita la dirección IP del servidor seguida del puerto 8080 (es decir: http://192.168.5.43:8080/). Deberías esperar una salida de la página index.html para el contenedor‘web‘.

index.html contenedor nginx

Registro de contenedores

El registro es importante en Docker, especialmente si estás desarrollando imágenes para tus aplicaciones. El registro te ayuda a depurar el desarrollo de tu aplicación.

Ejecuta el siguiente comando para obtener los registros completos del contenedor ‘web‘.

docker logs web

A continuación se muestra la salida similar que obtendrás del contenedor ‘web‘.

Contenedor de registro

También puedes limitar la salida de los registros mediante el parámetro‘tail‘, como se indica a continuación. Este comando te mostrará las últimas 5 líneas de los registros del contenedor ‘web‘.

docker logs --tail 5 web

limitar el registro

Gestionar el contenedor

En esta sección aprenderás a gestionar un contenedor. Aprenderás a iniciar, detener y eliminar el contenedor.

Para detener un contenedor ‘web‘, ejecuta el siguiente comando‘docker stop‘.

docker stop web

Ahora, verifica el contenedor utilizando el siguiente comando. Deberías obtener una salida del contenedor ‘web‘ con el estado‘Salido‘.

docker ps
docker ps -a

contenedor de parada

Para iniciar de nuevo el contenedorweb’, ejecuta el comando ‘docker start’ que aparece a continuación. A continuación, comprueba la lista de contenedores en ejecución utilizando el comando ‘docker ps‘.

docker start web
docker ps

Deberías obtener una salida que indique que el contenedor ‘web‘ se está ejecutando con el estado ‘Up‘.

contenedor inicial

Por último, ejecuta el siguiente comando para eliminar el contenedor ‘web‘. Antes de eliminar el contenedor, debes detenerlo primero.

docker stop web
docker rm web

Si compruebas la lista de contenedores mediante el comando‘docker ps‘, deberías obtener una salida que indique que el contenedorweb’ se ha eliminado.

docker ps -a

retirar el contenedor

Trabajar con Volumen

Volumen es donde adjuntas tu volumen/directorio local al contenedor. Puedes asumir que el volumen es como una«carpeta compartida» en la máquina virtual. En esta sección, crearás un nuevo contenedor con un volumen personalizado que te permitirá adjuntar el directorio local al contenedor.

En primer lugar, crea un nuevo directorio de proyecto‘~/proyecto/datos‘, y traslada a él tu directorio de trabajo.

mkdir -p ~/project/data; cd ~/project

Ahora, ejecuta el siguiente comando para crear un nuevo archivo‘data/index.html‘. Este archivo sustituirá a la página index.html por defecto del nuevo contenedor‘web‘.

cat > data/index.html << EOF
<!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>
EOF

crear índice personalizado

Ahora, ejecuta el siguiente comando para crear y ejecutar un nuevo contenedor ‘web‘ con el volumen personalizado mediante el parámetro‘-v‘. En este ejemplo, montarás el directorio local‘~/proyecto/datos‘ en el contenedor ‘web’ con el directorio de destino‘/usr/share/nginx/html‘. La opción adicional ‘:ro‘ hará que el directorio‘/usr/share/nginx/html‘ en el contenedor sea de sólo lectura, mientras que en la máquina anfitriona se sigue permitiendo la lectura y escritura.

docker run -it -d -p 8080:80 --name web -v ~/project/data:/usr/share/nginx/html:ro nginx:alpine

A continuación, ejecuta el siguiente comando para asegurarte de que el nuevo contenedor«web» se está ejecutando.

docker ps

Si tiene éxito, deberías esperar una salida como la siguiente – El contenedor ‘web‘ se está ejecutando y expone el puerto 8080 en la máquina anfitriona.

crear contenedor con volumen

Ahora, ejecuta el siguiente comando curl para acceder al contenedor ‘web‘. Cuando todo vaya bien, deberías ver el código fuente de la página index.html personalizada que has creado.

curl http://192.168.5.43:8080/

contenedor nginx con índice personalizado

A continuación se muestra la página index.html personalizada cuando se accede desde el navegador web (es decir: http://192.168.5.43:8080/).

índice personalizado

Acceder al Contenedor desde el Host

Para acceder e iniciar sesión en el contenedor, puedes utilizar el comando ‘docker exec’, que te permite ejecutar el comando disponible en el contenedor.

Ejecuta el siguiente comando para acceder al contenedor‘web‘. Esto ejecutará el comando‘/bin/sh‘ en el contenedor ‘web‘ y el parámetro‘-it‘ te llevará directamente al contenedor.

docker exec -it web /bin/sh

Una vez conectado al contenedor, ejecuta el siguiente comando para comprobar el nombre de host detallado de tu contenedor. El nombre de host del contenedor debe coincidir con el‘ID DEL CONTENEDOR’.

id
hostname

iniciar sesión en el contenedor

A continuación, ejecuta el siguiente comando para comprobar la dirección IP y la puerta de enlace predeterminada del contenedor.

ip a
route -n

Deberías esperar una salida como la siguiente

mostrar contenedor ip

Como el contenedor ‘web’ está ejecutando el proceso Nginx, puedes acceder a tu contenedor a través de la dirección IP local mediante el siguiente comando curl. En este ejemplo, la dirección IP del contenedor es ‘172.17.0.2‘. Deberías obtener la misma página index.html.

curl 172.17.0.2

acceder a nginx a través del contenedor ip local

Conclusión

Ahora que has completado esta guía, deberías saber cómo instalar Docker en Alma Linux 9. También has completado el escenario de uso básico de Docker para gestionar imágenes y contenedores, registrar contenedores con fines de depuración, trabajar con docker volume, y el uso básico de ‘docker exec’ para iniciar sesión en el contenedor.

También te podría gustar...