Tutorial Campo de entrenamiento de Docker

De Wiki de EGC
Revisión del 19:38 24 oct 2024 de Brgutierrez (discusión | contribuciones) (Página creada con «= Prerrequisitos = == Instalación Docker == === Instrucciones para instalar Docker en Ubuntu 22.04 (Jammy Jellyfish) === Antes de comenzar a utilizar Docker, necesitamo...»)
(dif) ← Revisión anterior | Revisión actual (dif) | Revisión siguiente → (dif)
Saltar a: navegación, buscar

Prerrequisitos

Instalación Docker

Instrucciones para instalar Docker en Ubuntu 22.04 (Jammy Jellyfish)

Antes de comenzar a utilizar Docker, necesitamos asegurarnos de que está instalado en nuestro sistema. Aquí te mostramos cómo hacerlo.

Primero, actualizaremos la lista de paquetes disponibles en tu sistema. Este paso asegura que tu sistema tenga la información más reciente sobre qué paquetes se pueden instalar y actualizar:

sudo apt update

A continuación, instala algunos paquetes necesarios que permiten a `apt` manejar repositorios sobre HTTPS. Esto es importante porque garantiza que tu sistema puede descargar software de fuentes seguras y confiables:

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

Ahora, es momento de añadir la clave GPG del repositorio oficial de Docker a tu sistema. Esta clave es esencial porque se utiliza para verificar que el software que descargas es auténtico y no ha sido alterado por terceros:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

A continuación, añadirás el repositorio de Docker a las fuentes de `apt`. Este paso es necesario para que tu sistema sepa dónde buscar las actualizaciones y versiones de Docker:

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

Después de añadir el repositorio, es recomendable actualizar la lista de paquetes nuevamente. Esto permite que `apt` reconozca el nuevo repositorio de Docker:

sudo apt update

Finalmente, puedes instalar Docker con el siguiente comando. Este comando instalará la versión más reciente de Docker Community Edition (CE) en tu sistema:

sudo apt install docker-ce

Para asegurarte de que Docker se ha instalado correctamente y está funcionando, verifica el estado del servicio Docker. Al ejecutar este comando, deberías ver que el servicio está activo y en ejecución:

sudo systemctl status docker

Uso de Docker sin `sudo`

Por defecto, Docker necesita permisos de administrador para ejecutar sus comandos. Sin embargo, puedes añadir tu usuario al grupo `docker` para evitar tener que usar `sudo` cada vez que ejecutes comandos de Docker. Esto simplifica el uso de Docker y hace que sea más conveniente:

sudo usermod -aG docker ${USER}

Después de ejecutar este comando, necesitarás cerrar la sesión y volver a iniciarla para que los cambios surtan efecto. Si prefieres no cerrar la sesión, puedes aplicar los cambios usando:

su - ${USER}

Tutorial de Iniciación a Docker

Docker básico: primer contacto

Para comenzar a trabajar con Docker, es fundamental asegurarte de que todo está funcionando correctamente en tu sistema.

1. Ejecutar tu primer contenedor: "Hello World"

El primer paso en Docker es ejecutar un contenedor básico que te confirme que todo está configurado adecuadamente. Para ello, utilizaremos la imagen "hello-world", que está diseñada para asegurarse de que Docker está instalado y funcionando correctamente.

Abre tu terminal y ejecuta el siguiente comando:

docker run hello-world

Este comando realiza varias acciones:

  • Descarga la imagen: Si no tienes la imagen "hello-world" en tu máquina, Docker la descargará desde Docker Hub, que es un repositorio de imágenes Docker.
  • Crea un contenedor: Una vez que la imagen está disponible, Docker crea un nuevo contenedor basado en ella.
  • Ejecuta el contenedor: Finalmente, Docker ejecuta el contenedor, que mostrará un mensaje de bienvenida en tu terminal.

Si todo ha funcionado correctamente, deberías ver un mensaje que comienza con "Hello from Docker!". ¡Esto significa que tu instalación de Docker está en buen estado!

2. Ver las imágenes disponibles en tu sistema

Después de ejecutar un contenedor, Docker guarda una copia de la imagen en tu sistema. Para ver las imágenes que tienes localmente, usa el siguiente comando:

