Curso práctico de Docker y Microservicios (apto para todos)

Aprende por qué es importante, cómo funciona, y cómo empezar usar Docker en tus proyectos!

Lo que aprenderás con este curso

  • Diferencia entre aplicaciones monolíticas y aplicaciones basadas en microservicios
  • La importancia de una arquitectura basada en microservicios
  • Qué es Docker y cómo empezar a usarlo
  • Cómo crear contenedores de Docker a partir de imágenes
  • Cómo descargar imágenes oficiales pero también a crear tus propias imágenes

Este curso está dedicado a

Desarrolladores web (frontend o backend)

Desarrolladores móviles

Desarrolladores de videojuegos

Apto para estudiantes de todos los niveles

Requisitos

Muchas ganas de aprender

Una computadora o laptop y conexión a internet

Contenido del curso

01

Vista previa disponible

1 Importancia: Qué problemas resuelve Docker 03:56

Empecemos viendo cuál es la importancia de Docker, y qué problemas han existido tradicionalmente, que ahora podemos resolver usando Docker.


02

2 Historia breve: Máquinas virtuales y Docker 12:19

¿Cómo era el mundo antes de la llegada de las máquinas virtuales? Y, ¿qué cambió con la llegada de Docker?


03

3 VMs y Containers no son enemigos 04:51

¿Es el fin definitivo de las máquinas virtuales, o más bien el inicio de una era donde ambas tecnologías conviven?


04

4 Microservicios: Visión general 06:30

Veamos cómo funciona una arquitectura basada en microservicios, en contraste con el uso de aplicaciones monolíticas.


05

5 Microservicios: Casos reales 15:02

Veamos cómo el uso de una arquitectura basada en microservicios ayudó a 3 importantes empresas innovadoras con dificultades que se encontraron durante su crecimiento: Walmart, Spotify y Amazon.

06

6 Docker: Containers & Images 08:19

Veamos cuál es la diferencia entre Contenedores e Imágenes. Así mismo qué es un Dockerfile, un Registry, y Docker Hub.


07

7 ¿Cómo usar Docker según mi SO? 12:50

Contenedores Linux funcionan sobre Linux. ¿Pero qué hacemos si usamos Windows o Mac? Veamos una primera alternativa de solución.


08

8 VM a pantalla completa 02:35

Si tu máquina virtual no se expande a pantalla completa, lo puedes solucionar usando "Guest Additions".


09

9 Instalación en Linux 08:41

Veamos cómo instalar Docker en Linux. Específicamente en Ubuntu. Y verifiquemos finalmente la instalación ejecutando nuestro primer contenedor.


10

10 Instalación para Windows 10:13

En esta lección vemos qué alternativas tenemos para trabajar con Docker en Windows. Así mismo, vemos qué son los Windows Containers y cómo operan, a diferencia de los Linux Containers. Finalmente, revisamos las diferencias entre VirtualBox y Hyper-V.

+2 recursos asociados a esta clase


11

11 Instalación para Mac 04:01

En esta lección vemos qué alternativas tenemos para trabajar con Docker en Mac.

+2 recursos asociados a esta clase

12

12 Lista de comandos básicos 03:00

En esta lección vemos un resumen de los comandos básicos principales. Los mismos que estaremos usando en este módulo.


13

13 Docker Run, Ps, Rm, Images & Rmi 13:52

Veamos de forma práctica cómo crear, listar y eliminar contenedores; y así mismo cómo listar y eliminar imágenes.


14

14 Docker Pull, Stop & Exec 06:49

En esta lección continuamos revisando los comandos básicos que listamos al inicio de este módulo. Vemos cómo descargar una imagen, cómo detener un contenedor, y cómo ejecutar un comando sobre un contenedor activo.

15

15 Shell Scripting 14:01

Esta lección no está relacionada directamente al uso de Docker. Sin embargo, es importante para tener una mejor idea de cómo surgen los scripts que vamos a usar en la construcción de imágenes posteriormente. Aquí creamos un primer script Bash que actúa como un contador hasta el infinito.


