Skip to content
Jose Luis Ferrete Olarte edited this page Mar 25, 2022 · 5 revisions

Píldora de Docker

Breves nociones sobre Docker y cómo podemos utilizarlo.

Logo docker

Documentación oficial

Índice de contenidos

  1. ¿Qué es Docker? ¿Para qué se utiliza?
  2. ¿Por qué Docker y por qué CI/CD?
  3. Diferencias entre contenedor y máquina virtual
  4. ¿Qué beneficios tiene esto?
  5. Imágenes de Docker
  6. DockerFiles
  7. Volúmenes
  8. Docker-run
  9. Comandos
  10. Docker-Compose
  11. Anexos y aclaraciones sobre la píldora

¿Qué es Docker? ¿Para qué se utiliza?

Docker es una plataforma de contenedores para ejecutar aplicaciones de forma aislada y eficiente.

El concepto de "Contenedor" no es algo novedoso, viene heredado de Linux. Para que lo entiendas, piensa en un contenedor de los que se cargan en los barcos. Es algo auto contenido en sí, que se puede llevar de un lado a otro de forma independiente, es portable.

¿Por qué Docker y por qué CI/CD?

  • Retorno de la inversión
  • Más velocidad
  • Aislamiento y seguridad
  • Facilita el despliegue de aplicaciones al entorno de producción
  • Facilita el testing
  • Menos espacio de almacenamiento para diferentes sistemas operativos
  • Menos costes para los tests
  • Posibilidad de probar distintas opciones en segundos (cambio de versión de tomcat, java, PHP...)
  • Portabilidad. Cualquier proyecto se podría pasar a un equipo de trabajo o a un cliente con solo copiar el "docker-compose"
  • No hay variaciones

Diferencias entre contenedor y máquina virtual

Un contenedor es más ligero, ya que mientras que a una máquina virtual necesitas instalarle un sistema operativo para funcionar, un contenedor de Docker funciona utilizando el sistema operativo que tiene la máquina en la que se ejecuta el contenedor.

Docker vs Maquina Virtual

¿Qué beneficios tiene esto?

Docker es una herramienta que facilita a desarrolladores, testers, administradores de sistemas... el trabajo con los entornos en sí donde se ejecutan las aplicaciones software, los procesos de despliegue, etc.

  • Para un desarrollador, el uso de Docker hace que puedan centrarse en desarrollar su código. No tiene que preocuparse de si dicho código funcionará en la máquina en la que se ejecutará.
  • Para el testing, es muy bueno, en concreto para tener entornos de pruebas. Es muy sencillo crear y borrar un contenedor. Además de que son muy ligeros. Podemos ejecutar varios contenedores en una misma máquina (donde dicho contenedor tendría el entorno de nuestra aplicación: base de datos, servidor, librerías…).
  • Los contenedores son más ligeros que las máquinas virtuales, se reduce el número de máquinas necesarias para tener un entorno.
  • Y lo que es mejor, Docker es open source.

Imágenes de Docker

Las imágenes de Docker son esencialmente una instantánea de un contenedor. Las imágenes se crean con el comando build, que crean un contenedor cuando se inicia con run. Una vez creada una imagen, se pueden almacenar en el Hub Docker.

DockerFiles

Un Dockerfile es un archivo de texto plano que contiene una serie de instrucciones necesarias para crear una imagen.

Volúmenes

Es la manera predefinida para almacenar los ficheros establecidos de un contenedor, usará el espacio de nuestro equipo.

Ventajas de usar volúmenes:

  1. En caso de borrado del contenedor, la información no se pierde.
  2. Se pueden compartir los archivos con otros contenedores en tiempo real.
  3. Simplifica el backup de esos archivos

Volumenes en Docker

Docker-run

Comando que sirve para levantar un contenedor. Podemos hacerlo muy sencillo o complicarlo todo lo que queramos. Se le pueden añadir infinidad de parámetros y configuraciones.

Comandos

Listar los contenedores que están en funcionamiento

docker ps

Listar TODOS los contenedores(Parados y en funcionamiento)

docker ps -a

Ver información de un contenedor

docker inspect <id o nombre del contenedor>

Parar un contenedor

docker stop <id o nombre del contenedor>

Poner en marcha un contenedor

docker start <id o nombre del contenedor>

Reiniciciar un contenedor

docker restart <id o nombre del contenedor>

Ver los logs de un contenedor

docker logs <id o nombre del contenedor>

Ejecutar un contenedor de forma interactiva con Shell

docker exec –it <id o nombre del contenedor> comando

Docker-compose

Es una herramienta para definir y ejecutar aplicaciones Docker multicontenedor que permite simplificar el uso de Docker a partir de archivos YAML, de está forma es mas sencillo crear contendores que se relacionen entre sí, conectarlos, habilitar puertos, volumenes, etc.

Nuestro repositorio está montado para ser ejecutado mediante Docker-compose:

docker-compose up -d

Anexos y aclaraciones sobre la píldora

Tras impartir la píldora, dejo algunos enlaces y amplío la información sobre las preguntas que realizaron los asistentes.

Ficheros YAML

YAML fue propuesto por Clark Evans en 2001 y al comienzo de su desarrollo significó "Yet Another Markup Language", esto para distinguir su propósito centrado en los datos en lugar de documentos marcados. Esto significa que YAML no propone etiquetas y etiquetas, solo formato e identificadores mínimos, centrándose realmente en los datos. Podría decirse que es una ampliación o extensión de los ficheros .properties

Generador de textos para la consola de Spring Boot

Si queréis ponerle letras en plan ‘ascii’, hay webs como esta: http://patorjk.com/software/taag/

Enlace a Kahoot

Como actividad de repaso de los contenidos, los asistentes compitieron de forma amistosa en este Kahoot, creado específicamente para la ocasión.