docker images

Este comando mostrará una lista de todas las imágenes almacenadas en tu sistema local. Aquí deberías ver la imagen de "hello-world" que acabas de descargar.

3. Descargando una imagen de Ubuntu

Ahora, vamos a descargar una imagen que es más útil para el desarrollo: Ubuntu. Para hacerlo, ejecuta el siguiente comando:

docker pull ubuntu

Este comando descargará la última versión de la imagen de Ubuntu desde Docker Hub. Tener la imagen de Ubuntu te permitirá ejecutar una versión ligera de este sistema operativo dentro de un contenedor.

4. Ejecutar un contenedor interactivo con Ubuntu

Docker te permite ejecutar contenedores en modo interactivo, lo que significa que puedes acceder a una terminal dentro del contenedor y trabajar en él como si fuera una máquina independiente. Para hacerlo, ejecuta el siguiente comando:

docker run -it ubuntu bash

Este comando hace lo siguiente:

  • `-it`: Esta opción combina dos parámetros: `-i` (interactivo) y `-t` (terminal), permitiéndote interactuar con el contenedor a través de una terminal.
  • `ubuntu`: Especifica que quieres crear el contenedor a partir de la imagen de Ubuntu.
  • `bash`: Es el comando que se ejecutará dentro del contenedor. Aquí es donde decides qué shell usar.

Al usar `bash`, estás utilizando el shell por defecto de Ubuntu, que proporciona un entorno interactivo completo con muchas características avanzadas. Puedes probar algunos comandos de Linux como `ls`, `pwd`, o incluso instalar software usando `apt`.

Cuando termines de trabajar en el contenedor, puedes salir escribiendo `exit`. Esto detendrá el contenedor y te devolverá a tu terminal principal.

  • Nota sobre los shells*: A veces, podrías ver `bash`, `/bin/bash` o `sh` al acceder a un contenedor.
  • `bash` y `/bin/bash` se refieren al mismo shell, pero `/bin/bash` especifica la ruta exacta al ejecutable. Esto es útil en sistemas donde la variable de entorno PATH no está configurada adecuadamente.
  • `sh` es un shell más básico y compatible que puede no tener todas las características de `bash`, por lo que es preferible usar `bash` cuando esté disponible.

5. Ver los contenedores en ejecución

Si quieres ver qué contenedores están activos en tu sistema, utiliza el siguiente comando:

docker ps

Este comando te mostrará una lista de los contenedores que están en ejecución. Si acabas de salir del contenedor de Ubuntu, no verás nada en la lista, porque el contenedor se detuvo al salir.

Si deseas ver todos los contenedores, incluidos los que están detenidos, puedes usar:

docker ps -a

Esto te mostrará todos los contenedores, indicando su estado actual (en ejecución o detenidos).

6. Eliminar contenedores y liberar espacio

Después de trabajar con contenedores, puede que desees eliminar algunos para liberar espacio en tu máquina. Para eliminar un contenedor, primero necesitas conocer su ID o nombre, que puedes obtener con `docker ps -a`. Luego, puedes eliminarlo usando:

docker rm id_contenedor

Si deseas eliminar todos los contenedores detenidos de una vez, usa este comando:

docker rm $(docker ps -aq)

Esto es especialmente útil cuando tienes muchos contenedores detenidos y quieres limpiar tu sistema rápidamente.

7. Limpiar imágenes que ya no necesitas

También puedes liberar espacio eliminando imágenes que ya no necesites. Para eliminar una imagen, primero lista todas las imágenes con:

docker images

Luego, usa el siguiente comando para eliminar una imagen específica:

docker rmi id_imagen

Trabajando de manera interactiva con contenedores

8. Mantener un contenedor vivo en segundo plano

Cuando desees ejecutar un contenedor pero no necesitas interactuar directamente con él, puedes ejecutarlo en segundo plano (modo "detached"). Esto es útil para contenedores que corren servicios como servidores web o bases de datos. Para ejecutar un contenedor en modo detached, usa el siguiente comando:

docker run -td ubuntu bash

Aquí:

  • `-t`: Asigna un terminal virtual al contenedor, pero en este caso, como el contenedor se ejecuta en segundo plano, no podrás interactuar con él directamente.
  • `-d`: Indica que el contenedor debe ejecutarse en modo "detached".