16

16 Bash Script con solicitud de entrada 03:41

Ya que estamos con Bash, aprovechamos para crear un segundo script, que pregunta al usuario por datos, captura los valores de entrada, y los muestra. Este script genera un mensaje de saludo simple con el nombre del usuario.


17

17 ¿Por qué y cómo construir imágenes? 06:23

Veamos por qué es conveniente y útil construir imágenes. Y cómo es el proceso en términos generales, haciendo uso de un Dockerfile.


18

18 Construye tu 1ra imagen 12:46

Veamos cómo construir nuestra primera imagen usando el comando "docker build". Partimos de una imagen base, copiamos nuestro script y por último definimos un comando por defecto con el cuál se iniciarán nuestros contenedores.


19

19 ¿Qué ocurre si olvidé algo en el Dockerfile? 05:17

En esta lección cometemos un error en nuestro Dockerfile pero volvemos a construir la imagen con el mismo tag para solucionarlo. Con esto, tenemos ya 2 imágenes construidas, una por cada script Bash que definimos en lecciones previas.


20

20 Publica tu 1ra imagen 04:13

Veamos cómo podemos subir nuestras imágenes a Docker Hub, haciendo uso del comando "docker push".

21

21 Detached mode (-d) 08:22

Veamos cómo podemos iniciar un contenedor en Detached mode, cuál es la diferencia entre foreground y background, cómo detener un contenedor inmediatamente, y cómo hacer uso del comando docker attach.


22

22 Interactive & TTY (-it) 07:55

Veamos cómo conectar la terminal de nuestro host con la de nuestro contenedor, y así mismo cómo iniciar un contenedor en modo interactivo, a fin de enlazar los valores de entrada (STDIN).


23

23 Publish ports (-p) 08:41

En esta lección vemos cómo publicar los puertos de un contenedor, al asociarlos con puertos de nuestro host. A modo de práctica iniciamos contenedores de servidores web, tales como Apache y Nginx.


24

24 Docker Exec 07:29

Antes creamos 2 contenedores, correspondientes a Nginx y Apache. En esta lección vemos cómo conectarnos a tales contenedores que ya están en ejecución, a fin de modificar archivos ubicados al interior de ellos.


25

25 Clean up (--rm) 04:16

Cuando hacemos pruebas, podemos iniciar muchos contenedores, y es muy probable que queramos eliminarlos al final. Veamos cómo iniciar un contenedor de modo que se elimine automáticamente al detenerse.


26

26 Diferencia entre Attach & Exec

Veamos cuál es la diferencia entre docker attach y docker exec, y por qué usamos uno en vez del otro para conectarnos por consola a nuestro contenedor de Nginx.


27

27 Volume binding (-v) & Inspect 12:44

En esta lección vemos cómo podemos montar un volumen, es decir, compartir una carpeta de nuestro host con un contenedor. También vemos cómo podemos usar docker inspect sobre los contenedores para ver información detallada sobre ellos.


28

28 Remove all containers 05:47

En esta lección vemos cómo eliminar de forma práctica todos los contenedores. También vemos cómo podemos usar los resultados de un comando como parte de otro.


29

29 Environment variables 14:03

En esta lección vemos cómo iniciar contenedores, declarando variables de entorno sobre los mismos, a fin de personalizar sus características.

30

30 Dockerfile: Repaso y sugerencias 06:07

En esta lección revisamos algunas ideas sobre cómo organizarnos a fin de escribir un Dockerfile, y así crear nuestras propias imágenes, correspondientes a cualquier proyecto que nos interese compartir.


31

31 Selección de la imagen base 08:15

Continuando con nuestro ejemplo, ahora seleccionamos la imagen base que usaremos. A modo de repaso usamos docker run con algunos flags, y docker exec.


32

32 Docker Commit & History 13:28

¿Cómo podemos asociar puertos de un contenedor con nuestro host si el contenedor ya está ejecutándose? ¿Cómo podemos salvar cambios realizados sobre un contenedor que está en ejecución? ¿Es posible crear imágenes sin un Dockerfile?


