|
2 | 2 |
|
3 | 3 | ## Agenda
|
4 | 4 |
|
5 |
| -### Día I: Introducción a Docker (6 de Octubre) |
| 5 | +### Día I: Introducción a Docker (27 de Septiembre de 2021) |
6 | 6 |
|
| 7 | +#### Teoría |
| 8 | +- Introducción a Docker y por qué Docker |
7 | 9 | - ¿Por dónde empiezo?
|
8 |
| - * Docker Desktop |
9 |
| - * Docker en Linux |
10 |
| - * Docker CLI client: La línea de comandos interactiva |
| 10 | + * Docker Desktop |
| 11 | + |
| 12 | +#### Práctica |
| 13 | + |
11 | 14 | - Comandos básicos:
|
| 15 | + * docker version y docker info |
12 | 16 | * Ejecutar tu primer contenedor
|
13 | 17 | * Introducción a las imágenes
|
14 | 18 | * Docker Hub
|
15 | 19 | * Exponer puertos de un contenedor
|
16 |
| - * ¿Dónde están los contenedores creados hasta ahora? |
| 20 | + * ¿Dónde están los contenedores? |
17 | 21 | * Personalizar el nombre de los contenedores
|
18 |
| - * Ejecutar un contenedor y lanzar un shell interactivo en él |
19 |
| - * Ejecutar comandos desde mi local dentro del contenedor |
20 |
| - * Conectarme a un contenedor |
| 22 | + * Ejecutar un contenedor y lanzar un terminal dentro de él |
| 23 | + * Conectarme a un contenedor |
| 24 | + * Ejecutar comandos dede mi local dentro del contenedor |
21 | 25 | * Copiar archivos desde local a un contenedor y viceversa
|
22 | 26 | * Cómo parar/iniciar un contenedor ya creado
|
23 | 27 | * Eliminar contenedores
|
24 | 28 | * Docker Desktop Dashboard para la gestión de contenedores
|
25 |
| - |
26 | 29 | - Ejemplo práctico: SQL Server dockerizado
|
27 |
| -- Deberes |
| 30 | +#### El resumen de hoy |
| 31 | +#### Chuleta de comandos |
| 32 | +#### Deberes |
| 33 | + |
| 34 | +### Día II: Trabajando con imágenes (28 de Septiembre de 2021) |
| 35 | + |
| 36 | +#### Teoría |
28 | 37 |
|
29 |
| -### Día II: Trabajando con imágenes (13 de Octubre) |
| 38 | +- Introducción a las imágenes |
| 39 | +- Los registros |
| 40 | + |
| 41 | +#### Práctica |
30 | 42 |
|
31 | 43 | - Ver todas las imágenes en local hasta ahora
|
32 | 44 | - Buscar entre las imágenes descargadas
|
|
46 | 58 | * Ejecutar un contenedor con tu nueva imagen
|
47 | 59 | * Subir tu imagen a Docker Hub
|
48 | 60 | - Eliminar imágenes
|
49 |
| -- Deberes |
| 61 | +#### El resumen de hoy |
| 62 | +#### Chuleta de comandos |
| 63 | +#### Deberes |
50 | 64 |
|
51 | 65 |
|
52 |
| -### Día III: Contenerización de aplicaciones (19 de Octubre) |
| 66 | +### Día III: Contenerización de aplicaciones (4 de Octubre de 2021) |
53 | 67 |
|
54 |
| -- Mi primera aplicación a contenerizar > Node.js y Visual Studio Code |
55 |
| - * El Dockerfile |
56 |
| - * Ejecutar eslint como parte de la build |
57 |
| -- Multistage build |
58 |
| -- Ejemplo de contenerización de una aplicación en un entorno .NET |
| 68 | +#### Teoría |
| 69 | + |
| 70 | +- ¿Por qué queremos contenerizar nuestras aplicaciones? |
| 71 | +- Proceso de contenerización |
| 72 | +- El Dockerfile |
| 73 | +- Capas |
| 74 | +- Cómo generar imágenes |
| 75 | +- Publicar imágenes |
| 76 | +- Buenas prácticas |
| 77 | + |
| 78 | +### Prática |
| 79 | + |
| 80 | +- Visual Studio Code y Docker |
| 81 | +- Dockerfiles multi-stages |
| 82 | +- Ejemplo de contenerizaión de una aplicación en un entorno .NET |
59 | 83 | - Ejemplo de aplicación Java con IntelliJ
|
60 |
| -- Ejemplo de aplicación web en PHP con Eclipse |
61 |
| -- Ejemplo con contenedores Windows |
62 |
| - |
63 |
| -### Día IV: Networking (20 de Octubre) |
64 |
| - |
65 |
| -- Port Mapping |
66 |
| -- Exponer todos los puertos descritos como EXPOSE |
67 |
| -- docker0 |
68 |
| -- Listar las redes disponibles en un host |
69 |
| -- Los contenedores por defecto se meten en la red bridge/NAT |
70 |
| -- Inspeccionar una red |
71 |
| -- Crear una nueva red |
72 |
| -- Crear un contenedor asociado a una red específica |
73 |
| -- Descubrimiento de servicios y comunicación entre contenedores de la misma red |
74 |
| -- Un contenedor con dos endpoints |
| 84 | +- Ejemplo de aplicación con un contenedor Windows |
| 85 | + |
| 86 | +#### El resumen de hoy |
| 87 | +#### Chulera de comandos |
| 88 | +#### Deberes |
| 89 | + |
| 90 | +### Día IV: Almacenamiento y monitorización (5 de Octubre de 2021) |
| 91 | + |
| 92 | +#### Teoría del almacenamiento |
| 93 | + |
| 94 | +- Introducción al almacenamiento |
| 95 | +- Capas de lectura y del contenedor |
| 96 | +- Datos persistentes |
| 97 | +- Tipos de montaje |
| 98 | + |
| 99 | +#### Práctica del almacenamiento |
| 100 | + |
| 101 | +- Listar los volúmenes de un host |
| 102 | +- Crear un nuevo volumen |
| 103 | +- Asociar varios contenedores al mismo volumen |
| 104 | +- Comprobar qué contenedores están asociados a un volumen |
| 105 | +- Inspeccionar un volumen |
| 106 | +- Añadir datos a un volumen |
| 107 | +- Eliminar un contenedor con un volumen asociado |
| 108 | +- Asociar un nuevo contenedor a un volumen existente |
| 109 | +- Usar Visual Studio Code con Explore in Development Container |
| 110 | +- Ejemplo de bind mount |
| 111 | +- Usar el bind mount como read-only |
| 112 | +- Backup de un volumen |
| 113 | +- Eliminar un volumen |
| 114 | +- Un volumen no puede eliminarse mientras esté atachado |
| 115 | +- Eliminar todos los volúmenes que no estén siendo usados |
| 116 | +- Tmpfs mount |
| 117 | + |
| 118 | +#### Resumen de este apartado |
| 119 | +#### Chuleta de comandos |
| 120 | + |
| 121 | +#### Teoría de monitorización |
| 122 | + |
| 123 | +- Introducción a la monitorización |
| 124 | +- Tipos de logs |
| 125 | +- Docker events |
| 126 | +- Docker stats |
| 127 | +- Docker logs |
| 128 | + |
| 129 | +#### Práctica de monitorización |
| 130 | + |
| 131 | +- Ver qué eventos genera Docker |
| 132 | +- Métricas en Docker |
| 133 | +- Saber cuánto espacio estamos ocupando en disco |
| 134 | +- Prometheus |
| 135 | +- Grafana |
| 136 | +- Cómo ver los logs de un contenedor |
| 137 | +- Fluentd |
| 138 | +- Portainer.io |
| 139 | + |
| 140 | +#### Resumen del apartado |
| 141 | +#### Chuleta de comandos |
| 142 | + |
| 143 | +### Día V: Networking (18 de Octubre de 2021) |
| 144 | + |
| 145 | +#### Teoría |
| 146 | + |
| 147 | +- Fundamentos de redes |
| 148 | +- ¿Qué es un DNS? |
| 149 | +- Network namespaces |
| 150 | +- Docker y el networking |
| 151 | +- CNI |
| 152 | +- CNM |
| 153 | + |
| 154 | +#### Práctica |
| 155 | + |
| 156 | +- Listar redes disponibles en un host |
| 157 | +- Los contenedores por defecto se meten en la red bridge |
| 158 | +- Dos contenedores en la red por defecto |
| 159 | +- Cómo crear una red |
| 160 | +- Añadir un contenedor a una red específica |
| 161 | +- Asociar un contenedor a dos redes |
| 162 | +- Lo que habíamos visto hasta ahora: port mapping |
| 163 | +- Exponer todos los puertos descritos como EXPOSE en la imagen |
| 164 | +- Ejemplo de un contenedor en la red de tipo host |
75 | 165 | - Deshabilitar la red para un contenedor
|
| 166 | +- Eliminar una red |
| 167 | +- Eliminar todas las redes que no se estén utilizando |
76 | 168 | - Crear una red de tipo overlay
|
| 169 | +- Apartado Networks en Visual Studio Code |
| 170 | + |
| 171 | +#### Resumen del día |
| 172 | +#### Chuleta de comandos |
| 173 | +#### Ejercicios |
| 174 | + |
| 175 | +### Día VI: Docker Compose y Docker Swarm (19 de Octubre de 2021) |
| 176 | + |
| 177 | +#### Teoría de Docker Compose |
| 178 | + |
| 179 | +- Introducción a los microservicios |
| 180 | +- Introducción a Docker Compose |
| 181 | + |
| 182 | +#### Práctica de Docker Compose |
| 183 | + |
| 184 | +- Desplegar un Wordpress de forma manual |
| 185 | +- El archivo docker-compose.yaml |
| 186 | +- Ejecutar aplicación con Docker Compose |
| 187 | +- Parar la aplicación |
| 188 | +- Ejecutar la aplicación en segundo plano |
| 189 | +- Eliminar la aplicación |
| 190 | +- Desplegar una aplicación propia generando la imagen |
| 191 | +- ver todas las aplicaciones que se están ejecutando a través de Docker Compose |
| 192 | +- Ver todos los proyectos levantados con Docker Compose |
| 193 | +- Asignar un nombre al proyecto |
| 194 | +- Reiniciar los contenedores de la aplicación |
| 195 | + |
| 196 | +#### Resumen de la parte de Docker Compose |
| 197 | +#### Chuletas de Docker Compose |
| 198 | + |
| 199 | +#### Teoría de Docker Swarm |
| 200 | + |
| 201 | +- ¿Qué es Docker Swarm? |
| 202 | +- ¿Cómo funciona? |
| 203 | +- Alta disponibilidad |
| 204 | +- Balanceo de Carga |
| 205 | +* Modo Ingress |
| 206 | +* Modo host |
| 207 | + |
| 208 | +#### Práctica de Docker Swarm |
| 209 | + |
| 210 | +- Como iniciar un clúster con Docker Swarm |
| 211 | +- Docker Machine para crear VMs con Docker Engine |
| 212 | +- Crear un clúster con Docker Machine |
| 213 | +- Desplegar una aplicación en nuestro nuevo clúster |
| 214 | +- Escalar la aplicación |
| 215 | +- Constraints para desplegar los servicios solamente en los workers |
| 216 | +- Visualizador de un Swarm |
| 217 | +- Modo Ingress |
| 218 | +- Modo Host |
| 219 | +- Docker Stacks |
| 220 | + |
| 221 | +#### Resumen de la parte de Docker Swarm |
| 222 | +#### Chuleta de comandos |
| 223 | +#### Ejercicios |
77 | 224 |
|
78 |
| -### Día V: Almacenamiento y monitorización (26 de Octubre) |
79 |
| -- Almacenamiento |
80 |
| - * Ver todos los volúmenes en el host |
81 |
| - * Crear un nuevo volumen |
82 |
| - * Inspeccionar un volumen |
83 |
| - * Añadir datos dentro de un volumen |
84 |
| - * Eliminar un contenedor con un volumen montado |
85 |
| - * Asociar un nuevo contendor a un volumen existente |
86 |
| - * Backup de un volumen |
87 |
| - * Eliminar un volumen |
88 |
| - * Un volumen no puede eliminarse mientras esté montado |
89 |
| - * Eliminar todos los volúmenes sin usar |
90 |
| - * Ejemplo de bind mount |
91 |
| - * Usar bind mount en modo lectura |
92 |
| - * Tmpfs mount |
93 |
| -- Monitorización |
94 |
| - * Cómo ver los logs de un contenedor |
95 |
| - * Ejemplo de los drivers de logging con Fluentd |
96 |
| - * Métricas |
97 |
| - * Ejemplo con Prometheus |
| 225 | +### Laboratorio de Docker (25 de Octubre de 2021) |
0 commit comments