Puedes comprobar que el contenedor se está ejecutando usando `docker ps`.

9. Acceder a un contenedor en segundo plano

Si necesitas acceder a un contenedor que se está ejecutando en segundo plano, puedes hacerlo usando el siguiente comando:

docker exec -ti id_contenedor bash

Esto te permitirá interactuar con el contenedor como si estuvieras en su terminal. Recuerda que debes sustituir `id_contenedor` por el ID real de tu contenedor.

Trabajando con puertos y volúmenes

Uno de los conceptos más importantes en Docker es el manejo de puertos y volúmenes. Los volúmenes permiten que los datos persistan incluso cuando un contenedor se detiene o se elimina. Esto es fundamental para aplicaciones en producción donde la pérdida de datos no es aceptable.

10. Creando un contenedor con volúmenes

Imagina que deseas ejecutar un servidor web Nginx y quieres que los archivos que sirves sean persistentes, incluso si el contenedor se elimina. Para hacerlo, puedes crear un volumen que mapee un directorio en tu máquina local a un directorio en el contenedor.

Para crear un nuevo contenedor Nginx que utilice un volumen, ejecuta el siguiente comando:

docker run -p 8010:80 -d -v ~/code:/website_files kitematic/hello-world-nginx

En este comando:

  • `-p 8010:80`: Mapea el puerto 80 del contenedor al puerto 8010 de tu máquina local. Esto significa que podrás acceder al servidor web en `http://localhost:8010`.
  • `-d`: Ejecuta el contenedor en modo "detached".
  • `-v ~/code:/website_files`: Crea un volumen que mapea la carpeta local `~/code` al directorio `/website_files` en el contenedor.

Esto significa que cualquier archivo que coloques en `~/code` en tu máquina local se reflejará dentro del contenedor en `/website_files`, y viceversa.

11. Modificando archivos dentro del contenedor

Una vez que el contenedor esté en funcionamiento, puedes verificar que Nginx esté funcionando accediendo a `http://localhost:8010`. Si todo está configurado correctamente, deberías ver la página de bienvenida de Nginx.

Para modificar archivos en el contenedor, primero accede a la terminal del contenedor con:

docker exec -ti id_contenedor sh

Utiliza `sh` en lugar de `bash` porque algunas imágenes base pueden no tener `bash` instalado, pero generalmente sí incluyen `sh`. Esto asegura que siempre tengas acceso a un shell básico.

Ahora, localiza el archivo HTML que deseas modificar. Por ejemplo, puedes encontrarlo en `/website_files/index.html`. Haz los cambios que necesites y guarda el archivo.

Después de realizar los cambios, regresa a tu navegador y recarga la página. Si todo ha salido bien, deberías ver que los cambios se aplican sin necesidad de reiniciar el contenedor.

12. Persistencia de datos con volúmenes

Los cambios que realices dentro del contenedor son temporales. Si detienes o eliminas el contenedor, todos los cambios se perderán. Aquí es donde los volúmenes son útiles.

Para demostrar cómo los volúmenes permiten que los datos persistan más allá del ciclo de vida del contenedor, asegúrate de que tu contenedor está utilizando el volumen que creaste anteriormente. Al modificar los archivos en la carpeta `~/code` de tu máquina local, verás que esos cambios se reflejan en el contenedor.

Finalmente, puedes crear otro contenedor de la misma manera que hiciste antes:

docker run -p 8010:80 -d -v ~/code:/website_files kitematic/hello-world-nginx

Verás que los cambios que realizaste en `~/code` siguen estando disponibles, demostrando que los volúmenes permiten la persistencia de datos.

Documentación oficial

Para más información y detalles sobre todas las características de Docker, consulta la [documentación oficial de Docker](https://docs.docker.com/).

Conclusión

¡Felicidades! Ahora has completado un tutorial básico sobre Docker. Has aprendido a instalar Docker, ejecutar contenedores, administrar imágenes, y cómo utilizar volúmenes para persistencia de datos. Continúa explorando las capacidades de Docker para mejorar tu flujo de trabajo y desarrollo de software.