33

33 Uso de versiones específicas 02:36

Recordemos siempre usar versiones específicas: para nuestra imagen base, para el software y paquetes que instalamos, además de las dependencias específicas de nuestro proyecto a nivel de aplicación.


34

34 Una vista y una variable backend 04:50

En esta lección definimos una vista (template), y pasamos una primera variable desde backend, definida en nuestro código Python. Luego haremos lo mismo leyendo los valores desde variables de entorno.


35

35 Dos variables de entorno 06:22

En esta lección leemos 2 variables de entorno en nuestro código Python, y usamos tales valores para cambiar el comportamiento de nuestra aplicación web.


36

36 Docker Commit vs Dockerfile 01:28

Si bien ambos permiten construir imágenes, ¿cuál es recomendable?


37

37 Docker Cp 04:34

¿Es posible copiar archivos y/o carpetas de un contenedor al host y/o viceversa sin usar volúmenes? Sí, y en esta lección vemos cómo hacer ello.


38

38 Un Dockerfile para el proyecto 06:44

En esta lección definimos nuestro Dockerfile, usando las instrucciones FROM, RUN, COPY, WORKDIR y CMD.


39

39 Docker Logs 03:58

Veamos cómo consultar los mensajes de log generados por un contenedor.


40

40 Múltiples contenedores y Conclusiones 05:16

Con nuestra imagen lista, creamos N contenedores, todos personalizados de manera distinta gracias a las variables de entorno que soporta. También hacemos algunas conclusiones de forma general, según lo visto en este módulo.

41

41 Docker Tag & Docker Push 08:30

Veamos cómo renombrar una imagen usando "docker tag", y cómo compartir una imagen construida.


42

42 Git y Repositorio del curso 08:33

En esta lección subimos a un repositorio remoto los ejemplos que llevamos desarrollando en el curso, para que estén al alcance de todos.

+2 recursos asociados a esta clase


43

43 CMD vs ENTRYPOINT 16:18

Compartir imágenes está bien. ¿Pero qué hacen los contenedores que se inician a partir de ellas?

44

44 Docker Engine 12:26

Docker consta de 3 componentes principales, veamos cuáles son. Así mismo, veamos cómo funcionan los contenedores gracias a namespacescontrol groups y union file systems.

+1 recurso asociado a esta clase


45

45 Docker Storage 23:04

En esta lección vemos cómo Docker gestiona las capas de imágenes y contenedores, usando una estrategia llamada CoW. Y así mismo, los tipos de volúmenes que podemos montar para persistir los cambios realizados en nuestros contenedores.

+1 recurso asociado a esta clase


46

46 Docker Networking 13:57

Veamos qué tipos de networks usa Docker y en qué se diferencian. Además de cómo podemos definir nuestras propias networks y asociar contenedores a ellas.

+1 recurso asociado a esta clase


47

47 Docker Registry 08:22

En esta lección vemos qué son y cómo funcionan los registros de imágenes. Y así mismo que Docker Hub no es el único Docker Registry que existe.

+1 recurso asociado a esta clase

48

Vista previa disponible

48 Repaso general 06:45

En esta lección hacemos un repaso general de los conceptos que hemos visto hasta ahora, y luego proponemos un ejercicio que involucra interacción entre contenedores de distintas imágenes.


49

49 Construir imagen Node App 10:03

Veamos cómo hacer uso de un Dockerfile para construir una imagen basada en Node y que contenga nuestra aplicación web.

+1 recurso asociado a esta clase


50

50 Ejecutar App en un contenedor 06:09

Veamos cómo ejecutar un contenedor a partir de la imagen que hemos creado, y qué opciones podemos usar junto al comando docker run.


51

51 Ejecutar Mongo DB en un contenedor 06:43

En esta lección vemos cómo crear una Network, y cómo iniciar un contenedor de Mongo DB, de tal manera que luego podamos conectarnos desde nuestra app Node y desde Mongo Express.


52

