Difficulty: Principiante
Estimated Time: 60 minutes

Work in Progress

¿Qué es Docker?

Docker es un proyecto de código abierto que automatiza el despliegue de aplicaciones dentro de contenedores de software, proporcionando una capa adicional de abstracción y automatización de Virtualización a nivel de sistema operativo en Linux. Docker utiliza características de aislamiento de recursos del kernel de Linux, tales como cgroups y espacios de nombres (namespaces) para permitir que "contenedores" independientes se ejecuten dentro de una sola instancia de Linux, evitando la sobrecarga de iniciar y mantener máquinas virtuales, o así es como se describe en la Wikipedia.

En la práctica, docker permite a los desarrolladores entornos seguros, portables y aislados del resto de aplicaciones. Además permite despliegues más rápidos y baratos. Para el equipo devOps permite generar despliegues estandarizados y repetibles aumentando la velocidad de Ci y CD. En conclusión, observamos que docker nos permite la segregación de responsabilidades entre los desarrolladores y devOps.

¿Qué aprenderemos en este pequeño escenario?

La idea es tener un conocimiento básico de docker en cuanto a su instalación, manejo de los principales comandos y despliegues sencillos.

Crearemos nuestros propios Dockerfile, fichero de construcción de docker y utilizaremos imágenes públicas alojadas en el repositorio oficial de docker, Dockerhub.

Además, podremos reutilizar nuestro entorno para extender la práctica, a través de unas ideas de ejercicios para que practiques.

Más adelante...

Eventualmente, se crearán más cursos de docker con un nivel de profundidad y dificultad mayor . La idea es que por ahora puedas aprender la base gracias a este pequeño curso, basado en mi experiencia con la herramienta.

Lo bueno es que Docker tiene una curva de aprendizaje bastante viable y probablemente con este curso y una semana de trabajo + investigación por tu cuenta ya seas todo un maestro, así que...

¡Ánimo y a darle caña!

¡Muchas gracias por participar del curso!

No te olvides de puntuar y compartirlo con alguno de tus compañeros: ¡el saber no ocupa lugar!

Estate atento a nuestro perfil para más cursos próximamente... :)

Don’t stop now! The next scenario will only take about 10 minutes to complete.

Docker - Intro

Step 1 of 9

Preparándonos para utilizar Docker

Para este curso vamos a utilizar una máquina Ubuntu, distribución que suele utilizarse para crear entornos de producción y que cuenta con mucha documentación sobre cómo solucionar todo tipo de problemas.

Instalamos Git para empezar a jugar, ejecutando apt update && apt install -y git (esto puede tardar un poco)

Lo primero que haremos es clonar los ficheros de los ejemplos que iremos recorriendo en este escenario: lo haremos ejecutanto git clone https://github.com/devopstf/training-setup.git

En este escenario introductorio, repasaremos los conceptos básicos de Docker y recorreremos los ejemplos del repositorio que acabamos de clonar y que se encuentran en el directorio cd /home/scrapbook/tutorial/training-setup/training-samples/ && ll

Arquitectura Docker.

La arquitectura docker se compone de los siguientes componentes:

Arquitectura Docker

  • Docker Daemon (dockerd): Escucha por la Docker API las peticiones y controla los objetos típicos de docker: imágenes, contenedores, redes y volúmenes. Además, puede comunicarse con otros dockerd para dirigir servicios docker.
  • Docker Client: Interacción de los usuarios con docker a través de comandos: build, run, stop, etc. Puede comunicarse con más de un dockerd.
  • Docker Registry: Donde se almacenan las imágenes docker. Púlico: Docker Hub, Privado: Nexus3, Gitlab,etc.
  • Docker Objects: Incluye la creación y uso de imágenes, redes, contenedores, volúmenes y plugins.

Objetos de Docker

Imagen:

  • Fichero binario que contiene todo el sistema de ficheros de un contenedor
  • Estructurado en capas (layers) por delta.
  • Para su construcción se genera un fichero (Dockerfile)
  • Se ejecuta la instrucción docker build Dockerfile
  • Cuando se genera un cambio en el Dockerfle y un rebuild de la imagen, solo las nuevas capas que han cambiado son construidas (Ligeras, Pequeñas y Rápidas)

Contenedor:

  • Fichero de texto que contiene todos los comandos que se ejecutarían manualmente con el fin de construir una imagen Docker.
  • Docker puede construir imágenes automáticamente leyendo las instrucciones desde un Dockerfile.

Primeros pasos: "Hola Mundo", imágenes y contenedores

  • Ejecutamos docker container run hello-world
  • Para listar las imágenes disponibles en el repositorio de docker local se utiliza el comando docker images. Como no se ha generado ni descargado ninguna debe aparecer vacío. En este ejemplo, se está utilizando una imagen ya construida donde ya se han descargado imágenes previamente (redis,ubuntu,alpine).
  • Para listar los contenedores ejecución se debe ejecutar docker ps. Si deseamos listar todos los contenedores tantos en ejecución como parados docker ps -a. Del mismo modo, al no tener ninguna imagen para desplegar debe aparcer vacío.
Terminal Host 2