52 Ejecutar Mongo Express en un contenedor 04:29

En esta lección iniciamos un contenedor de Mongo Express, sobre la Network que creamos anteriormente, y exponemos un puerto, para conectarnos a la UI desde nuestro navegador, y crear una primera base de datos y colección en Mongo DB.


53

53 Ejecutar todo (múltiples comandos) 04:44

En esta lección terminamos de levantar todos nuestros contenedores y vemos nuestra aplicación Node funcionando correctamente en nuestro navegador. Sin embargo, surge la interrogante de cómo automatizar todos los pasos que hemos seguido.


54

54 Docker Compose y YAML 16:11

En esta lección vemos qué es YAML y cómo es el formato para un archivo de docker compose. Los comandos que escribimos anteriormente son resumidos en un único archivo a fin de luego iniciar todo con un solo comando.


55

55 Ejecutar todo (1 comando Docker Compose) 06:23

Ahora vemos cómo hacer uso del comando docker-compose up para construir nuestra imagen e iniciar todos nuestros contenedores con las opciones indicadas.

56

56 Introducción e Importancia 06:10

Veamos qué es Container Orchestration, y por qué es importante hacer uso de herramientas como Docker Swarm y Kubernetes (que permiten orquestar contenedores y hosts).


57

57 Docker Swarm 04:59

Introducción general de qué es y cómo se usa Docker Swarm.


58

58 Kubernetes 06:37

Introducción general de qué es y cómo se usa Kubernetes.

59

59 Docker Compose File 13:49

En esta lección vemos qué imágenes oficiales vamos a usar desde Docker Hub, y cómo configurarlas revisando cada documentación.


60

60 Docker Compose Up 07:32

Iniciamos nuestros servicios asociados a nuestro proyecto Wordpress, usando el archivo docker-compose que escribimos en la lección anterior. Vemos la importancia de declarar una sección "volumes".


61

61 Agregando un servicio más 06:09

Veamos cómo agregar un servicio más a nuestro proyecto.

62

62 Introducción general 04:40

En esta lección hacemos una revisión general del proyecto, y recordamos la importancia de usar Docker.


63

63 Repositorio del proyecto 08:23

En esta lección hacemos una revisión general del proyecto. Vemos cómo está estructurado y leemos los archivos Dockerfile y docker-compose.

+1 recurso asociado a esta clase


64

64 Iniciando todos los servicios 08:58

En esta lección vemos cómo iniciar todos los servicios que constituyen a nuestro proyecto Laravel. Notamos que nos faltó modificar algo, pero no hay problema, solo tuvimos que detener y volver a iniciar todo.

65

65 Introducción general 03:11

Introducción al ejemplo de este módulo, donde revisamos la responsabilidad de cada servicio, es decir, la arquitectura del proyecto en general.


66

66 Repositorio del proyecto 09:36

Revisamos la diferencia entre los comandos docker compose y docker stack, además de cómo está constituido el proyecto.

+1 recurso asociado a esta clase


67

67 Ejercicio final y fin del curso 10:11

Revisión del ejercicio final y últimas palabras.

Preguntas frecuentes

Con una membresía premium obtienes acceso a todos los cursos de la plataforma, incluyendo este.

Como usuario premium tendrás acceso a la sección de preguntas y respuestas de la plataforma.

En nuestro foro privado, el 100% de las preguntas reciben respuesta 🙂.

Los pagos se pueden realizar vía PayPal o con tarjeta (crédito o débito).

Escríbenos a [email protected] si deseas coordinar otro medio de pago.

Curso práctico de Docker y Microservicios (apto para todos)

Esta serie consta de 67 capítulos.

Nivel de dificultad: Aprendiz.

Inicia sesión para empezar el curso y llevar un control de tu progreso.


¿Aún no te has registrado?

Crea fácilmente una cuenta, mide tu progreso, y accede a todos los cursos.


¿Te gustaría compartir este curso?

Espera un momento ...

¿Te gustaría llevar mi curso de Laravel, gratis?

Sólo debes ingresar tus datos: