Introducción a contenedores con Docker + IA Generativa con Gisela Torres

Duration

90:12

Captions

1

Language

ES

Published

Streamed live on Jul 22, 2025

Description

Intro a contenedores usando Docker y lo que esta compañía está desarrollando para ayudarnos con el desarrollo de apps que usan IA Generativa. 🎙️ ¿Nuevo en la transmisión o buscando mejorar? ¡Consulta StreamYard y obtén un descuento de $10! 😍 https://streamyard.com/pal/d/4575724441698304

Captions (1)

00:00

que hoy traemos a una invitada,

00:03

una experta de la materia para hablar de

00:06

contenedores con Docker. Es Gisela

00:09

Torres, trabaja en Microsoft y le vamos

00:11

a dar la bienvenida para que se presente

00:14

ella misma y nos cuente más sobre a qué

00:17

se dedica. Hola, Gisela, ¿cómo estás?

00:19

Bienvenida.

00:20

>> Hola, buenas a todos. ¿Qué tal? Pues

00:23

muchas gracias por invitarme, muchas

00:25

gracias por esta bienvenida. Vamos, no

00:28

puedo estar más contenta y más nerviosa

00:29

a la vez, así que

00:31

>> nada, ya verás.

00:32

>> Enamente bien somos, o sea, gente muy

00:35

buena. Mira, ya te están diciendo

00:36

bienvenida. Bienvenida, Gisela. Hola. O

00:39

sea, que nada, la gente está buenas,

00:41

Gisela, buenas, buenas. Todo el mundo ya

00:43

te está dando aquí. El placer es

00:45

nuestro, están diciendo por aquí. Así

00:46

que nada, bienvenida. Muchas gracias por

00:48

pasarte. Gisela, comentaba que trabajas

00:51

en Microsoft, estás en Microsoft

00:54

trabajando. Me comentabas fuera del

00:55

directo que llevabas más de 10 años en

00:58

Microsoft.

00:59

>> Sí, de hecho estábamos también

01:00

comentando que éramos de la misma

01:02

quinta, o sea, que llevo 18 añitos

01:04

jugando con estas cosas en general, no

01:06

solo con contenedores obviamente no,

01:08

pero con con contenedores unos poquitos

01:10

menos, pero sí, sí. Y hace ya unos

01:13

cuantitos años fui MVP de Windows Azure,

01:17

cuando ni siquiera era Microsoft Azure,

01:19

en el año 2010 y luego ya pues pasé a

01:22

los poquitos años a a Microsoft,

01:25

>> siempre en el área de desarrollo

01:27

orientada pues a hacer aplicaciones en

01:30

el cloud y ahora en un área que tiene

01:33

que ver con la experiencia del

01:35

desarrollador, o sea, que qué mejor

01:36

sitio para para estar hoy en día. Y

01:38

claro, pues hay que hablar de IA, hay

01:40

que hablar de contenedores y hay que

01:41

hablar de GitHub y hay que hablar de de

01:44

todo lo que tenemos en esta casa. Así

01:45

que vamos, eh super contenta de estar

01:47

aquí y además desde hace 4 o 5 años

01:50

también soy profesora del bootc de Bobs

01:53

de Lemon Code, que es uno de los motivos

01:56

por los cuales estoy aquí para contaros

01:58

un poquito de forma supercprimida y

01:59

super reducida las cosas que vemos en

02:01

este en este book. Totalmente. De hecho,

02:04

mira, os voy a os voy a enseñar mientras

02:07

ya que ha dicho lo del bootcam. Ay, esto

02:09

no, esto quitar pum y esto. Ay, ¿por qué

02:12

no me aparece ahora? Ahora que se había

02:14

vuelto loco. Aquí lo tenemos. El tema es

02:16

que Gisela es una de las profesoras, una

02:19

de las docentes que tienen el Book and

02:21

DevOps de Lemon Code, que va a empezar

02:24

en octubre. Es una formación que es en

02:27

remoto, que es 100% flexible. tenéis

02:29

diferentes formas y modalidades de poder

02:32

asistir y hacer todo el proceso. Las

02:35

tecnologías como es de DevOPS, pues hoy

02:37

vamos a hablar de contenedores con

02:38

Docker, pero que en el bootcam hablan

02:41

desde Docker, cubernetes, Gijap Action,

02:43

Jenkin, Terraford, Ansiball, Grafana,

02:45

Promeceus, Asura, WS, Ax, Hicks, Gooks y

02:50

todo lo que haya todo lo que haya de

02:52

Bucandops que os podáis imaginar. Me

02:55

imagino Gisela, que aparte de Docker,

02:57

Asur también lo das tú. Sí, también ahí

03:00

tocamos todos los palos. Sí, sí.

03:02

>> Buenísimo. Pues mira, entre los docentes

03:04

tenemos aquí a Yolanda, Gisela Torres,

03:06

que es ella, Eduard Tomás, tenemos a

03:09

Jaime Salas, Santiago Camargo y Joaquín

03:11

Trillo. Empieza, si no me equivoco, es

03:13

el, mira, no me equivoco, pero pone aquí

03:15

6 de octubre, son 6 meses de duración,

03:18

96 horas de docencia y trabajo que

03:20

tenéis que llevaros y mover vuestras

03:22

manitas un poquito, serían 192 horas.

03:25

Una cosa importante, si estáis

03:28

interesados, que os voy a dejar el

03:29

enlace en el chat para la gente que le

03:32

interese, que sepáis que si le decís que

03:34

venís de parte no solo mía, sino de

03:37

Gisela, dice, es que he visto la pedazo

03:39

de masterclass que ha dado Gisela y me

03:41

ha encantado. Bueno, pues os hacen un

03:43

10% de descuento sobre este precio. Si

03:46

estáis en situación de desempleo, tenéis

03:48

ingresos netos inferiores a 15,500 €

03:50

también hay un descuento en la

03:52

matrícula, así que se lo comentáis,

03:54

¿vale? que le decís, "Oye, mira, yo es

03:55

que estoy en desempleo, estoy en el paro

03:58

y tal y he visto a Gisel, además me ha

04:00

encantado lo que ha explicado y yo me

04:01

quiero apuntar, pero estoy en esta

04:02

situación." Bueno, hablad con ellos

04:04

porque la verdad es que hay gente que da

04:05

muchas facilidades y que y que,

04:08

son seis meses, eh, también que es medio

04:10

año, que eso es increíble. Mucha gente

04:11

dice, "No, voy a aprender esto en dos

04:13

semanas." Bueno, bueno, o sea, solo lo

04:15

de Docker que hoy vas a explicar, que va

04:17

a ser menos de, no sé, una hora y media

04:19

en el curso, si no me equivoco, estás un

04:21

mes entero para hablar de Docker. un mes

04:25

machacando a todos, contando todo,

04:28

bueno, todo más de lo que vamos a ver

04:30

aquí, pero en resumidas cuentas, sí, sí,

04:33

un mes, eh, viendo con cariño cada una

04:35

de las cosas que deberías de saber para

04:37

vivir supertranquilo, supertranquila,

04:39

trabajando con Docker y luego para

04:41

posteriormente que mi compañero Edward,

04:43

que también es profe, como hemos visto,

04:44

que os dé toda la caña que haga falta

04:47

con con cubernetes, ¿no? Entonces, sí,

04:50

sí, o sea, es espectacular el el tiempo

04:52

que le dedicamos a cada cosa para que

04:55

con cariño lo vayamos acertando.

04:57

>> Espectacular. Claro, imagínate un mes,

04:58

un mes de docker, es que acabas, vamos,

05:00

que te conviertes casi en ballena,

05:02

¿sabes? Desde de tanto que le das

05:04

cañita. O sea, tremendo. Pues si te

05:07

parece, Gisela, pues nada, tú te pones

05:10

ahí modo piloto. Yo me voy a poner

05:12

Gijacopilot. Modo modo guijacilot. No,

05:15

pero que si mira, veo que tienes aquí tu

05:18

pantalla que ya la estás la tenemos por

05:21

aquí. A ver si nos ponemos aquí. P ahí,

05:23

espérate, tengo que quitar la mía. Y

05:25

ponemos la tuya. Pam. Y ya tienes aquí

05:27

tu pantallita. Así que nada, yo te iré

05:29

haciendo preguntas que la gente pues va

05:31

a tener en el chat, va a tener este tipo

05:32

de cosas. Le recordaremos después lo del

05:34

bootcamp porque seguro que hay gente que

05:36

llega tarde y tal, pero pero nada, te

05:38

cedo un poco los mandos para que nos

05:40

expliques sobre Docker, Gisela.

05:43

Pues perfecto, muchas gracias, Midu.

05:45

Pues vamos a empezar eh desde los

05:48

inicios y sobre todo cuando yo empiezo a

05:49

trabajar con cualquier tecnología, lo

05:51

primero que me pregunto es el por qué, o

05:53

sea, ¿por qué necesito aprender

05:54

contenedores? ¿Por qué necesito

05:55

aprender, en este caso Docker, no? Y el

05:58

por qué en este caso yo hace años me lo

06:00

cuestionaba también, no tenía muy claro

06:02

si era algo más de IT, era algo más de

06:04

desarrollo y entonces pues todavía al

06:06

principio iba un poco al ralentí, pero

06:07

de hace ya unos eh cinco o 6 años pues

06:10

dice, "Venga, vamos a dar una

06:11

oportunidad a esto que parece que está

06:12

cogiendo tirón, ¿no? Y principalmente

06:15

los contenedores no van a ser mejores

06:17

personas, mejores desarrolladores,

06:19

porque vamos a conseguir que nuestras

06:21

aplicaciones tengan únicamente lo que

06:23

necesitan para poder ejecutarse no solo

06:25

en tu máquina, sino en cualquier

06:27

ordenador del mundo donde tengamos pues

06:29

un motor que sepa ejecutar contenedores.

06:32

Con lo cual vamos a conseguir que vamos

06:33

a poder reducir eh todo lo que

06:36

potencialmente pues puede hacer que

06:38

nuestra aplicación también sea

06:39

vulnerable y luego también que nuestra

06:40

aplicación la haga lo más rápida

06:42

posible, siempre y cuando sigan las

06:44

buenas prácticas, por supuesto, ¿no?

06:46

Pero el objetivo principal es que en mi

06:48

máquina funciona, ya no va a ser una

06:50

excusa porque vamos a conseguir

06:51

utilizando estas imágenes de Docker o

06:54

contenedores en general, pues que

06:56

podamos tener nuestra aplicación

06:57

altamente escalable, super eh rápida, eh

07:01

reduciendo el espacio para poder ser

07:05

atacada a través de vulnerabilidades y

07:06

luego, por supuesto, pues luego ponerlo

07:08

en orquestadores como pueda ser un

07:09

cubernetes, ¿no? Y luego super

07:11

importante y esto si me da tiempo, que

07:13

no sé si me dará tiempo, lo veremos

07:15

después. vamos a poder incluso conerizar

07:17

nuestros entornos de desarrollo

07:18

utilizando estas tecnologías de una

07:20

forma superchula que va a hacer que ni

07:21

siquiera tengas que instalarte nada en

07:23

tu local para poder desarrollar en tu

07:25

día a día. Con lo cual, vamos, yo lo uso

07:27

todos los días y me parece brutal, ¿no?

07:28

El mundo de los de containers, por

07:30

ejemplo.

07:31

Así que si te he convencido, eh,

07:33

>> a mí me ha convencido. Yo, Gisela, estoy

07:35

dentrísimo. Yo estoy dentrísimo. Yo

07:37

estoy dentrísimo. Yo no sé la gente. Yo

07:40

veo creo que la gente está dentrísimo

07:42

también, ¿eh? Dice, ya dice aquí la

07:43

gente dice, "Qué genial el aporte de

07:45

Gisela, o sea, ya la gente está dentro,

07:47

o sea, que dale dale."

07:48

>> Pues hala, una vez que ya hemos con

07:50

hecho con el Pokémon Zaska, venga,

07:51

ahora, ¿qué necesito para empezar con

07:53

los contenedores? Pues en este caso lo

07:56

vamos a centrar en Docker, aunque sí que

07:57

es cierto que contenedores no es igual a

07:59

Docker. Docker es una empresa y a la vez

08:02

un software que lo que nos ha permitido

08:03

es meternos en el mundo de los

08:05

contenedores, sobre todo a los

08:06

desarrolladores, de una forma

08:08

superfácil. y nos ha dado unas

08:09

herramientas que nos permite que el

08:11

empezar a trabajar con contenedor es

08:13

algo que si empiezas luego a rascar ves

08:16

que hace cosas que son muy complejas a

08:18

nivel de redes, a nivel de

08:19

almacenamiento, a nivel de DNS,

08:22

etcétera, pero que para ti es totalmente

08:24

transparente, con lo cual no te hace

08:26

falta averiguar las tripas para empezar

08:28

a trabajar dentro de este mundo. Luego

08:29

ya si quieres, pues cuando ya vas

08:31

cogiendo un poquito más de soltura,

08:33

puedes ir eh más al detalle, ¿no? Pero

08:35

para un desarrollador empezar con Docker

08:37

es sersencillo. Así que lo primero que

08:40

necesito y a día de hoy se puede

08:42

instalar tanto en Windows como en Mac

08:44

como en Linux es Docker Desktop, que es

08:47

un software que proporciona la compañía,

08:49

que aquí, como veis, cuando me pongo

08:50

encima del eh del botón de descargar eh

08:53

Docker Desktop, pues lo lo tenemos para

08:55

Mac, para Intel, eh también en Mac, en

08:58

este caso, mi ordenador, bueno, mi Mac

09:00

es un es un Intel, ¿no?, que ya es

09:02

viejito, eh, Windows e incluso Linux.

09:05

¿Por qué va mejor en Linux que en Mac en

09:08

Windows? Pues la realidad es que para

09:10

que pueda funcionar tanto en Mac como en

09:11

Windows, este Docker Desktop lo que hace

09:13

es que instala una máquina virtual que

09:16

para ti también va a ser transparente.

09:18

Aquí todo es transparente y entonces

09:19

pues puede ser que el delay sea un

09:21

poquito eh más notable, ¿no? Pero en el

09:23

caso de Linux lo que tienes es que lo

09:25

ejecutas directamente sobre tu kernel de

09:28

Linux, con lo cual eh en el caso de

09:30

Windows y Max tiene que simularlo, pero

09:31

en el caso de Linux no. Por eso es uno

09:33

de los motivos en los que suele ir un

09:34

poquito mejor. Pero a mí me pasa como

09:36

amigu, yo normalmente trabajo en Mac y

09:38

trabajo en Windows, pero Linux es verdad

09:40

que no lo trabajo tanto, pero bueno, sí

09:42

que es cierto que este es el motivo por

09:44

el cual va un poquito más rápido, ¿no?

09:47

>> Yo, en mi caso, ya lo tengo instalado.

09:49

Bueno, vamos a perder tiempo en eso que

09:51

no tiene mucho sentido aquí, pero sí que

09:53

quería recalcar una cosa de lo que ha

09:55

comentado antes Midu y que también han

09:57

comentado durante eh la intro, ¿no?, que

09:59

era como ostras, y sigue consumiendo

10:01

tanto como consumía cuando me lo instalé

10:02

para probar y automáticamente lo borré.

10:05

Pues lo cierto es que no. Y si os fijáis

10:08

en la parte superior de mi pantalla,

10:10

aquí tengo Docker esperando a que yo

10:12

empiece a trabajar con él y tiene como

10:14

una hojita.

10:15

>> Esa hojita lo que significa es que ahora

10:17

está como en un modo suspensión para no

10:20

estar comiéndose los recursos de mi

10:21

máquina si no estoy utilizando realmente

10:23

Docker. En ese momento, cuando ya

10:25

empieza a hacer cositas y empieza a

10:26

ejecutar contenedores, la primera vez le

10:29

costará un pelín, pero luego ya empezará

10:31

a funcionar y entonces ya ahí se

10:32

empezará a comerse los recursos de mi

10:33

máquina. Pero bueno, es otro tema.

10:36

>> Pero esto es nuevo, ¿eh? Esto es nuevo.

10:38

Esto antes no estaba, o sea, antes

10:40

estaba ahí siempre preparado, ya

10:41

comiéndose todos los recursos de tu

10:43

máquina. ballena. Ya lo podía

10:45

haber puesto esto antes.

10:46

ballena. Así están de gorditas.

10:48

Pero sí, si te fijas aquí en la parte

10:49

inferior aparece que ese resource a mode

10:52

y es lo puedes deshabilitar si quieres,

10:54

pero justamente es para que no se coma

10:57

todos los recursos si realmente no los

10:58

estás utilizando, ¿no? Con lo cual pues

11:00

en ese sentido super bien.

11:01

>> Buo,

11:02

>> ¿vale? Imaginaros, ya tengo instalado

11:03

Docker Desktop, estupendo, maravilloso

11:05

en mi Windows, en mi Linux y en mi Mac.

11:07

¿Y ahora qué hago con esto? Lo primero

11:10

por lo que empiezas siempre es, vale,

11:11

vamos a utilizar una imagen que ya esté

11:13

construida, porque yo para poder

11:14

ejecutar un contenedor, lo primero que

11:16

necesito tener es una imagen, una

11:17

plantilla como si fuera una plantilla de

11:19

una máquina virtual en pequeñito donde

11:22

va a tener pues todo lo que necesita

11:23

para ejecutar lo que yo necesite

11:25

ejecutar. ¿Y qué puedo ejecutar? Pues a

11:27

día de hoy prácticamente cualquier cosa.

11:31

La forma más sencilla de saber todo lo

11:33

que hay es ir a día de hoy, que esto

11:34

antes tampoco estaba, a DockerHub, que

11:37

ahora lo han integrado como parte de

11:38

Docker Dexto. Y aquí, como veis, hay una

11:41

sección específica de, vamos a ver si lo

11:43

puedo hacer un poquito más grande sin

11:45

ponerme en el modo este ten, que no

11:48

quiero zen. Vale, aquí, como veis, pues

11:50

tengo incluso una sección ya para

11:51

empezar a hablar de machine learning y

11:53

inteligencia artificial. Luego tengo

11:55

pues cuáles son eh las bases de datos

11:58

más descargadas o temas de

11:59

monitorización, herramientas para el

12:01

desarrollador. Y aquí en realidad es

12:03

cierto que tiene un poco el look

12:05

andfield que tiene la web, pero si nos

12:07

vamos rápidamente a la web, vamos a

12:10

hacerlo

12:12

aquí, ¿vale? Aquí vais a ver que si yo

12:15

voy a hub.docker.com,

12:18

Pues aquí tenemos una web que es mucho

12:20

más rica, que tiene un montón de

12:21

categorías y aquí nos podemos hacer un

12:23

poquito una idea de todo lo que podemos

12:25

eh descargar o todo lo que podemos

12:27

utilizar para crear contenedores, ¿no?

12:29

Así que vamos a empezar por el principio

12:31

y vamos a ejecutar nuestro primer

12:32

contenedor. Y por ahora vamos a seguir

12:35

utilizando Docker Desktop, pues para

12:38

poder ejecutarlos porque a día de hoy es

12:39

que ya está todo como autocenido, con lo

12:41

cual aquí tengo un terminal integrado

12:44

donde yo puedo empezar a trabajar y yo

12:46

ya no tengo que irme a ningún sitio.

12:47

>> Ostras, una cosa que antes nos daba

12:49

mucho miedo, Gisela, es que Docker, pues

12:52

mucha gente decía, "Ah, es que tienes

12:53

que utilizar la línea de comandos y

12:56

tienes que instalarte pues la línea de

12:57

comandos de Docker, Ducker Pool, Docker

12:59

Pool, todo esto, ¿no? levantar y veo con

13:03

Docker Desktop ya no es no sería tan

13:05

necesario para que la gente no tenga

13:07

miedo y sea mucho más fácil o aún así

13:09

recomiendas o vamos a ver terminal.

13:13

>> Vamos a ver, bueno, vamos a cerrar el

13:15

terminal mejor

13:16

>> para no asustar.

13:17

>> Vamos a Docker sí. ¿Por qué he ido

13:19

directamente al terminal? Porque aunque

13:20

bien es cierto que a través de este

13:21

Dockerhub podemos buscar cualquier

13:23

imagen y decirle ejecútala,

13:26

>> pues va a funcionar. La realidad es que

13:27

el día de mañana si terminas trabajando

13:29

con contenedores es raro que vayas a

13:32

crear un contenedor desde aquí porque es

13:34

verdad que te da muy poquitas opciones,

13:35

pero vamos a hacerlo de esa de esa forma

13:37

para que también lo veáis, aunque no

13:39

vais a ver realmente de primeras cuál es

13:41

el comando, pero lo vamos a ver

13:42

justamente después, ¿no? Entonces,

13:43

imaginaros que digo, "Vale, me voy a eh

13:46

crear un servidor web, ¿vale? Nada raro,

13:49

vamos a buscar por Enginex. Y aquí, como

13:51

veis, me aparecen de Ginex pues unas

13:53

cuantas imágenes, ¿no? Pero me voy a

13:55

fiar por las más descargadas, ¿no? Las

13:57

que tiene más de un billón descargada,

13:59

¿no? Como puede ser este en Ginex. Y

14:01

cuando entro aquí, pues voy a ver un

14:02

montón de información que de primeras no

14:04

tengo ni idea de qué de qué es, pero

14:06

bueno, pues más adelante cuando ya

14:08

empiezas a conocer un poquito cómo

14:09

funciona esto de las imágenes, pues y

14:12

además luego después veremos, pues vamos

14:13

a ver qué trata pues por ejemplo todos

14:15

estos tags, que es un Docker F,

14:18

etcétera, etcétera, ¿no? Pero si es una

14:19

imagen oficial, como es este caso, que

14:22

lo pone justamente en la parte superior,

14:24

porque en Dockerhub y en otros sitios

14:26

cualquier pata puede subir

14:27

cualquier imagen con así que cuidadito

14:29

con lo que descargamos.

14:31

cuando es una imagen oficial o está

14:33

sponsorizada por Docker, pues va a tener

14:35

una documentación pues bastante rica que

14:37

te va a dar información de cómo funciona

14:39

esto, ¿no?

14:41

Si no quiero tocar ni un solo comando y

14:43

decir, "Vale, yo quiero un enginex a

14:45

funcionar", podría hacer clic en este

14:47

botón de run que tengo en la parte

14:48

superior. Esto me va a abrir una

14:51

ventanita donde le voy a poder bautizar

14:53

mi contenedor cuando se descargue la

14:55

imagen, que aquí, como veis en la parte

14:57

inferior dice que se está haciendo un

14:58

pully. Esto básicamente lo que está

14:59

haciendo es ir a Dockerhub, se está

15:01

descargando esta imagen, la tiene que

15:03

tener en la máquina local para poder

15:05

ejecutar un contenedor y en el momento

15:07

que ya la tiene dice, "Vale, dime el

15:08

nombre del contenedor y dime por qué

15:10

puerto quieres escuchar." No tengo ni

15:13

idea de qué significa todo esto. Voy a

15:15

hacer clic directamente en RAM. Y cuando

15:17

esto ocurre, aquí, como podéis ver, ya

15:20

estoy enganchada directamente a la

15:22

consola o donde se está ejecutando, pues

15:24

en este caso está en Ginex, tengo un

15:26

montón de pestañitas, por supuesto, y si

15:28

me voy a la sección de contenedores,

15:29

aquí vais a ver que ya tengo mi primer

15:31

contenedor ejecutándose desde hace 15

15:33

segundos sin haber tocado ni una sola

15:35

línea. Hm.

15:38

>> Podría acceder a este contenedor de

15:41

alguna forma porque dice, bueno, si es

15:42

un Enginex en algún sitio, o sea, es

15:44

decir, yo lo que esperaría cuando

15:46

empieza a trabajar con Docker es que si

15:48

yo, por ejemplo, ahora me voy al típico

15:51

local host, pues aquí hubiera algo. O un

15:54

local host eh 8080, por ejemplo, pues

15:57

que hubiera, uy, este está cacheado,

15:59

habá algo, pero no lo hay. Vale, pues

16:02

pero la realidad es que así como tal yo

16:04

no puedo acceder a los contenedores

16:07

de esta forma sin hacer más que un

16:10

docker run, ¿no? Como es en este caso

16:11

hacer clic en un ran. ¿Qué es lo que

16:12

tengo que hacer? Pues como realmente

16:14

todos esos contenedores están aislados,

16:17

es decir, no están conectados

16:18

directamente con los puertos que pueda

16:20

tener mi máquina disponibles, etcétera,

16:22

etcétera, lo que tengo que hacer es

16:23

mapearlos para que a través de un

16:25

proceso de lo que se llama Natin, que

16:27

seguramente conoceréis incluso por el

16:28

vuestro router de vuestra casa, vamos a

16:30

poder decirle, "Vale, he creado un

16:32

contenedor, en este caso con Enginex,

16:34

utiliza mi puerto, me lo invento 8080

16:38

para poder acceder al puerto 80 que este

16:40

contenedor tiene a la escucha, ¿no? que

16:42

sería el típico puerto que tendríamos un

16:43

servidor web si no hemos configurado el

16:45

https, ¿no? Por ejemplo. Así que ahora

16:48

que ya sabemos que no podemos entrar

16:50

directamente a este contenedor así lo

16:52

voy a eliminar,

16:54

¿vale? Y vamos a hacerlo de nuevo y

16:58

vamos a buscar por SNGx,

17:01

¿vale? Y vamos a decirle run, pero ahora

17:03

ha sido supera automático porque en el

17:05

momento que tengo descargada la imagen

17:07

ya no le hace falta descargarla de

17:08

nuevo. Y vamos a poner aquí un 8080.

17:11

Vamos a hacer clic en run. Y ahora esto

17:15

es exactamente igual, pero si os fijáis

17:17

en la parte superior aquí me dice que

17:19

tengo un 8080 2.80. Esto lo que

17:22

significa es que de mi máquina local el

17:25

puerto 8080 se ha mapeado al puerto 80

17:28

de este contenedor. Si hago clic

17:29

directamente desde aquí, ahora ya sí

17:33

tengo mi Enginex

17:34

>> eh accesible desde mi máquina. Vale, si

17:38

ya tengo este Enginex, este contenedor

17:41

en concreto accesibles del puerto 8080

17:44

de mi máquina, si yo ahora intento

17:45

crearme otro contenedor que quiera

17:48

exponer algo a través de mi puerto 8080,

17:50

ya no me va a dejar porque en este caso

17:52

pues ya está enganchado a este

17:54

contenedor que me acabo de crear y no lo

17:55

digo, lo hago. Como dice Goyo Jiménez,

17:58

un cómico de aquí de España, le decimos

18:00

que ran y aquí te dice, "No, no, este ya

18:03

está, ya se está utilizando, no lo

18:05

puedes lanzar."

18:07

>> Vale,

18:08

>> esto serían los basic de los basic sin

18:10

utilizar el terminal,

18:11

>> ¿vale? Para recapitular, para la gente

18:13

que le quede clarísimo, un contenedor de

18:16

Docker y para hacer una analogía que

18:17

entiende todo el mundo con GitHub, un

18:19

contenedor de Docker es como un

18:21

repositorio de Gith, pero en vez de

18:22

código fuente, pues ya tiene una

18:24

aplicación, en este caso, pues tiene sus

18:26

dependencias, una aplicación entera

18:27

lista para ejecutar con la configuración

18:29

del sistema base, está todo empaquetado.

18:32

Cuando haces el Docker Pool es como

18:34

cuando haces un git pool es como lo

18:36

mismo, pero ya es una caja preparada

18:38

desde este registro que es el Docker Hub

18:40

que hemos visto, donde tienes un montón

18:42

de cajitas preparadas y lo no necesita

18:44

ni compilar ni configurar nada. Como

18:46

hemos visto para el tema de Enginex no

18:48

ha tenido que compilar nada, sino que ya

18:49

estado todo preparado. Simplemente ha

18:51

ejecutado el contenedor, le ha dicho en

18:52

qué puerto lo tenía que ejecutar y ya

18:54

está. Y lo último que ha mapeado el

18:57

puerto de su máquina con el puerto

19:00

interior que tendría el contenedor,

19:02

porque dentro pues como tiene un sistema

19:03

propio, pues dice mi puerto que es el

19:06

80, lo voy a mapear con el de tu máquina

19:09

que es el 8080. ha hecho como ese ese

19:11

puentecito, ¿no? O sea, que un poco así

19:14

para que la gente rápidamente

19:16

se para que no se nos pierdan y lo

19:17

entiendan perfectamente. Simplificado,

19:19

eh, Gisela lo ha lo ha explicado mucho

19:22

mejor, pero por si alguien ha llegado

19:23

tarde, para que no se pierda nada.

19:26

Bueno, de todas formas, vamos, gracias

19:28

Midu por la por el recap, porque es

19:30

verdad que es mucha información, pero sé

19:32

de sobra que vais a tener este directo

19:34

luego para que lo podáis revisitar y

19:36

además os voy a compartir un repo demos

19:38

que os voy a enseñar hoy, o sea, que no

19:39

os preocupéis porque vais a tener todo

19:41

esto también empaquetado a en este caso

19:43

sí en GitHub para que lo hacéis ese

19:45

Gitol o ese Git Clone, ¿no? Y y a

19:47

funcionar, o sea, que que todo esto lo

19:49

vais a tener para que luego podáis

19:50

cacharrear y lo podáis usar en vuestra

19:51

casa si queréis, ¿no? Y efectivamente,

19:53

como decía Midu, que es super

19:55

importante, es que cada uno de estos

19:56

contenedores, digamos que es como si

19:58

fuera un pequeño ordenador en sí mismo,

20:00

donde tienes, pues en este caso uno, una

20:02

serie de logs, un proceso que se está

20:03

ejecutando, pero si me voy, por ejemplo,

20:05

a la sección de files, es que tiene su

20:07

propio sistema de ficheros y tiene toda

20:09

eh eh la información que nosotros en

20:11

este caso pues es un ejemplo muy básico,

20:14

ahora veremos un poquito más complejo,

20:16

pero aquí, como veis, tengo mi propio

20:17

sistema de ficheros metido dentro de

20:18

este contenedor, el cual puedo alterar,

20:20

puedo añadir nuevos archivos, puedo

20:22

hacer un montón de cosas con ello, ¿no?

20:24

Incluso a día de hoy hay una sección de

20:26

stats para saber cuánto está comiendo

20:28

este contenedor de mi de mi máquina. O

20:30

sea, que brutal. También os digo que

20:32

esta máquina pues tiene bastante chicha,

20:35

entonces con lo cual aunque esté vieja

20:37

tiene unos cuantos gigas de más,

20:38

entonces pues va todo bastante bastante

20:41

guay, ¿no?

20:43

Vale, pues esto sería eh la explicación

20:46

básica. Ahora sí vamos a remangarnos y

20:48

nos vamos a ir al terminal para que

20:50

veáis realmente cómo podemos hacer esto

20:52

mismo superrápido. Y ahora vamos a ver

20:54

más ejemplos porque el tiempo el tiempo

20:57

corre. Tampoco os voy a, pero bueno,

20:59

vamos a intentar ver cositas chulas

21:01

también al final de ella, ¿no? Entonces,

21:04

voy a dejar esta pantalla. A mí me mola

21:05

mogollón hacerlo directamente desde

21:06

aquí, desde terminal porque así puedo

21:08

ver lo que pasa en tiempo real. Si ahora

21:10

vuelvo a abrir el terminal, os voy a

21:12

enseñar los dos ejemplos que he hecho

21:14

utilizando comandos. El primero de

21:16

ellos, no he puesto ningún puerto. Yo

21:19

solamente sé que quiero ejecutar un

21:21

enginex en un contenedor. Así que lo

21:23

único que tengo que hacer para que veáis

21:24

lo sencillo que es docker run y poner

21:28

enginex, el nombre de la imagen que

21:29

quiero utilizar. Y cuando pulse el

21:31

intro, en este caso va a ser superrápido

21:33

porque ya tengo la imagen descargada y

21:35

aquí, como veis, ya tengo ese contenedor

21:38

justamente en la parte superior con un

21:39

nombre gracioso que Docker los bautiza

21:42

como quiere si no le pones nada, ¿no? Y

21:45

pues efectivamente, en este caso, como

21:46

no le he puesto eh qué versión de este

21:49

enginex quiero, pues simplemente pone

21:50

enginex y está, pero es la misma versión

21:52

que la que la de arriba. Pero en este

21:54

caso yo no le he dicho ningún puerto,

21:57

con lo cual si quiero hacer lo mismo que

21:58

hemos hecho al final, es decir, vale,

22:00

quiero un engine, pero quiero poder

22:02

acceder a él. Podría hacer control C.

22:04

Paro. Como veis aquí arriba, este se

22:07

muere, no se para, pero sigue estando

22:09

ahí. Ojo, vamos a limpiar pantalla.

22:12

>> Puedes hacer más grande la letra de la

22:14

terminal. No sé si se podrá.

22:16

>> A ver. Oh, pues sí.

22:17

>> Perfecto.

22:18

>> Así mejor.

22:19

>> Un poquito más si puede ser.

22:21

>> A ver.

22:23

Ay, no me deja más.

22:25

>> Ah, ha dicho este es el límite hasta

22:26

aquí. O sea,

22:31

>> se ha congelado.

22:34

>> Hemos hemos roto Docker. Hemos roto

22:37

Docker. Mira,

22:38

>> hemos roto doer.

22:39

>> No pasa nada, no pasa nada. Si que sí,

22:42

sí, lo hemos dejado tostadísimo.

22:43

>> A ver si vuelve.

22:44

>> No, no creo que vuelva. Muy bien. Pues

22:46

esto, esto es lo que se habla muchas

22:48

veces de Docker.

22:50

Hemos roto Docker. ¿Qué os parece? Eh,

22:53

perdona, eh, la culpa es mía porque ost

22:58

un cachote. Ostras, ahora

22:59

>> se ha vuelto loco. Ha dicho,

23:01

pues ahora te voy a hacer todos los zoom

23:02

de golpe para que veas. Vale, vale, pues

23:04

ya está, ya se ve bien. No toquemos más

23:06

el zoom.

23:08

>> Vale, a ver. Pues mira, se ha vuelto a

23:09

morir.

23:10

>> No, otra vez la madre.

23:12

>> Ahora ya está, ya está. Vale, ya está.

23:14

No hacemos más zoom. Está,

23:15

>> no hacemos más. Vale, bueno, pues os voy

23:18

a enseñar rápidamente, aunque se ve un

23:20

poco regul Bueno, se no se queda

23:22

tostado. Espérate, lo voy a tener que

23:23

bajar.

23:25

>> Ostras, será por culpa del zoom. Está lo

23:28

van a tener que reescribir en Rust, ¿eh?

23:30

El Docker de esto.

23:31

>> Sí, sí, total. Oh, anda, se le está

23:33

yendo la olla. A ver, a ver si ahora a

23:37

ver, escribo.

23:38

>> No, de momento se lo sigue pensando. Ahí

23:40

está. A ver. Eh, vale, parece que ya no

23:42

lo tengos mal.

23:43

>> Vale, parece. Sí,

23:44

>> vale, ya está. Ya vale,

23:45

>> vale, no pasa nada porque ahora en 3

23:47

segundos me voy a ir a Visual Studio

23:48

Code, pero bueno, de momento vamos a

23:50

lanzar un par de comanditos aquí,

23:51

dejamos a Docker de estos que descanse,

23:54

¿vale? Pues lo mismo que habíamos hecho,

23:56

como os decía, pues aquí hemos ejecutado

23:58

ese docen run. Como he hecho un control

24:00

C, pues automáticamente se ha parado ese

24:02

contenedor, lo cual no significa que se

24:03

haya eliminado. Si quisiera eliminarlo,

24:05

pues tendría que hacer un docker eh RM y

24:09

o bien el nombre de este

24:11

contenedor aquí arriba

24:13

>> o incluso pues un ID que le que le

24:15

facilita que te facilita Docker, ¿no?

24:17

Cuando cuando crea un contenedor. Uy,

24:19

pues parece que aún así Bueno, sí va con

24:21

un poco de delay, ¿no? O lo veo solo yo,

24:23

¿no? Va con un poco de delay, yo creo.

24:25

>> Sí, va con un poco de delay. H, qué

24:27

fuerte que se qué fuerte que se rompa

24:30

Docker Desktop solo por hacer zoom, ¿eh?

24:32

O sea, es es que, a ver, tengo que decir

24:34

que Docker Desktop de forma histórica

24:37

siempre ha sido un programa bastante

24:38

pesadito que le ha costado. Sí que ha

24:40

habido bastantes mejoras últimamente,

24:42

pero bueno, todavía todavía le cuesta le

24:44

cuesta lo suyo.

24:45

>> Sí, sí, sí, le cuesta lo suyo. A ver,

24:49

bueno, vamos a hacer un último intento

24:50

más y si no seguimos para adelante que

24:52

que tampoco tampoco pasa nada. A ver si

24:55

puedo.

24:57

Vamos a crear uno nuevo a ver si le

24:58

gusta más

24:59

>> otraot con otra terminal. A lo mejor ha

25:01

sido la terminal que se ha quedado

25:02

tostada.

25:04

>> Dicen, "Docker se queda colgado en

25:05

macos." Dice, eh, ¿qué quedará para mi

25:09

PC de 8 GB del 2015? No, amigo, para tu

25:12

ordenador del 2015 de 8 GB de RAM,

25:15

Docker lo esquiva directamente. No es

25:17

que intenta ejecutarse, es que lo

25:18

esquiva. Ve tu ordenador y se lo salta.

25:21

dice, "No, no, yo esto aquí paso." Eh,

25:23

eh, pues no sé.

25:25

>> Vamos a irnos a Studio Code.

25:27

>> Sí, pues lo hacemos Studio Code que ya

25:29

está. Si no, no sé si intentar cerrar

25:31

del todo Docker y

25:33

>> a ver si vamos a hacer el típico.

25:36

es que le cuesta la terminal,

25:37

¿eh? O sea, que fuerte.

25:38

>> Sí, sí, es que se ha quedado

25:39

tostadísimo. Qué fuerte con el

25:40

>> Claro, nunca había hecho tanto tanto

25:42

tanto zoom. Pero vamos, que esta máquina

25:43

tiene 64 GB de RAM. No, no, no, para

25:46

nada.

25:47

>> Perdón, perdón. Es que es que yo es que

25:51

tengo un historial de romper cosas,

25:52

entonces la gente está haciendo bromas

25:54

con eso de es que el Midu siempre se lo

25:55

carga y es verdad, soy yo. Perdón,

25:58

>> perdón. Eh, pues nada.

26:00

>> Ah, qué mal, no pasa nada.

26:01

>> Eno Ste Code. Dice, "¿Qué requerimientos

26:04

pide?" Yo te los busco mientras eh

26:07

desktop. A ver, normalmente de

26:10

requerimientos no es que haya unos

26:12

requerimientos muy bestias, el problema

26:14

es que te funcione bien. Ese es el tema.

26:16

Mira, sistema de requerimientos te dice

26:18

aquí, bueno, aparte que tienes que tener

26:20

Windows 11, en el caso Windows 11 de 64

26:22

bits, Windows 10 dice como prerequisitos

26:26

4 GB de memoria RAM, 64 bits, o sea,

26:29

claro, normal, pero nada. ¿Y qué?

26:31

¿Funciona ya?

26:32

>> Ahora parece que sí.

26:33

>> Sí, vale, pues ya está. Vamos. Sí,

26:35

perfecto, perfecto. No hagamos zoom, no

26:37

hagamos nada.

26:38

>> Vale, no hagamos zoom. O sea, que ya

26:39

sabéis, no se puede hacer zoom que esto

26:41

se va todo a a tomar vientos. Bueno,

26:44

pues nada, solo un comando más docker

26:46

run para poder ejecutar enginex tal cual

26:49

sin nada más. Y si quisiera, por

26:51

ejemplo, definir pues qué puerto quiero

26:53

poner a la escucha, vamos a elegir otro

26:55

para que veáis que esto no es cartón

26:57

piedra. Pues lo único que tendríamos que

26:58

hacer sería menos publish o menos P,

27:02

¿vale?, que sería la forma más más

27:03

facilota y luego pues decirle, "Vale,

27:05

pues puerto 90 y luego pues el puerto

27:08

80." ¿Por qué sé que es el puerto 80?

27:09

Bueno, en este caso no es muy complicado

27:11

de averiguar porque al final como es un

27:13

servidor web y no tengo configurado ni

27:14

certificados ni nada, pues asumo que es

27:16

el puerto 80 por el que se está

27:17

escuchando. Pero todo esto cuando

27:19

hacemos una imagen de Docker, que ahora

27:21

veremos cómo cómo se hace esta parte,

27:23

pues este tipo de cosas vienen dadas,

27:25

¿no? Como parte de esa información y por

27:27

eso incluso cuando Docker Desktop se

27:29

descarga una imagen y le hace ese RAN,

27:31

pues ya sabe cuáles son los puertos a

27:33

los que se tiene que mapear, ¿no? Porque

27:34

esta es metadata de información que tú

27:36

vas a incluir como parte de tus

27:37

imágenes, ¿no? Y en este caso, pues

27:39

nada, podría poner enginex el nombre de

27:42

la imagen siempre al final y cuando

27:44

pulse, pues como veis aquí rápidamente

27:46

ya tengo este nuevo contenedor

27:47

ejecutándose y ahora pues en el puerto

27:49

9090 que lo tengo aquí.

27:52

Perfecto.

27:53

>> Sin tener que haber configurado un

27:55

enginex, que normalmente hay gente que

27:57

que ha perdido la cabeza intentándolo.

28:00

Eso es que ahora justamente vamos a

28:03

ailar también con ese escenario, ¿no? Yo

28:05

como desarrollador dice, "Vale, esto

28:06

está muy bien, pero este Engineés está

28:07

pelado, tiene como el típico Hello

28:09

Worldinex, pero a mí realmente esto pues

28:11

valerme valerme en el día a día no me

28:13

vale de mucho, ¿no? Así que lo que vamos

28:15

a hacer es bueno, pues echar un vistazo

28:18

a un repo que he preparado para

28:20

vosotros. donde vamos a ver aquí no

28:23

debería de tener problemas para hacer

28:25

zoom, así que

28:25

>> sí tenía miedo a preguntártelo, pero si

28:27

puedes hacer zoom

28:30

>> de aquí está bien o uy

28:32

>> así está perfecto. Ahí el otro, el otro

28:35

ahí ya, ahí perfecto.

28:36

>> Ahí dale. Vale, pues aquí esto va a ser

28:38

para vosotros, ¿eh? De hecho se llama.

28:41

>> No me lo puedo creer. Gisela, te hemos

28:43

dejado de escuchar.

28:45

>> No vengas.

28:46

>> Te hemos dejado de escuchar y además, de

28:48

verdad, no sé, no me lo puedo creer. El

28:50

zoom está maldito.

28:52

>> De verdad, te hemos dejado escuchar de

28:54

repente. O sea, se te ha se te ha ido la

28:56

voz. Soy yo, ¿no? Hola. Hola.

28:59

>> Sí, se escucha. A ver, habla un momento.

29:01

>> Sí, sí se escucha. Hola. Ojo, cantar.

29:03

Dice, "Yo la escucho." No, sí se

29:05

escucha. pues he sido yo que te

29:07

he dejado escuchar, pero además es en

29:08

Streamyard. Vale, vale. Pues,

29:10

qué raro soy yo. Oye, pero es raro

29:13

porque Streamyard, además no aparece. No

29:16

aparece. Vale, vale, pues voy a

29:17

refrescar a ver si te escucho. Vale. Qué

29:20

raro. Ostras. Vale, pues todo el mundo

29:22

te escucha menos yo. Superaro. Vale, ha

29:24

sido el zoom maldito. Ahora vengo a ver.

29:27

Venga,

29:31

mientras tanto os bailo un poco si

29:33

queréis hasta que vuelva Midu. Pero

29:37

bueno, lo que os estaba diciendo, pues

29:38

mientras que esperamos a que refresque,

29:40

¿no? Eh, este repo va a ser para

29:42

vosotros y para vosotras. Lo voy a

29:44

compartir en mi cuenta de GitHub. Como

29:45

veis, se llama Midblemon Code. Todavía

29:47

no podéis acceder a él para no hacer

29:49

spoiler. Hola. Ahora sí. No te preocupes

29:52

que lo arreglo. Vale, ahora sí que ahora

29:55

sí que te escucho. Ahora ya sí que te

29:56

escucho.

29:57

>> Vale, ya te escucho.

29:58

>> Oye, superraro, ¿eh? Porque encima en

30:00

Streamyard sale cuando la gente está

30:02

hablando y tal y había desaparecido tu

30:04

barra verde. Ahora ya te escucho. Nada,

30:06

perdón, eh, a todo el mundo.

30:07

>> Pas de todo, ¿no?

30:09

>> Está pasando de todo. Es increíble.

30:10

>> Sí, sí. Vale, pues venga, dale, galleta.

30:12

Perdón.

30:12

>> Todo se puede solucionar. Nada, nada.

30:14

Solo estaba comentando que este repo es

30:16

para todos los que nos están escuchando,

30:18

para los que vean luego en diferido, o

30:19

sea, que lo voy a compartir en mi cuenta

30:21

de GitHub para que lo tengáis. Se llama

30:22

Midudep eh guion lemon Code y bueno,

30:25

pues vamos a ver todas las demos, las

30:26

que os he contado y luego también las

30:28

que vamos a ver ahora. Espero que nos dé

30:30

tiempo a todas ellas, ¿no? Entonces,

30:33

bueno, ya hemos visto cómo poder

30:35

ejecutar un primer contenedor con

30:36

Enginex y también cómo exponer un puerto

30:39

para poder acceder al mismo, pero que la

30:40

realidad es que cuando yo empecé a

30:42

trabajar con todo esto de los

30:43

contenedores era, vale, pero mi

30:44

aplicación qué, ¿no? Y cómo hago que mi

30:47

aplicación realmente esté dentro de ese

30:48

contenedor, porque un engines así como

30:50

tal, eh, pues no me sirve de mucho, ¿no?

30:53

Entonces, lo que he hecho ha sido

30:54

crearme pues una pequeña aplicación con

30:56

TypeScript, que básicamente es una API,

30:59

no tiene mucho rollo, pero para es

31:01

suficientemente buena para que veáis que

31:03

tiene, bueno, pues que tiene cositas,

31:05

tiene controladores, tiene un

31:06

Middleware, tiene modelos, se conecta

31:08

con un es decir, que tiene

31:09

cositas que no vamos a entrar en

31:11

detalles en cómo está hecha la

31:12

aplicación porque no es lo importante,

31:14

pero que veáis que bueno pues que en

31:15

este caso va a ser pues una API que se

31:17

conecta a una base de datos, que sería

31:19

un caso pues bastante normal, ¿no?

31:22

Entonces, lo primero que yo haría y

31:25

siempre recomiendo a los alumnos de

31:27

Lemon es pues en primer lugar probar que

31:29

esto funciona en local, porque si no

31:31

funciona ni siquiera sin conerizar, te

31:33

puedes volver loco o loca intentando

31:35

contenerizar algo que ya de primeras

31:37

pues no funciona, ¿no? Entonces para

31:40

ello lo que vamos a hacer es pues de una

31:42

forma super rápida pues ejecutar pues el

31:45

típico npm install, ¿no?, que sería lo

31:47

que yo haría cuando empiezo eh con una

31:49

aplicación, ¿no?, que me he descargado

31:51

si es de otros o cuando estoy instalando

31:53

cositas o ya tengo ese package jason y

31:55

luego pues un MP en Room Deadp, ¿no? En

31:57

este caso que tengo pues un NOEMON que

31:59

me va a ayudar pues también a que mi

32:01

desarrollo sea pues un poquito más

32:02

sencillo, no que estar parándolo y

32:04

ejecutándolo y tal y oh, no funciona,

32:07

caso normal. ¿Por qué? porque está

32:09

esperando un y en este caso pues

32:11

todavía no tenemos un O sea, que

32:13

tendríamos dos opciones. O me instala lo

32:15

en mi máquina local con todo lo

32:17

que se conlleva, que a lo mejor yo no

32:18

tengo ni idea, o lo que puedo hacer pues

32:21

es montar un dentro de Docker.

32:23

Ahora que ya sabemos Docker y sabemos

32:24

cómo utilizar las imágenes, pues hay una

32:26

imagen, vamos a limpiar pantalla para

32:28

que se vea más claro, que me permite

32:30

tener pues un en mi máquina local,

32:32

¿no? Para que no perdamos mucho más

32:35

tiempo, os voy a pegar el comandito que

32:38

nos haría falta para ejecutar este

32:40

módulo y ahora os lo explico. Y aquí

32:42

pues es un poquito más evolucionado de

32:45

lo que hemos hecho hasta ahora, pero lo

32:46

voy a explicar rápidamente. Docker run,

32:49

exactamente igual que hemos hecho con

32:51

ese enginex. En este caso sí que le voy

32:53

a poner un nombre, que es este eh

32:56

y le voy a decir que voy a exponer por

32:57

el puerto 2707, que es el puerto por el

32:59

que normalmente pues un eh está

33:02

escuchando, ¿no? Tanto eh internamente

33:04

como el que quiero exponer. Y luego,

33:06

bueno, pues aquí una user y una

33:08

password, no os preocupéis que esto al

33:09

final es algo que se va a ejecutar en mi

33:10

máquina local y ya está. Y este - D

33:13

básicamente lo que me va a permitir es

33:15

que cuando yo ejecute este contenedor no

33:17

se quede mi terminal enganchado a loss

33:20

del contenedor, sino que vuelva a

33:21

recuperar ese terminal para seguir

33:23

escribiendo comandos, ¿no? Para no tener

33:24

que estar abriendo un terminal cada vez

33:26

que ejecuto un contenedor. Y es el

33:29

nombre de la imagen. Así que si pulso el

33:31

intro, lo que me devuelve es un ID. Y

33:34

aquí esto espero que no se rompa. Eh,

33:37

pues aquí vais a ver que tengo ese

33:39

ejecutándose sin problemas. puesto por

33:42

el puerto 27017

33:44

y de hecho un comando más, si quiero ver

33:47

esto desde el terminal, pues haciendo un

33:48

doc podría ver todos los que se están

33:51

ejecutando hasta ahora, ¿no? Que ahora

33:53

mismo tengo un par de ellos y si

33:54

quisiera ver todos incluso los que están

33:56

parados pues poniendo un menos a que es

33:58

de all pues vería todo, que ahora como

34:00

bueno, como está tan grande pues se ve

34:02

ahí todo ahí un poco raro, pero para que

34:04

los tengáis también, ¿no? Vale, pues

34:07

ahora en teoría ya tengo un

34:08

ejecutándose, así que podría hacer otra

34:10

vez ese empieo

34:17

conerizado, pero tenemos un con

34:18

lo cual ya puedo empezar a utilizar mi

34:20

aplicación que yo estoy desarrollando

34:22

con dependencias ahora ya conerizadas

34:25

porque tengo imágenes que me lo van a

34:27

permitir, ¿no? Y en este caso eh, como

34:29

os decía, es una API, no tiene mucho

34:32

rollo, ¿vale? Y ahora mismo pues está

34:35

pelada, es decir, no tiene absolutamente

34:37

nada. Según API Heroes, pues aquí no hay

34:40

nada, pero si queréis rellenarla con

34:42

cositas, yo en mi caso me encanta

34:44

siempre hacer demos con héroes, pues

34:47

todo va de héroes. Así que aquí os he

34:49

dejado este archivo que lo que hace es

34:51

utilizar una extensión de Visual Studio

34:53

Code que se llama Rescen, que te permite

34:55

eh guardar como código peticiones HTTP,

34:58

con lo cual pues mola porque le vas

34:59

haciendo clic aquí en Sen Request y

35:01

directamente pues te permite hacer las

35:03

peticiones sin tener que ir a hacer un

35:05

cour ni cosas un poquito más elaboradas

35:07

y por ejemplo pues añadir un Spiderman,

35:10

eh añadir un Batman,

35:12

¿vale? Añadir más cositas, pues un Iron

35:15

Man, ¿no? Lo que queramos. Y cuando

35:17

vamos otra vez, por ejemplo, al

35:18

navegador, que se ve un poquito más

35:20

claro, vamos a hacerlo.

35:23

A ver, ta.

35:27

Pues aquí veis que está todo sin

35:28

problemas funcionando. Y esto realmente

35:31

se está guardando en una base de datos,

35:33

en este caso que está en un

35:34

contenedor de Docker. Es decir, que yo

35:36

mañana tengo que dejar este proyecto o

35:38

no estoy trabajando en eso porque ya no

35:40

me interesa nada más. Simplemente con

35:42

eliminar este contenedor de tengo

35:44

mi máquina limpia, que es lo que a mí

35:46

más me encanta de todo esto, ya no que

35:48

todo funcione aquí o allá, sino que

35:50

cuando yo cierre el chiringo, pues todo

35:53

esto se elimina y mi máquina sigue

35:55

limpia y no tengo ni un ni un SQL

35:57

Server, ni nada de nada, porque también

35:59

tenemos SQL Server si tenemos otro tipo

36:00

de bases de datos, es decir, que la que

36:02

necesites seguramente vas a tener una

36:05

imagen para ello. Vale, pues ya funciona

36:08

mi aplicación,

36:10

así que lo siguiente que voy a hacer es

36:14

pues contenerizarla. ¿Y cómo conerizo

36:17

esto? Pues para ello vamos a parar ahora

36:19

la ejecución. Lo que tenemos que hacer

36:22

es crear un archivito que se llama

36:24

Docker File, que es este que veis aquí,

36:26

que yo siempre digo que esto es la

36:27

receta que yo necesito para describir

36:30

cómo qué es lo que necesita mi

36:32

aplicación y cuáles son los pasos que

36:34

tengo que seguir para que la misma pues

36:36

se compile en el caso de que tenga que

36:37

compilar, que instale los módulos de

36:39

Node si los tiene que instalar. Es

36:41

decir, como si fuera la típica

36:42

documentación que le pasaríamos al

36:44

departamento de IT con todos los pasos

36:46

que hay que seguir para configurar mi

36:47

aplicación y el entorno que la rodea,

36:50

pues eso es un Docker file, ¿no?

36:51

Entonces, como veis, pues aquí además os

36:53

he dejado comentarios, pues para que

36:54

veáis que en este caso lo primero que

36:56

siempre se define es la imagen base que

36:58

voy a utilizar, que en este caso pues va

37:01

a ser una imagen con una distribución de

37:03

Linux que se llama el Pine, que es una

37:04

distribución super pequeñita que tiene

37:06

lo mínimo indispensable para que la

37:08

imagen sea pequeña y por lo tanto el

37:09

contenedor sea muy rápido y que ya tiene

37:11

con Node instalado, ¿vale? Así y con

37:14

Node 20 en este caso no, así ya me

37:15

aseguro que no tengo que instalar Node

37:17

ya utilizando esa imagen ya tengo todo

37:18

lo que necesito para esta aplicación en

37:20

concreto. Le digo dónde voy a guardar la

37:22

imagen, copio el pack Jason, ejecuto

37:25

pues ese npm install o C, en este caso

37:28

diciéndole que solo quiero las

37:30

dependencias para producción. Copio el

37:32

resto del contenido, puedo crear incluso

37:35

un usuario en concreto porque si no lo

37:36

hacemos se ejecutaría como root si by

37:39

default y eso no queremos, no es buena

37:41

práctica. Por eso tenemos aquí estas

37:43

líneas. Y luego pues simplemente

37:45

asignamos el usuario y aquí le decimos

37:48

pues cuáles son los puertos que se

37:49

exponen de este contenedor cuando creas

37:51

un contenedor utilizando esta imagen.

37:53

Este es el motivo por el cual sabemos

37:55

cuáles son los puertos que una imagen eh

37:58

está exponiendo hacia fuera y a los

37:59

cuales tú puedes mapear, ¿no? Y luego ya

38:02

por último, a través de esta instrucción

38:04

de aquí le decimos, "Oye, para cada vez

38:06

que crees un contenedor con esta imagen,

38:08

este es el comando que tienes que

38:09

ejecutar en el momento que este

38:12

contenedor se haya lanzado." Y en este

38:14

caso, pues el típico empie

38:17

dejar a mi API a la espera de que le

38:19

lleguen peticiones.

38:22

>> ¿Cómo hago? ¿Qué hago con esto ahora?

38:25

Sí, porque sí porque esto está muy bien,

38:27

que da las instrucciones, pero vale, las

38:29

instrucciones y además que están

38:31

comentadas que se agradece, pero claro,

38:35

ahora este manual de instrucciones que

38:37

parece una receta de cocina,

38:39

>> ¿cómo lo usamos?

38:42

>> Claro, ¿qué hacemos con esto? Pues

38:44

vamos. Bueno, podríamos hacer un poco de

38:46

trampa, pero quiero que os quedéis con

38:48

los basics. Luego para esto es como

38:50

cuando yo aprendí a conducir que iba con

38:51

el coche de marchas y luego ya eh

38:53

termina con Marbella y luego terminas

38:55

con un coche más guay. Pues aquí hay que

38:57

empezar un poco y ya no te preocupar, ya

39:00

no te preocupas de las marchas,

39:02

>> ¿vale? Porque yo podría decir aquí con

39:03

el botón derecho build image y ya está.

39:06

Pero como lo quiero enseñar guay,

39:10

>> vamos a abrir otra vez el terminal

39:12

>> para no hacer solo el clic, luego sepáis

39:13

que tenéis ahí el click, pero también

39:16

vais a ver que es sers sencillo estando

39:18

en el directorio donde se encuentra la

39:19

aplicación y en este caso el Docker

39:21

File, si ahora lo único que tendría que

39:23

hacer sería Docker Bill menos Tag o men

39:28

t, decirle qué nombre le quiero dar a la

39:30

imagen que voy a crear, que en este caso

39:31

va a ser Heroes Appi, luego decirle cuál

39:35

es el contexto que se va a utilizar para

39:37

crear esta imagen, que en este caso es

39:39

un punto y ahora os explico por qué. Y

39:41

básicamente esto lo que significa, y

39:44

aquí, como veis, ya se está haciendo el

39:45

proceso de creación de esta imagen que

39:46

ha sido superrápido. Lo que le estoy

39:48

diciendo es, oye, estoy en el directorio

39:50

app, quiero crear una imagen con el

39:52

Docker File que tiene ese nombre que se

39:54

encuentra en este directorio. Utiliza

39:56

como contexto, como punto de referencia

39:58

en el sitio donde me encuentro, pues

39:59

para que cuando le diga que quiero

40:00

copiar archivos, no te vayas a otro

40:02

sitio, que es que están en el mismo

40:04

sitio donde me encuentro. Pero podría

40:05

darse el caso en el que los archivos que

40:08

tenemos que recuperar pues estén en otro

40:10

directorio o que esté invocando este

40:12

Dockerville desde otro sitio. Entonces

40:14

el comando sería un poquito más

40:15

complejo, ¿no? Pero la forma sencilla

40:17

simplemente es donde tengo todos los

40:19

chismes, ahí me planto, le digo

40:21

Dockerville, le digo cuál es el nombre

40:23

de la imagen y como veis en este caso

40:25

superrápido ya la ha generado sin ningún

40:28

problema. O sea, ha detectado

40:29

automáticamente el Docker file. Ha

40:32

dicho, "Vale, ya he encontrado el Docker

40:33

file." No es que le tengas que pasar el

40:34

Docker file, sino que ha dicho, "Ah,

40:35

está aquí." Perfecto.

40:36

>> Claro, en este caso, porque estoy

40:38

siguiendo la convención.

40:39

Si quisiera llamarlo dockerfile.d,

40:43

dockerfile.pro, Dockerfile, lo que

40:45

quiera, porque le quiero poner otro

40:47

nombre, entonces sí que podría

40:48

utilizando el menos f indicarle pues

40:50

cuál es el nombre que le he dado fuera

40:52

de la convención, pero si lo hago todo

40:54

según dice el libro, pues simplemente

40:56

haciendo esto yo ya lo tendría listo,

40:58

¿no?

40:59

>> Vale. Y entonces ahora cualquier persona

41:02

esto, claro, esto ahora has creado este

41:04

paquete que es como el paquete que antes

41:06

has utilizado de Enginex y otra persona

41:09

podría descargarse este paquete,

41:11

ejecutarlo en su máquina y ya está y

41:14

tendría todo el código y tal como dentro

41:16

de este paquete y debería funcionarle,

41:18

pero claro, si tenías la dependencia de

41:21

>> Claro, aquí pasan varias cosas. Por un

41:25

lado, eh, esta imagen todavía. Uy, va,

41:27

que me he ido para arriba, ¿no? Que para

41:29

arriba, abajo. A ver, aquí vamos a

41:31

limpiar pantalla. O sea, esta imagen

41:32

ahora mismo, si yo hago un docker

41:34

images, que sería lo mismo que irnos a

41:35

ese docker desktop que se queda tostado

41:37

y a la sección de imágenes, aquí voy a

41:39

ver todas las imágenes que yo ahora

41:40

mismo tengo descargadas. Y la última que

41:43

tengo es este Giros API, que es la que

41:45

acabo de crear, que pone que hace 4

41:47

horas porque realmente pues he hecho

41:49

unas cuantas pruebecillas antes de

41:51

arrancar, pero luego también porque si

41:52

os fijáis muchas de las cosas que le

41:54

pido en esta receta están cacheadas,

41:58

>> ¿vale? ¿Por qué? porque no he cambiado

41:59

el contenido en las últimas 4 horas. Y

42:01

entonces incluso intenta este Docker de

42:05

esto o este Docker Bill en este caso eh

42:07

utilizar o reutilizar aquellas capas que

42:09

no han cambiado para que este proceso

42:10

sea cada vez más rápido y que no se

42:12

tueste la máquina supuestamente, que no

42:14

consuma tantos recursos. Es decir, está

42:16

pensado para que optimice lo más que

42:19

pueda todo el trabajo que se ha hecho

42:21

anteriormente. Es más, te diría que si

42:23

yo tengo una imagen, como en este caso

42:24

la de la API, y mañana tengo otra de

42:27

otra API y utilizamos capas que son

42:29

iguales, vamos a poder utilizar o

42:31

reutilizar esas capas entre imágenes. De

42:34

tal forma que si yo hiciera una

42:35

aplicación superb y todos estuviéramos

42:38

de acuerdo y habláramos entre nosotros y

42:40

demás, pues imaginaros que todos

42:41

utilizamos como imagen base esta que

42:44

hemos dicho aquí arriba y mi aplicación,

42:46

todos los contenedores o todos los

42:48

microservicios utilizan la misma imagen,

42:50

pues ya ver parte del trabajo que se va

42:52

a ahorrar porque como ya la ha

42:53

descargado una vez o la ha generado una

42:55

vez pues va a ser capaz de reutilizarla

42:58

pues con todos los contenedores que

42:59

hagan uso de de ciertas partes de de

43:03

esta imagen, ¿no?

43:05

>> Porque, bueno, no lo he contado, pero

43:06

cada vez que creamos una imagen, esta

43:08

imagen se compone de lo que se llaman

43:09

capas y estas capas lo que nos van a

43:11

permitir es que si no hay cambios se

43:13

puedan cachear, ¿no? Y con eso

43:15

conseguimos pues que todo este proceso

43:16

sea mucho más rápido, que descargarla

43:19

sea mucho más rápido, etcétera, ¿no?

43:20

Todo esto se ve en el bootcamp con mucho

43:22

más tiempo, con ese mes de tiempo, ¿no?

43:24

Pero bueno, por condensar un poco, ¿no?

43:27

Y luego la segunda pregunta que

43:28

comentabas, Midu, en este caso, mi

43:30

imagen todavía está en local,

43:32

>> es decir, yo la puedo usar y ahora vamos

43:34

a ver cómo ejecutar un contenedor con

43:36

esta nueva imagen que he creado, pero la

43:38

realidad es que si yo quiero compartirla

43:39

contigo, tendría que subirla pues a

43:41

Dockerhub, que es donde hemos visto

43:43

anteriormente que tenemos un montón de

43:44

imágenes, que comentaba que cualquiera

43:46

puede subir una imagen ahí o incluso

43:49

podemos subirlo a un repositorio de

43:50

GitHub, ¿no? A día de hoy, GitHub tiene

43:53

una parte que se llama GitHub packages,

43:55

que soporta imágenes de Docker, así que

43:57

podría tener mi imagen como parte del

43:58

repositorio que a su vez contiene el

44:00

código que ha generado esa imagen, ¿no?

44:02

O sea, que bueno, eso

44:03

>> eh brutal también, ¿no?

44:06

>> Vale, pues que me como el tiempo. Vamos

44:08

a crear un contenedor con este Hero API

44:11

y vamos a ver qué pasa, que tampoco va a

44:12

funcionar de primeras, pero vamos a

44:14

hacer un docker run y vamos a decirle

44:16

que lo vamos a llamar API y vamos a

44:19

decirlo que vamos a exponerlo por el

44:20

puerto eh 3030, por ejemplo, a mapearlo

44:26

al puerto 3000, que es donde está

44:27

escuchando mi API. Y vamos a decirle que

44:29

vamos a utilizar ese Heroes API, ¿vale?

44:31

Si no me he equivocado,

44:33

pues aquí está intentando ejecutarse,

44:37

pero que todavía pues va a dejar de

44:38

funcionar.

44:39

>> ¿O por qué? Eh, ¿qué ha pasado?

44:42

>> Porque está está buscando ese en

44:44

local host, pero realmente dentro de ese

44:47

contenedor ese no existe. Ya no

44:49

estoy en mi máquina local, ya estoy

44:50

dentro. Entonces, lo que podemos hacer

44:53

es conectar los contenedores entre sí,

44:56

¿no? De tal forma que yo pueda decirle,

44:58

"Oye, hay la forma fácil y la forma

45:01

menos fácil." La forma fácil es haciendo

45:04

lo que se llama un link, que básicamente

45:06

cuando yo cre este contenedor lo pego

45:07

para no perder otra vez el tiempo

45:09

escribiendo lo mismo. En este caso vamos

45:11

a utilizar el puerto 3000. Podemos hacer

45:13

un docker run y le podemos decir, "Oye,

45:15

que sepas que este contenedor que voy a

45:17

crear se puede ver con otro contenedor

45:20

que se llama que ya creaste

45:22

anteriormente." Y aquí te paso incluso

45:24

una variable de entorno para que sepas

45:26

que este cuando vayas a buscarlo

45:28

en vez de ir a local hostes que ir a un

45:32

contenedor o a un sitio que se llama

45:34

porque una de las cosas chulas que

45:36

tiene Docker es que dentro del propio

45:38

Docker Engine tenemos un servidor de

45:40

DNS. Es decir, no tendría que aprenderme

45:42

la IP del Podría utilizar

45:44

directamente el nombre que le he dado a

45:46

mi contenedor

45:48

para poder referirme a él y en vez de

45:50

utilizar local host el el nombre la IP

45:54

interna que le haya dado directamente a

45:55

este pues puedo utilizar

45:56

directamente su nombre y ya está. Por

45:58

eso está la gracia de poder bautizar a

46:00

los contenedores como uno quiera, porque

46:02

si son estos nombres raros, si te

46:03

quieres crear un script, pues vas a

46:05

tener que ir cambiándolo cada vez.

46:06

Entonces no no tiene mucho sentido, ¿no?

46:08

Pero bueno, digo, bueno, pues me quiero

46:10

conectar con este ¿no? Que ya

46:11

tiene algún héroe por ahí enganchado.

46:13

Así que vamos a lanzar ahora este

46:15

comando y si todo va bien, pues como

46:18

veis ahora esta API ya se puede conectar

46:20

con ese que si ahora pues accedo

46:23

así, puerto 3000,

46:26

pues aquí está mi API. Y ahora la prueba

46:28

de fuego.

46:31

Oh, ¿qué pasó? Pues que en algún momento

46:34

lo paré o no lo Ah, no lo cargué. Bueno,

46:36

pues aquí en este caso eh ahora mismo

46:38

está conectado, pero no tiene data.

46:40

Vamos a ver si le metemos algo de

46:42

chicha,

46:43

>> que debe ser que antes, no sé si es que

46:44

me lo he cargado, ahora ya no recuerdo

46:46

con tantas emociones. A ver,

46:49

>> yo no he hecho nada esta vez. No he

46:51

pedido que abra el zoom más, no he hecho

46:53

nada, eh,

46:54

>> creo, creo no hecho nada,

46:55

>> seguro. Vale, vamos a ver que funciona

46:57

la conexión sin problemas. Vale, aquí

47:00

siguen funcionando. A lo mejor me lo he

47:01

cargado y no me he dado cuenta, ¿vale?

47:03

>> Pero bueno, me sirve superb para

47:05

terminar con esta parte y enlazar con la

47:07

última.

47:08

>> Todo esto lo cuento como yo en su

47:10

momento lo pensé en mi cabeza, que no

47:11

tiene por qué ser la forma que lo

47:13

pienses tú, pero bueno, eh, en mi cabeza

47:15

decir, "Vale, ¿y ahora, ¿qué pasa con

47:16

los datos? Me carga este no me lo

47:18

he cargado, ahora mismo no me queda

47:20

claro, pero si yo ahora me cargo este

47:21

y he metido toda esta información,

47:25

eh, ¿qué pasa? que se eh todos los datos

47:27

se van con el contenedor, no tendría

47:29

mucho sentido, ¿no?

47:30

>> Estaba lo estaba preguntando un montón

47:31

de gente en el chat, estaba todo el

47:32

rato, oye, ¿y la persistencia de datos y

47:34

qué pasa con estos datos? Y desaparecen

47:36

los datos. O sea, que mira, perfecto.

47:38

>> Claro, pues justamente, mira, ahora me

47:40

acabo de cargar este aquí.

47:42

Seguramente eh pues si intento volver a

47:46

a ejecutar esta línea aquí me dice, "Oh,

47:47

se ha desconectado de mongo." O sea, que

47:49

bueno, ni no he hecho tan mal el código,

47:51

¿no? para que por lo menos se dé cuenta

47:52

de que se ha desconectado y esto ahora

47:54

mismo ya pues no va a funcionar, no se

47:55

queda ahí va a dar un un error porque

47:58

porque ya no tiene esa conectividad

47:59

porque me lo he cargado, pero si yo

48:00

ahora intento volver a ejecutar ese

48:04

pues efectivamente va a pasar lo

48:06

que probablemente me ha pasado hace unos

48:08

instantes, pues que es que realmente eh

48:11

a ver si lo encuentro aquí, pues este

48:13

en realidad no está persistiendo

48:15

los datos en ningún sitio, con lo cual

48:17

lo que me va a pasar es que

48:22

Cada vez que se borra ese contenedor,

48:24

pues no sabía perder toda la información

48:26

que tenía. A ver si lo encuentro y si no

48:28

aquí. Vale. O sea, que si yo ahora

48:30

vuelvo otra vez a ejecutar esto,

48:31

>> claro, va a estar vacío otra vez. va a

48:33

estar vacío otra vez porque no he

48:35

guardado esto en ningún sitio. Entonces,

48:36

lo que podemos hacer en contenedores y

48:38

en cubernetes y etcétera es utilizar lo

48:41

que se llaman volúmenes, que básicamente

48:44

lo que nos va a permitir es decirle en

48:46

este caso a Docker Engine, que es lo que

48:47

está por debajo de Docker de esto,

48:49

decir, "Vale, todo lo que caiga dentro

48:52

de esta carpeta, dentro del sistema de

48:54

ficheros de ese contenedor, quiero que

48:56

lo guardes en lo que se llama volumen,

48:58

que Docker lo va a gestionar por ti. tú

49:01

no te tienes que preocupar de saber ni

49:02

dónde está ni de dónde deja de estar al

49:04

principio y que si yo, por ejemplo, me

49:07

vuelvo a eliminar este contenedor, pues

49:09

que realmente no se va a perder toda esa

49:11

información, ¿no? Entonces, vamos a

49:13

verlo y para ello, pues simplemente os

49:16

voy a dejar otro comandito donde

49:18

básicamente vamos a hacer el mismo uso

49:20

que hemos hecho de ese pero le

49:22

vamos a añadir un parámetro adicional

49:24

que es este - V que es de volumen. Y

49:27

básicamente lo que le estás diciendo es,

49:29

oye, créame un volumen que se llame

49:30

data y que realmente va a estar

49:33

mapeado, esto va como muy lado a lo que

49:35

veíamos con los puertos, va a estar

49:37

mapeado a un directorio que se llama

49:39

barrata/DB,

49:40

que es donde guarda toda la

49:42

información cuando tú instalas Y

49:44

en este caso en el contenedor, pues

49:46

cuando generas un contenedor, ahí es

49:47

donde va a parar esa información. Así

49:49

que si ahora esto lo ejecuto, tengo que

49:52

eliminar el anterior porque el nombre de

49:54

ya está puesto y vamos a hacer ese

49:57

Docker R-F, que esto no lo hagáis en

50:00

producción, pero es forzar cargarme el

50:02

contenedor.

50:03

>> Sí, RM- Fena, suena peligroso,

50:05

>> suena chungo.

50:06

>> Sí.

50:07

Vale, bueno, lo cargamos y ahora eh si

50:12

me voy otra vez a Docker de esto para

50:13

que también lo veáis, esto se puede ver

50:14

desde Visual Studio Code, se puede ver

50:16

desde un montón de sitios, pero aquí en

50:18

la parte de volúmenes, pues aquí tengo

50:20

este data

50:21

>> que ahora son 0 bytes porque no hemos

50:23

metido absolutamente nada, pero ahora

50:26

cuando limpie pantalla y me cree de

50:28

nuevo mi API,

50:32

vamos a entrar aquí otra vez. Vale, esto

50:34

está vacío

50:35

>> y si hago otra vez este client y bueno,

50:37

pues meto algún héroe,

50:40

eh, vamos a añadir a Wonder Woman, ¿por

50:42

qué no? A Iron Man, etcétera, pues no

50:45

sea, no va a ser información que pese

50:47

mucho, pero toda esta información

50:49

realmente eh está por aquí, ¿no? Y aquí

50:51

no sé si habrá que mira, hombre, pues

50:53

hao batate eh 200 megas ahí,

50:55

>> 200 megas, claro,

50:57

>> para tres héroes.

50:58

>> ¿Qué pasa con Batman? que se ha traído

51:00

todos los gadgets,

51:02

>> ha traído Batmóvil y todo.

51:04

>> Total, total. Ha metido a la familia,

51:08

al Robin, a todo el mundo.

51:10

>> A todo el mundo. Eh, bueno, pues en este

51:14

caso, ¿vale? ¿Y esto de qué me sirve?

51:16

Pues que si yo ahora vuelvo otra vez a

51:18

mi terminal y yo ahora, bueno, pues me

51:21

cargo otra vez ese ese Vamos a

51:23

parar un momento la API y me cargo ese

51:26

con ese - F me vuelvo a cargar ese

51:29

y vuelvo otra vez a a crearlo con es

51:32

pero me lo vuelvo a crear, pero en este

51:33

caso utilizando otra vez ese menos V, es

51:35

decir, oye, me vuelvo a crear ese

51:37

pero quiero utilizar un volumen que si

51:39

no existe me lo creas, pero si existes

51:41

me lo reutilizas. Entonces, en este

51:42

caso, imagínate que este contenedor pues

51:45

se nos ha muerto porque hemos hecho zoom

51:48

en el docker de esto y de repente dice,

51:49

"No, me he cargado todos los héroes."

51:51

Pues con esto simplemente podría volver

51:53

a levantar un contenedor totalmente

51:55

nuevo, pero que está enganchado a ese

51:57

volumen que ya habíamos utilizado con

51:58

otro contenedor, ¿no? Y que cuando yo

52:00

vuelva a crearme mi appi o vuelva a

52:02

ejecutarla en este caso, pues cuando

52:04

vuelva otra vez a refrescar aquí, pues

52:06

como veis todos los héroes siguen

52:08

estando.

52:08

>> Los datos. Qué grande.

52:09

>> Vale, entonces esto está muy guay.

52:12

>> Esto está muy interesante porque claro,

52:13

realmente además puedes probar sobre

52:16

todo para empresas pues tener ya eh

52:20

claro, el volumen de datos. Entiendo que

52:21

esto es en local que está en tu máquina.

52:23

¿Dónde te ha guardado? ¿En qué carpeta

52:24

te ha guardado ese data?

52:27

>> Sí, en este caso,

52:28

>> por defecto, en el mismo proyecto o en

52:30

algún otro sitio.

52:32

>> Os lo muestro cuando entro en mi

52:35

aplicación Hero Sappi. A ver si estaba

52:38

aquí. Ah, no, perdón, en perdón.

52:40

>> Eh, aquí puedes ver un apartado que se

52:41

llama Bin Mount y aquí

52:44

>> eh, ay, no me aparece, perdón. No, que

52:46

esto es cuando lo mapeo a una máquina

52:48

local.

52:49

en algún sitio me aparecía eh aquí creo.

52:53

Bueno, aquí ves, aquí ya me dice que

52:54

esto es un volumen,

52:56

>> pero es un directorio interno que

52:58

utiliza Docker, que ahora mismo no

53:00

recuerdo cuál es el P concreto, pero

53:01

dentro de la máquina virtual donde está

53:03

ese

53:05

contenedor ejecutándose dentro de un

53:07

directorio que solo puede tocar eh

53:09

Docker Engine, es donde está guardado

53:11

pues un directorio con eh toda la

53:14

información que tiene este volumen. De

53:15

tal forma que es cierto que lo puedes eh

53:18

hacer un backup o puedes utilizar

53:19

herramientas de terceros que puedan eh

53:22

montar este volumen y automáticamente

53:24

pues ver toda la información o incluso a

53:26

día de hoy se pueden hacer cosas super

53:28

chulas. Imagínate, dices, "Bueno, pues

53:30

eh tengo un volumen que ha creado un

53:33

contenedor y que quiero echarle un

53:35

vistazo eh pues en Visual Studio Code,

53:37

por ejemplo, y me puedo ir al directorio

53:39

de volúmenes y aquí directamente puedo

53:41

decirle chulpe

53:42

>> chula esa extensión." Sí, sí, está

53:44

chulísima. o ábremelo dentro de un deck

53:46

container, que básicamente lo que hace

53:47

es que se monta un contenedor, mapea

53:50

este volumen dentro del contenedor y

53:52

puedo ver todo lo que hay dentro del

53:53

mismo, si son imágenes o lo que toque.

53:57

se puede hacer, pero vamos, eh el

53:59

mensaje sobre todo principal es que

54:01

donde está guardada esta información

54:03

realmente es en el host de Docker, que

54:05

en el caso de estar utilizando Docker

54:07

Desktop, pues es dentro de la máquina

54:08

virtual que gestiona Docker Desktop y

54:10

hay un P que Docker Engine puede tocar y

54:14

que tú pues no deberías de manipular

54:16

como tal, ¿no? Porque si no, pues bueno,

54:18

se le puede ir un poco

54:19

>> la olla, ¿no? Vale, vamos a aprovechar

54:21

para ver la gente que tenga preguntas en

54:23

este momento que las deje en el chat.

54:26

>> Eh, yo tengo aquí algunas que he ido

54:28

seleccionando, pero hay una una que me

54:30

ha hecho mucha gracia porque sigue

54:32

siendo rentable aprender Docker. ¿Tú qué

54:35

qué vas a decir, Gisela? Claro.

54:38

>> Vamos, para mí es que además os diría

54:41

que en este caso estamos viendo los

54:43

basics de forma acelerada.

54:45

Evidentemente, de cada cosa que os voy

54:46

contando, eh, hemos tenido clases de 3

54:49

horas, ¿no? De crear imágenes, de tal y

54:51

demás, pero lo importante ya no es solo

54:54

estos basics, sino cómo todo esto lo

54:58

hemos extrapolado para utilizarlo para

55:00

un montón de cosas más, como veremos

55:02

ahora en los últimos minutos, eh, que

55:05

nos dará, yo creo que sí que nos va a

55:06

dar tiempo, pues toda la parte de IA, eh

55:09

también, por supuesto, para tener

55:10

aplicaciones escalables.

55:12

Luego también incluso lo que os

55:13

comentaba y lo que veíamos ahora de los

55:15

death container. ¿Qué es eso de los

55:16

death containers? Pues básicamente que

55:17

yo puedo montarme todo mi entorno de

55:19

desarrollo dentro de un contenedor,

55:20

levantarme por las mañanas y decir,

55:22

"¿Qué me toca desarrollar con Python?"

55:23

Vale, pues me abro o me creo un

55:25

contenedor que tenga instalado Python

55:28

con todas las herramientas, todo el CDC

55:30

e incluso si lo abro con Visual Studio

55:31

Code puede hacer que ese Visual Studio

55:33

Code cuando abro ese repo dentro de un

55:35

red de container tenga solamente

55:37

aquellas extensiones que me hacen falta

55:39

para desarrollar con Python y que cuando

55:42

lo apague pues todas esas extensiones de

55:45

mi Visual Studio Code desaparezcan.

55:46

Puedo cambiar hasta el tema si quiero

55:48

como parte de esa configuración.

55:49

Entonces, yo creo que es super rentable

55:51

porque hay muchas cosas que se apoyan eh

55:54

a día de hoy en contenedores, los

55:56

descontainers, incluso en GitHub, no sé

55:58

si lo conocéis, hay una funcionalidad

56:00

que es gratuita en vuestras cuentas

56:02

personales que se llama GitHubat Code

56:03

Spaces para seguir utilizando estos

56:05

contenedores, esos containers en la

56:07

nube. O sea, que si vuestro problema es

56:09

ese ordenador con 4 GB de RAM, pero

56:11

tienes una cuenta gratis de GitHub, pues

56:13

puedes irte a cualquier repo y decir,

56:15

abrir este repo dentro de un contenedor.

56:17

y te monta todo el entorno Visual Studio

56:19

Code conerizado con incluso si tuvieras

56:22

varios contenedores como en este caso el

56:23

la app y tal, pues podrías

56:25

hacerlo también de una forma ser

56:27

sencilla. O sea, que vamos, la respuesta

56:29

corta es sí, pero como veis me flipa,

56:32

>> me flipa.

56:33

>> Mira, tenemos aquí un montón de, no sé

56:35

si son fans encubiertos de Potman y

56:38

entonces están preguntando todo el rato,

56:40

¿y qué ventaja tiene Docker versus

56:41

Potman? y pero un montón de gente y

56:43

digo, "Madre mía, no sé si es que ha

56:45

venido la empresa de Potman aquí y se

56:47

han infiltrado o o qué pasa."

56:49

>> Sí, eh, hace bastante tiempo hice un

56:52

vídeo en YouTube de incluso hacer la

56:54

comparativa, no propiamente con los

56:55

contenedores, pero sí con los

56:56

descontainers, que es lo que yo utilizo

56:58

para desarrollar en mi día a día. Y sí

57:00

que es cierto que hace ya un tiempo

57:02

atrás pues hubo bastante revuelo porque

57:04

Deoker a día de hoy cuando estás en una

57:06

empresa pues es es de pago, ¿no? Tienes

57:08

que tener una licencia, tienes que pagar

57:10

pues pasta para usarlo en un entorno

57:12

corporativo con chorro,000 que te pueda

57:15

costar, o sea, que tú tengas de

57:16

beneficio como empresa, pero si no es el

57:18

caso a título personal puedes utilizarlo

57:20

sin problemas. Incluso uno de los eh

57:23

problemillas que había inicialmente era

57:25

pues los permisos que necesitabas a

57:27

nivel de root para poder instalar,

57:29

utilizar Docker, que a día de hoy

57:30

también son salvables.

57:33

Y por el otro lado tenemos a Potman, que

57:35

es también totalmente válido, funciona

57:37

estupendamente. Yo lo he probado también

57:39

en Mac, lo he probado en en Windows, en

57:41

mi caso, y funciona containers y también

57:43

te hace lo mismo, entre comillas, eh,

57:48

pero es gratis, es open source, con lo

57:49

cual aunque estés en una empresa y

57:51

muchas empresas a día de hoy con las que

57:53

trabajo lo valoran incluso con Rancher y

57:55

demás para no tener que pagar la

57:57

licencia de Docker. Entonces, por eso

57:59

hay Docker o por pues depende de la

58:01

situación en la que estés, porque es

58:03

verdad que cuando comparas, aunque ahora

58:05

ha tostado con el terminal, pero la

58:07

interfaz, eh, todas las cosas que tiene

58:09

a día de hoy Docker, porque al final

58:11

tienes una empresa detrás que paga,

58:13

¿no?, para tener esto y que no es un

58:15

esfuerzo de la comunidad, pues tienes

58:17

cosas muy ricas y cuando lo ves en

58:19

Potmán, pues hay cosas que que está muy

58:21

bien, funciona, eh, en muchos casos me

58:23

puede valer, pero le faltan cositas si

58:26

lo comparas con

58:27

>> Pero los conocimientos te los puedes

58:29

llevar porque hay gente también

58:30

diciendo, "La API de Docker es idéntica

58:31

a la de Potman." No sé si es idéntica,

58:33

pero más o menos los conocimientos

58:34

entiendo que muchos de los conceptos que

58:36

hemos visto, incluso seguramente los

58:38

comandos más importantes deben ser, si

58:40

no idénticos, muy parecidos.

58:42

De hecho, puedes hacer un alias entre eh

58:45

Docker y Potman por si te sientes más

58:47

cómodo utilizando los comandos de Docker

58:49

y que por debajo use Potman y es

58:52

exactamente igual. La API hay una

58:54

especificación que indica cuáles son los

58:56

comandos que tienes que tener y en este

58:59

caso pues como se cumple en el caso de

59:00

Docker desde hace ya unos cuantos años,

59:02

pues Potman eh la cumple exactamente

59:04

igual y puedes llevarte los mismos

59:05

conceptos a un lado o a otro. Es verdad

59:07

que en Potman tienes eh una cosa

59:11

adicional que es que puedes utilizar

59:13

también un concepto de pot que ya no os

59:16

quiero hacer explotar la cabeza porque

59:18

sería irte más al mundo de los

59:20

contenedores. Y por ejemplo en Docker no

59:22

existe como tal, pero en Potman sí que

59:24

existe ese concepto de pod que

59:26

básicamente es como si te crearas un una

59:28

vallita entre varios contenedores y que

59:31

lo estuvieras todos corriendo juntitos,

59:33

pues cuando sobre todo estás pensando en

59:35

una aplicación microservicios. Pero al

59:37

margen de eso es totalmente extrapolable

59:39

lo que os he contado aquí, eh,

59:41

ejecutarlo en Potman y lo vais a poder

59:43

hacer sin problemas.

59:44

>> Aprovechando que Gisela ha mencionado

59:46

que tenía un vídeo. Claro, un vídeo. Un

59:48

vídeo. ¿Dónde tiene el vídeo? porque

59:50

tiene un canal de YouTube que tiene

59:51

40,000 suscriptores y a ver si le

59:53

ayudamos y consigue llegar a los 50.000

59:55

pronto y tiene un montón un montón de

59:58

vídeos. tiene de IA generativa para

00:00

developers, mira, web RTC, comunicación

00:02

en vivo para deps. He visto también

00:04

tiene un montón de hackilot de

00:06

contenedores. Mira, cómo empezar con

00:07

contenedores. Pues ahí tenéis un vídeo

00:09

para aprender también Docker de

00:11

servidores MCP, o sea, que es un canal

00:14

de YouTube que lo tenéis ahí, lo podéis

00:16

encontrar como Retun Gis o buscáis

00:18

Gisela Torres, Gisela Torres en YouTube,

00:20

fácil, rápido, y ahí la la vais a

00:23

encontrar y le echáis un vistazo. Yo

00:25

recuerdo que si queréis ver este

00:27

contenido que está haciendo aquí Gisela

00:29

lo más rápido que puede para daros los

00:32

basics y que podáis, vamos, al menos

00:35

empezar a cacharrear con Docker, que

00:37

sepáis que hay un bookcamp de BOPS que

00:39

empieza en octubre que la están haciendo

00:40

en Lemon Code y ella es docente, la

00:43

buena de Gisela, no es la única, pero sí

00:45

que es una de las más top que tenemos

00:48

aquí, que trabaja en Microsoft, que

00:50

tiene más de 10 años de 10 años de

00:53

experiencia. Bueno, eran 15 años, eran

00:55

cuánto era

00:56

>> 18. Además estamos y yo a la par. 18

00:59

años. Digo,

00:59

>> tiene de experiencia la mayoría de edad.

01:02

>> Y en Microsoft era que que llevabas 10

01:04

años.

01:06

>> Eh, voy a hacer eh 13 en febrero del año

01:09

que viene. O sea,

01:10

>> madre mía, qué pasada, ¿no? O sea,

01:12

espectacular lo de Gisela. Pues nada,

01:14

que Gisela enseña la parte de Asur

01:17

Docker. En solo de Docker está un mes,

01:19

para que os ha una idea lo que os acaba

01:21

de explicar en una hora seguramente está

01:24

una semana y media perfectamente. Vamos

01:26

a crear esto, vamos a hacer esto. Y en

01:28

total la parte de Docker es un mes.

01:31

Tenéis más docentes que todos son

01:32

cracks. De hecho, hay gente que trabaja,

01:35

Yolanda trabaja en Google. Tenéis

01:37

también gente que es muy experta en

01:39

cubernetes, o sea, que vamos, Ghup

01:42

actions, temazo. Las clases son en

01:46

remoto, o sea, no son físicas, son los

01:48

lunes y los miércoles. Tenéis el horario

01:50

en la página web, tenéis también cuando

01:52

empieza 6 de octubre. El precio oficial

01:54

son 2,390 € pero si vais de nuestra

01:57

parte le decís, "No, es que he visto la

01:59

clase de Gisela, me encanta." tenéis un

02:00

10% de descuento y además estáis en

02:02

situación de desempleo o tenéis unos

02:05

ingresos netos por debajo de los 1500 €

02:07

al mes, pues se lo comentáis, se lo

02:09

explicáis y seguro que aquí lo comenta,

02:12

que va os hacen un descuento sobre la

02:14

matrícula. Le podéis descargar el

02:16

temario, le podéis echar un vistazo. La

02:17

verdad es que la gente de Lemon Cole

02:19

siempre hace cosas muy muy interesantes

02:20

y bueno, ya podéis ver por el nivel de

02:22

Gisela con sus explicaciones que lo que

02:24

os espera va a ser mega top seguro, eh,

02:28

sin presión, eh, Gisela, pero es lo que

02:31

>> es lo que creo.

02:32

>> Tenéis que venir o vamos desayunados,

02:34

merendados o porque es intenso, intenso.

02:37

A ver, evidentemente es un poquito más

02:40

live cuando lo hacemos en un poquito más

02:42

live, pero porque tenemos 2 horas.

02:43

Además, este año vamos a innovar y en

02:45

vez de hacer 3 horas, porque antes eran

02:47

3 horas cada clase, o sea, que es que yo

02:48

las hacía en pijama porque como son

02:50

online, yo estaba con mi pijama de

02:51

Noopy, no me tenéis que ver la cara,

02:53

pero yo estaba con mi pijama aquí

02:54

contandoos porque Docker esto, porque

02:56

Docker lo otro. Pero ahora lo que hemos

02:58

hecho para que también sea más fácil

02:59

para vosotros es eh una parte del

03:01

contenido se queda grabado como digamos

03:03

un poco más la intro, qué es docker de

03:05

esto, tal, cómo se hace ese docker run,

03:07

bla bla bla y luego ya en las 2 horas

03:08

vamos un poquito más al tirol que luego,

03:11

por supuesto, hay un canal de Slack

03:13

donde nos podéis preguntar eh offline

03:15

cuando tenéis dudas porque entendemos

03:17

que no todo el mundo a lo mejor puede un

03:18

día en concreto y nosotros pues

03:20

contestamos dentro de eh nuestro eh

03:23

franja horaria o cuando podemos pues

03:25

contestamos lo más rápido posible.

03:26

posible, pues para que podáis seguir

03:27

avanzando y luego también os dejamos

03:29

cada profe, en base a lo que os hemos

03:31

contado, pues el laboratorio, ¿no? para

03:32

que podáis un poco probar pues lo que

03:34

habéis aprendido y siempre con

03:36

acompañamiento, una un día de la para

03:39

que estemos con vosotros, contamos la

03:41

vida, super entretenido, o sea, esto

03:44

vamos eh me encanta también en Lemon

03:46

Code

03:47

>> que penséis que que son seis meses, eh,

03:49

que que claro, es que esto que mucha

03:52

gente ayan dos semanas, no son 6 meses

03:55

de de curso. Pues nada, Gisela,

03:58

continuamos.

03:59

>> Continuamos. Os prometo que un poquito

04:02

más de caña, pero ya cerramos. Pero sí,

04:04

no, porque ya jolín, sí, sí, vamos a a

04:07

tope. Solo una cosa más, un comando

04:09

super rápido, ¿vale? Imaginaros, yo

04:12

puedo estar pensando y esas son las

04:13

preguntas que yo me hice hace 6 años,

04:15

¿no? Cuando empecé o hace cinco o se

04:17

años cuando empecé con Docker. Era como,

04:18

"Vale, pues tú imagínate que ahora en

04:20

vez de tener pues una pillongo, pues me

04:22

falta el front, me falta el logo y me

04:24

falta autenticación. Voy a tener que ir

04:26

lanzando comando por comando en un orden

04:28

específico, además, para que se puedan

04:30

conectar con unos y con otros. O sea,

04:32

esto es un tostón. ¿Cómo hago esto? para

04:35

que por lo menos incluso cuando esté

04:36

desarrollando sea algo un poco más

04:38

ligerito, ¿no? Y para ello, hace ya un

04:41

montón de años, GitHub, uy, GitHub,

04:44

Docker, compró una herramienta que hizo

04:47

una que se llamaba FIG y la integró como

04:49

parte de su solución, que fue a lo que

04:52

vino a parar, en este caso, a lo que

04:53

llamamos Docker Compost, que básicamente

04:56

lo que me va a permitir es ya no solo

04:58

que esté prescribiendo eh pues ese

05:00

Docker file con todo lo que necesita uno

05:02

de los componentes de mi aplicación para

05:04

funcionar, sino que puedo prescribir

05:06

pues como veis aquí toda mi aplicación.

05:09

Voy a poder tener un apartado que se

05:10

llama Services y aquí le puedo decir,

05:12

pues mira, tengo una API que está

05:15

almacenada en este directorio y

05:17

compílamela. Si no tienes generada la

05:19

imagen, me la creas. Aquí le puedo decir

05:21

pues cuál es el nombre, qué pasa si se

05:22

reinicia, los puertos por los que se

05:24

expone, si tiene variables de entorno,

05:26

las puedo poner. Oye, espérate que está

05:28

depende de ese Con lo cual hasta

05:30

que el no se ejecute, no empieces

05:32

a ejecutar este contenedor porque si no

05:33

va a intentar conectarse con un

05:35

que no existe y entonces va a fallar,

05:36

¿no? Y también puedo ponerle checks para

05:39

ver que todo esto está funcionando y que

05:41

si no pues que reinicie o haga lo que

05:43

corresponda. Y luego aquí también

05:45

incluso hay una parte de desarrollo que

05:46

incluso lo que me permite es que si toco

05:48

cualquier archivo que tenga que ver con

05:51

esta API, automáticamente me regenera la

05:53

imagen. O sea, esto brutal. Esto tiene

05:55

poquito tiempo. Y luego, por supuesto,

05:57

aquí, como podéis ver, pues tengo mi

05:59

con las variables de entorno que

06:01

había definido a través de ese script.

06:02

Oye, utiliza estos volúmenes para que

06:05

pueda también, por ejemplo, eh pues eh

06:07

almacenar en ese volumen pues los datos

06:09

que vaya generando, Ghake. E incluso en

06:11

este caso pues he dicho, "Venga, también

06:12

me creo un Express, que es una

06:14

interfaz eh bastante sencillota, pero

06:16

que me permite ver la chicha, lo que hay

06:18

dentro de ese mo que me acabo de crear.

06:20

Y luego en este caso, además de

06:22

definirle al final pues cuáles son los

06:24

volúmenes, también le puedo definir cuál

06:26

es la red donde quiero que todos los

06:28

contenedores que formen parte de este

06:29

archivo eh se metan dentro, ¿no? Como

06:32

que se conecten, ¿no? Como que

06:34

virtualmente generen su tarjetita de red

06:36

y se conecten a esta red de aquí, ¿no?

06:39

Así que, ¿cómo ejecuto esto? Una vez

06:41

más, pues si abro un terminal integrado,

06:45

solo hay que hacer docker compost app y

06:49

ya está. Con esto me levanto tres tres

06:54

aplicaciones, realmente tres componentes

06:56

que se comunican entre sí y que me van a

06:58

permitir pues en este caso eh hablarse

07:00

sin problemas. Creo que algo no he hecho

07:02

bien. Vale, ya sé lo que no he hecho

07:04

bien, que me pasó esta tarde y es porque

07:06

tengo que irme un pasito más atrás

07:09

porque si no solo está intentando

07:10

ejecutar mi aplicación pero no el resto

07:14

y entonces pues hace un poco de lío,

07:15

pero ahora sí que va a funcionar. Y

07:17

aquí, bueno, se descarga eh esa versión

07:20

de la imagen de se descarga ese

07:22

express y en el momento que termine

07:24

ahora sí que va a levantar los tres

07:25

contenedores y ahora ya sin problemas mi

07:27

aplicación se va a poder conectar. Ay.

07:30

Ah, vale, ya. Esto es otro

07:34

otro fallito del directo. Nada, que es

07:35

que tengo puerto,

07:39

>> ¿qué ha pasado? Ya está, no pasa nada.

07:41

Es porque estaba escuchando el por

07:43

el puerto que está intentando escuchar

07:44

este otro pobre y le ha dicho, "No, no,

07:46

no." Y aquí, como veis, tú tuú ya está

07:49

todo trapo. Claro.

07:50

>> Vale. Y aquí mola

07:52

>> porque ya tengo todos recogiditos dentro

07:54

del mismo de la misma valla.

07:57

Claro, y en un solo comando que esto

07:59

pues yo creo que la ventaja más brutal

08:02

que que se ve aquí es el hecho del

08:04

entorno de desarrollo de si estamos

08:06

trabajando en equipo, lo típico de cómo

08:08

levanto esto en mi local, no tienes que

08:10

ejecutar todos estos comandos,

08:12

instalarte todo esto, no, solo tienes

08:14

que hacer Docker Compost App y lo

08:16

levantas y ya lo tienes en entorno de

08:18

desarrollo levantado sin ningún tipo de

08:20

problema. Tremendo,

08:21

>> sin ningún tipo de problema. Entonces,

08:22

claro, es que con esto incluso para

08:26

gente que a lo mejor acaba, ya no digo

08:27

junior, gente que acaba de entrar a un

08:28

proyecto porque a día de hoy ya no estás

08:30

en uno, estás en 20, ¿no? Y full stack y

08:33

no sé qué, pero a lo mejor yo hay cosas

08:34

que no no he configurado en mi vida,

08:36

¿no? Y con esto no solo es que me ayuda

08:38

a levantarlo, sino que también a

08:39

aprender un poco pues cómo sería en este

08:41

caso levantar todos estos servicios para

08:43

para poder funcionar, ¿no? Aquí en este

08:45

caso pues me he levantado hasta tres

08:47

tres aplicaciones o tres componentes que

08:49

si aquí pongo admin

08:56

ir ir viendo pues los héroes que vaya

08:58

metiendo en esta colección de

08:59

¿no?

09:01

que una cosa muy interesante que no

09:03

hemos comentado y a lo mejor a lo mejor

09:05

la gente pues no está cayendo es el

09:07

hecho de que claro lo que estáis viendo

09:09

independientemente de que Gisela tenga

09:13

macOS, de que otra persona tenga

09:15

Windows, de que otra persona tenga

09:17

Linux, de que no importa tanto sistema

09:19

operativo que con que tenga la

09:21

posibilidad de ejecutar Docker, ya no te

09:23

tienes que preocupar de compilaciones,

09:25

configuraciones, bibliotecas,

09:26

compatibilidades ni nada, sino que va a

09:29

funcionar todo. Perfectamente porque

09:31

estos propios contenedores ya tienen su

09:33

propio sistema operativo como versiones,

09:36

bibliotecas y tal. Entonces ya esto va a

09:39

funcionar independientemente del sistema

09:40

operativo del usuario.

09:42

>> Claro, mi máquina funciona, se acabó.

09:45

Funcionar en cualquier sitio.

09:48

>> Totalmente, totalmente. Potentísimo lo

09:50

del Docker Compost. Yo lo he utilizado

09:52

un montón. Bueno, es que yo creo que

09:53

casi cualquier persona que haya

09:54

trabajado en una empresa lo ha tenido

09:56

que utilizar bastante porque al final te

09:58

facilita un montón para levantar en

10:01

torno de desarrollo. Muy fácil.

10:02

>> Sí, sí, total. Pues nos queda poco

10:05

tiempo, pero sí que hoy os quería contar

10:07

algo de IA que

10:08

>> Claro, cuenta, hombre. Si, o sea, a ver,

10:11

si no, o sea, tenía que haber puesto,

10:13

>> claro, tenemos que ponera, si no nos

10:15

cierran el chiringuito, si no Twitch me

10:17

banea, o sea, tenemos que

10:21

>> Vale, pues bueno, todo esto es lo mínimo

10:25

que necesitas para sentirte más o menos

10:28

cómodo con Docker. Es verdad que hay

10:30

muchísimas otras cosas que podríamos

10:33

hacer y bueno, lo que pasa es que bueno,

10:35

pues como decemos, ¿no? es para dar un

10:37

llevar un ratito y estar un ratito

10:39

jugando con todo esto, pero sí que os

10:41

quería enseñar un par de cosas que

10:42

habíamos comentado Midu al principio de

10:44

esta sesión y luego también cuando

10:46

estuvo comentando que iba a estar yo por

10:48

aquí, que era qué pinta todo esto con la

10:50

generativa, ¿no? Y a día de hoy, eh,

10:52

Docker se está poniendo las pilas que no

10:54

veas con todo este tema. De hecho, están

10:56

todos así que yo esta mañana he

10:58

actualizado mi Docker Desktop y ahora

10:59

por la tarde vuelvo a tener una

11:00

actualización pendiente, ¿no? O sea, que

11:02

para que os hagáis una idea. Y es que eh

11:05

la IA Generativa más Docker, ¿qué es lo

11:08

que nos ofrece el día de hoy? Pues dos

11:10

cosas. En primer lugar, que yo tengo un

11:13

agente como parte de Docker Desktop y

11:15

como parte de la línea de comandos que

11:16

puedo utilizar para preguntarle

11:18

cualquier cosa que tenga que ver con

11:19

Docker o incluso si quiero utilizar los

11:22

famosos MCP servers, también lo voy a

11:24

poder utilizar con este agente, ¿no? Y

11:25

aquí, como veis en fase beta tenemos

11:28

este Gordon, que es nuestro eh

11:30

superagente que nos va a permitir pues

11:32

ayudarnos con todo lo que tenga que ver

11:34

con con Docker, ¿no? Y bueno, pues

11:37

podría preguntarle cosas como, por

11:38

ejemplo, eh

11:41

muéstrame los contenedores que tengo

11:44

ejecutándose.

11:46

>> Qué oportunidad perdida de llamarle a la

11:48

inteligencia artificial Moby Dick o no

11:52

sé o Willy, ¿no? O sea, ya que es

11:55

ballenas. Bueno, Willy creo que era una

11:56

orca, no me acuerdo. Era una orca, una

11:58

ballena, pero

11:59

>> total.

12:00

Eh, bueno, perdón, eh, es que es que me

12:03

ha parecido un tema de marketing que sí,

12:06

perdón, perdón.

12:07

>> No, no, no, pero bueno, se ha quedado

12:08

aquíito. Está Vamos a probar de nuevo

12:10

que se ha quedado aquí. Ah, mira, ya

12:13

está. Uy, es que le ha costaba, estaba

12:15

aquí con el low al Vale, sí, le he dicho

12:17

que que sin problemas podía utilizar en

12:19

este caso, una tool de un MCP server que

12:20

se llama Docker, que utiliza este gordón

12:22

para decirle, "Oye, que voy a ejecutar

12:23

un comando en tu máquina, espero que te

12:24

parezca bien, ¿no?" Y aquí, como ves,

12:26

pues me dice, "Oye, pues estos son los

12:28

eh contenedores que estás ejecutando,

12:29

que esto así como tal me da un poco

12:32

igual, pero si me vuelvo a Visual Studio

12:33

Code y me voy, por ejemplo, otra vez a

12:36

ese directorio A, ¿vale?", Vale, pues

12:40

aquí, por ejemplo, una de las cosas que

12:41

puedo hacer también es preguntarle a ese

12:43

mismo Gordon, eh, Docker, ¿puedes

12:47

mejorarme mi Docker F? ¿Vale? Y aquí,

12:51

como veis, puedo utilizar el mismo

12:52

agente que estábamos viendo el docker de

12:54

esto, lo puedo hacer desde aquí y él va

12:56

a recuperar pues toda la información que

12:57

tiene en este caso en este directorio e

12:59

incluso puedo interactuar con él.

13:01

>> Ostras, esto está chulo, me gusta. Esto

13:03

está chulo. Esto está chulo. Entonces,

13:05

bueno, pues aquí incluso le puedo decir

13:07

si directamente si quiero que me lo

13:08

reescriba. En este caso le vamos a decir

13:10

que no para que también podáis probar

13:12

cómo me lo mejora, que no lo he hecho,

13:13

lo he hecho bien, pero lo podría haber

13:15

hecho mejor, ojo, ¿no? Y aquí podría

13:17

preguntarle por el Docker Compost y

13:18

podría preguntarle por muchas más cosas.

13:20

O como os decía, esto se puede integrar

13:22

con los MCP Servers. Imagínate que el

13:25

día de mañana pues tienes Docker como

13:26

parte de tu compañía o tú en tu casa,

13:28

¿por qué no? Y dices, "Es que quiero

13:30

también integrarlo pues con otros. MCP

13:33

servers que existen en el mercado o

13:35

incluso con algunos que yo me haya

13:37

generado, ¿no? Y aquí pues tengo este

13:39

archivo que se llama Gordon-MCP.yamen,

13:41

lo llamen, que veis es sencillo, de

13:44

hecho sigue la misma estructura que ese

13:45

docker compost que hemos visto, pero en

13:47

este caso en chiquitín, ¿no? Y lo que le

13:49

estoy diciendo es, oye, si me ejecutas

13:51

Gordon, ese Docker ahí dentro de este

13:54

directorio, eh, quiero que puedas

13:56

utilizar estos MCP servers. Y en este

13:58

caso, pues hay uno que simplemente me

13:59

dice la hora porque los eh modelos de

14:02

inteligencia artificial o los Llms pues

14:03

la hora la llevan un poco regular. Y

14:05

luego yo me he creado un MCP server que

14:07

busca vídeos en YouTube porque porque

14:10

bueno, porque tenía que probar con algo,

14:11

¿no? Entonces aquí directamente incluso

14:14

no le estoy pasando la piquí, la tengo

14:15

guardada como dentro de ese punto m que

14:18

no voy a mostrar, ¿vale? Y aquí pues

14:20

simplemente si me voy un poco más para

14:22

abajo y le digo doer ahí y le digo,

14:25

¿puedes buscarme

14:27

vídeos sobre MCP Servers, ¿vale? Y aquí,

14:32

si todo va bien, lo que va a hacer

14:34

detrás de todo esto es ejecutarme un

14:36

contenedor, a ver si me da tiempo para

14:37

mostrarlo rápidamente. Un contenedor,

14:40

pues con ese MCP Time y con mi MCP

14:42

server, que lo tengo eh ya generado, los

14:45

autodestruye en el momento que tiene la

14:47

respuesta. Y aquí, como ves, me salen

14:49

pues resultados de YouTube. O sea, que

14:52

yo bueno,

14:53

>> aquí podría hacer un FMD y aquí, como

14:55

veis, esto es una URL de YouTube que si

14:58

lo hubiera puesto en español seguro que

14:59

me hubiera salido el vídeo de mi dudez,

15:01

pero como no lo he dicho español me los

15:03

da en inglés, pero no pasa nada. Pero

15:04

aquí, como veis, o sea, puedo hacer un

15:06

montón de cosas, por supuesto, le puedo

15:08

preguntar la hora, pero como no teníamos

15:09

tiempo, pues con esto suficiente,

15:13

>> ¿vale? O sea, teng preguntas, tengo

15:15

preguntas. Eh, no, no, es que me ha

15:18

parecido superinesante esta integración

15:19

con este servidores MCP. Yo no tenía ni

15:21

puñetera idea y además el hecho, claro,

15:24

ya al principio que el Docker yo pensaba

15:25

que era la pregunta como que le

15:27

preguntabas al Gordon de cosas de

15:29

Docker, pero no, es que también tienes

15:31

integraciones de servidores MCP. Es

15:33

espectacular lo de los servidores MCP

15:35

porque se están integrando con cualquier

15:36

sitio ahora que Windows también tiene

15:40

integración de

15:41

>> Sí, sí. O sea, a ver si Macos y no sé,

15:44

Linux, me imagino que Linux lo tendá más

15:45

fácil, pero bueno, ojalá que lo hagan. E

15:48

la mi pregunta del millón es que claro,

15:50

tienes el servidor MCP que es un Docker

15:53

file y entiendo que también se pueden

15:56

utilizar en, por ejemplo, en Cursor o en

15:59

otros editores que utilizan MCP servers

16:01

que puedan levantar el Docker File para

16:03

que sean un servidor que consumas desde

16:05

el editor o o no se puede.

16:08

>> En este caso, Docker ha hecho una cosita

16:11

un poquito diferente para Gordon. Este

16:14

Jammel es el que va estupendamente bien,

16:17

pero luego lo que ha hecho es lo que se

16:19

llama un MCP gateway, que básicamente lo

16:22

que lo que te permite en este apartado

16:24

que se llama MCP Tool Kit es pues yo me

16:27

descargo los MCP servers que quiera,

16:29

aquí hay un listado de algunos de ellos

16:31

y luego lo que puedo hacer es conectar

16:34

diferentes clientes a este gateway de

16:37

tal forma que si yo, por ejemplo, me voy

16:40

a mi GitHCOT, que tanto adoro,

16:43

y me voy aquí al apartado de las tools,

16:45

pues aquí debería de tener una tool que

16:47

se llama MCP Docker, que realmente es

16:50

ese Gateway que es un es un MCP server

16:53

que se ha configurado con una imagen de

16:55

Docker que se llama Gateway, que se

16:56

puede conectar con tu máquina local. Y

16:58

aquí en este caso, como veis, pues tengo

17:00

eh pues un montón de tools que tengo

17:02

deshabilitadas porque me peta ha sido el

17:05

eh guijas copyilos con tanta tool, ¿no?

17:07

Ahora mismo tengo 31 y tengo

17:08

deshabilitadas un montón, pero aquí la

17:11

gracia es que yo ya no voy pues en el

17:13

archivo de Cloud, en el archivo de

17:15

Ghacopilot, en el de Visual Studio Code,

17:17

en el de Windows, en el de que sea, sino

17:19

que tengo como una especie de hub que

17:21

configuro en todos los sitios por igual

17:23

y él es el que se encarga de gestionar

17:24

todos los MCP servers que hay por

17:26

detrás.

17:27

Wow,

17:28

>> pero a día de hoy no

17:29

>> me gusta mucho la idea esa porque al

17:30

final las tienes todas en el Docker

17:33

desktop este activadas

17:35

>> y los puedes conectar en diferentes

17:37

clientes automáticamente sin necesidad

17:39

de tener que ir a todos los clientes

17:40

ahí.

17:41

>> Me gusta, me gusta.

17:43

Sí,

17:43

>> sí, eso es

17:45

>> brutal.

17:46

>> Em,

17:47

una más y te y os dejo ir.

17:50

>> Os dejo ir todo lo contrario. Pero si la

17:52

gente ya Pero si tenemos aquí a la gente

17:54

que me está pidiendo una segunda muerto

17:56

ya. Segunda parte, Gisela. La gente ya

17:58

me está pidiendo la segunda parte. Si

18:00

está aquí la gente como, bueno, ¿y

18:02

cuándo vuelve? ¿Sabes? O sea, que

18:05

>> iba a decir, ¿cuántos caídos hay?

18:07

>> No, no, todo lo contrario. Nada, solo

18:09

hay 3384 personas. Gisela.

18:12

>> Ah, bueno, super tranquilo. Nada, pues

18:14

luego pongo el cazo. Nada, broma.

18:17

>> Medio euro cada uno y vamos de las

18:19

vacaciones más que pagadas, ¿eh?

18:20

>> Qué bárbaro. Qué pena que ya me he ido.

18:22

Qué pena. Bueno, pues nada, una última

18:25

demo y ya cerramos. Pero vale, en este

18:30

caso, como os decía, este ordenador es

18:32

bastante viejito y usa intel, no utiliza

18:34

ARM, con lo cual hay ciertas cosas que

18:37

al principio se veían y ahora han

18:39

desaparecido porque han mejorado la

18:41

interfaz, pero

18:44

Docker ya no solo va de imágenes de

18:46

Docker, sino que ahora también lo que

18:47

podemos hacer es utilizar el mismo

18:50

Docker para descargarnos modelos de

18:52

inteligencia artificial generativa, con

18:55

lo cual aquí no se ve, pero si me Voy a

18:57

mi Windows que tengo aquí preparado

19:01

también.

19:02

En este caso, si me voy a mi Docker

19:04

Desktop, que tengo por aquí a ver si

19:06

quiere que se ha quedado tosti. A ver,

19:09

ha pasado. Pasa nada, vamos a arrancarlo

19:12

de nuevo. Muchas cosas pasando a la vez.

19:15

>> Yo no he pedido que le suba la fuente

19:17

esta vez, ¿eh? Yo no he dicho. Bueno, es

19:19

que es normal porque cuando se streamea

19:21

esto se vuelve se vuelve tonto.

19:25

>> Sí. Ah, mira. No hay nada como Ah, no

19:28

hay nada como reiniciar aquí en este

19:30

caso. Mira, además me viene super bien,

19:32

como esto es una un entorno en la nube,

19:35

pues vais a ver perfectamente la

19:36

diferencia. Aquí veis que hay un

19:37

apartado que se llama models,

19:39

>> que si me voy al de Mac, aquí no está,

19:42

>> no, no aparece. Si me voy a mi M1, que

19:45

también tengo MacBook Pro, en ese caso

19:48

sí que se vería porque solo está

19:49

disponible para ARM, ¿no? O y necesitas

19:52

GPU y necesitas un montón de cosas que

19:53

mi máquina, aunque es un maquinón, pues

19:56

ya tiene unos cuantos añitos, entonces

19:57

no está soportado. Pero en máquinas que

20:00

sí lo soportan, aquí como veis, yo

20:02

podría incluso descargarme modelos de

20:04

inteligencia artificial que puedo

20:06

utilizar con mis aplicaciones que yo

20:08

esté desarrollando en mi día a día, eh,

20:10

utilizando contenedores o no

20:12

utilizándolos. ¿no? Aquí están

20:13

intentando ponerse pues a a un nivel eh

20:16

rollo o llama, ¿no? Donde incluso llama

20:18

pues tiene también los mismos comandos y

20:20

demás. Y aquí lo que se han creado es lo

20:22

que se llama Docker Model Runner, que te

20:24

permite pues descargarte cualquier

20:26

modelo de los que estén como parte de

20:28

este registro, ¿no? Y que puedas eh

20:31

integrarlos con tu aplicación, que

20:33

además utilizan las mismas APIs eh

20:35

perfectamente que podrías utilizar

20:37

utilizando el SDK de Open AI, es decir,

20:39

que tu mismo código podrías descargarte

20:41

cualquiera de estos modelos y no

20:43

tendrías que cambiarlo.

20:45

>> Así que os lo voy a enseñar a ver si

20:46

quiere esto. mismo repo lo voy a

20:49

compartir para el que tenga la suerte de

20:50

tener una RM descargar. Lo que no

20:52

prometo es que vaya rápido, o sea, es

20:54

decir, al final estás ejecutando modelos

20:56

que, bueno, pues pueden ir un poco de

20:58

aquella manera. Entonces, eh lo más

21:02

rápido para poder probar estos estos

21:05

modelos, y os lo voy a enseñar

21:06

rápidamente, nos queda poco tiempo, es

21:09

utilizar pues un eh comando que han

21:12

llamado Docker Model RAM, es decir, es

21:14

como el Docker RAM que hemos visto

21:16

antes, pero en este caso eh poniéndole

21:18

el model entre medias, ¿no? Y aquí en

21:20

este caso voy a utilizar Genma 3 para

21:22

que veáis que no va a ropar a casa en

21:23

este caso, ¿no? Y en el momento que

21:26

pulso el intro estoy ya en un modo

21:27

interactivo como si tuviera un chat, en

21:29

este caso con Gma. Le podría decir,

21:31

"¿Puedes saludar a los que estén

21:35

conectados?"

21:37

por por poner un ejemplo. Y aquí en este

21:39

caso pues os vais a dar cuenta de que

21:40

esto pues va a poder tardar un poquito,

21:42

pero aquí como veis pues saludos a los

21:44

que estéis conectados

21:46

y nada más

21:47

>> al que sea, ¿no? Pero aquí, como veis,

21:49

puedo eh trabajar pues perfectamente con

21:51

estos modelos en mi máquina local. Y

21:53

encima el trabajo con Docker pues

21:54

estupendo, pero es que puedo ir más

21:56

allá, puedo decir, "Vale, me encaja,

21:59

quiero, he probado este modelo, he

22:00

probado este otro, podemos tener un

22:02

montón." Me he creado una aplicación

22:04

superchorra, este app.páis P para que

22:07

veáis cómo funciona, donde básicamente

22:10

en un código en Python también barriendo

22:11

para casa, como veis, donde bueno, pues

22:14

cargo unas variables de entorno, pinto

22:16

bonito que la aplicación se ha

22:17

arrancado, recupero de un par de

22:20

variables de entorno, ¿cuál es el

22:21

momento?

22:21

>> Gisela, te puedo pedir una cosa si

22:23

espero que no se rompa nada de que le

22:26

subas un poquito, un poquito el zoom.

22:28

>> Vale.

22:29

>> Ay,

22:31

>> sí. Uy, no te di. Sí, igual te la liado,

22:33

pero se ve perfecto. No, está bien, está

22:35

bien. Vale,

22:36

>> bueno, pues aquí no, no, perdón, perdón

22:39

que no me había dado cuenta.

22:40

>> Bueno, pues aquí simplemente nada, cojo

22:42

de un par de variables de entorno, pues

22:43

la URL donde tengo que llamar y el

22:45

modelo que voy a utilizar, ¿no? Y aquí

22:47

simplemente utilizo eh la librería de

22:49

Open le paso esa información, la API me

22:52

la he inventado porque en este caso no

22:54

hace falta y aquí le digo, "Bueno, pues

22:55

escribe una bienvenida en español para

22:57

una descripción de Twitch, bla bla, que

22:59

sea divertido, no sé qué." y llamo a la

23:01

misma API que llamaría pues en una

23:04

aplicación que esté utilizando eh IA

23:06

Generativa, o sea, nada raro, nada que

23:08

tenga que ver con Docker, excepto es

23:09

aquí que me he inventado, que podría ser

23:10

cualquier cosa y ya está, ¿no? Y lo que

23:13

puedo hacer,

23:15

>> a ver si me deja este super zoom, eh,

23:18

aquí en este compost como el que hemos

23:20

visto anteriormente,

23:22

pues tengo algo tan sencillo como esto.

23:24

A ver si me deja. Es que claro, ahora

23:25

estoy jugando entre el Mac, el Windows y

23:28

>> se hay una mezcla. Ay. A ver, a ver si

23:30

me deja eh aquí este Docker Compost es

23:34

el eh esto es lo único que tiene, no

23:35

tiene más.

23:36

>> Ostras,

23:37

>> una app. Ay, que le digo, "Oye,

23:39

compílame todo lo que hay aquí dentro,

23:41

me generas una imagen y ya estás." Y

23:42

ahora hay una nueva sección que se llama

23:44

models, donde le puedo llamar o puedo

23:46

tener uno o varios modelos. Claro,

23:48

cuanto más modelos, más se va a tostar

23:49

tu máquina, evidentemente. Y en este

23:51

caso le estoy diciendo, "Oye, quiero

23:52

descargarme el modelo YMA 3, que es el

23:54

que hemos visto en el terminal, para

23:56

utilizarlo con esta aplicación que tengo

23:58

más arriba, que es la que os acabo de

23:59

mostrar.

24:01

Vamos a ver si esto funciona y con esto

24:02

ya chin pún nos vamos a ver. Ahora ya lo

24:06

hago un poquito más grande, lo prometo.

24:08

Vale. Y aquí nada, exactamente igual.

24:10

Docker compost a

24:14

Vamos a hacerlo un poquito más grande.

24:17

Mira, ahora parece que me ha ido un

24:18

poquito mejor. Y aquí nada, se está

24:19

arrancando. Estos son los valores que me

24:21

están llegando en esas variables de

24:22

entorno, que es algo propio de ese

24:24

docker compost con esa sección de

24:25

modelos. Va a tardar un poquito porque

24:27

en este caso el PR no ha sido saludo a

24:29

todos. Sí, un poco más complicado más

24:30

grande, pero en el momento que termine

24:33

automáticamente está utilizando el

24:36

modelo que le has dicho que es el de

24:38

Yema 3 y claro, si normalmente lo tiene

24:40

que descargar, pero supongo lo tendrá

24:42

cacheado, ¿eh? Y ya no tienes que

24:44

configurar absolutamente nada. O sea,

24:46

>> claro, o sea, en este caso yo en local

24:48

me he descargado estos, pero claro,

24:49

imagínate en eh bueno, este en español

24:52

lo hacía Regulinchi y este y 3 son 2,31

24:55

GB y aquí tienes una sección de locks y

24:58

puedes ver también pues cuáles están

25:00

disponibles, que ahora mismo pues como

25:02

esto es algo muy nuevo pues hay

25:03

poquitos, ¿no? Si comparas con un con

25:06

uno llama pues hombre todavía no están

25:07

ahí pero bueno. Oye, aquí está.

25:10

>> Oh, mira.

25:11

>> O

25:12

>> la respuesta.

25:14

Mira, voy a leer. Hola, hola, valientes

25:15

exploradores del código. Bienvenidos a

25:17

mi canal. Si estás aquí, seguramente te

25:19

llama la curiosidad o simplemente buscas

25:20

un buen rato. Me gusta, me gusta. Me me

25:23

lo voy a apuntar.

25:25

Oye, increíble, eh, Gisela, tremendo. Me

25:28

ha encantado. La verdad es que toda esta

25:30

parte de la inteligencia artificial no

25:31

tenía ni puñetera idea. A mí cuando me

25:34

dijiste de, "No, te explicaré Docker y

25:36

la IA Generativa." Y yo, bueno, ya es la

25:39

experta, yo no sé a qué se refiere, pero

25:41

bueno.

25:41

>> Esta se le ha ido la olla. No, no,

25:43

bueno, la olla no, pero digo, no sé,

25:45

habrá una Pero es que no tenía ni idea

25:47

de de todo esto, ¿no? No sabía que que

25:49

se habían puesto las pilas tan fuertes y

25:50

que que fácil que que la han hecho muy

25:53

fácil y con el Docker Compost que han

25:55

puesto una nueva sección y todo. Es

25:57

brutal. Me encanta, me encanta. Muchas

25:59

gracias.

25:59

>> Me alegro. Espero que os haya gustado a

26:01

todos. No os preocupéis, lo vais a poder

26:03

revisitar tranquilamente o le pasaré

26:06

también a Midu el repoéis descargarlo y

26:09

probarlo tranquilamente en casa cuando

26:11

ya hayáis liberado caché, pues

26:13

estupendísimo. Pero bueno, que aquí

26:15

estamos, o sea, que yo encantada de

26:16

haber estado aquí con vosotros.

26:18

>> Muchísimas gracias. O sea, nos ha

26:20

encantado. Hay gente que me estaba

26:22

preguntando, "Pero, ¿dónde está el el

26:24

canal?" Aquí tenéis el canal de Gisela.

26:27

Que Gisela, una buena noticia, has

26:29

pasado de los 40,000 suscriptores, ¿eh?

26:31

Aquí 40000, no,0000 está más difícil,

26:34

pero creo que ha subido 400

26:36

suscriptores, ¿eh? No está mal, no está

26:38

mal.

26:38

>> Sí, sí, sí. Muchísimas gracias. Vamos,

26:41

aquí también tenéis una serie de Docker

26:43

que la suelo ir refrescando cuando voy

26:45

preparando el contenido de Lemon. Ojo,

26:47

no os olvidéis que son

26:50

>> y de hecho eso es lo siguiente que os

26:52

iba a comentar, que si queréis saber

26:54

todo lo que acaba de comentar Gisela,

26:56

todo el tema de de Docker, esto es parte

26:59

del bookc de DevOps de Lemon Code, que

27:01

la buena gente de Lemon Code pues ha

27:02

dicho, "Buah, mira, te es que te voy a

27:05

llevar a Gisela para que te explique

27:06

todo esto porque es que está muy

27:07

interesante y explica muy bien y yo,

27:09

vale, pues venga, que se venga." Y

27:12

bueno, ya veis que lo ha explicado

27:13

tremendamente en una hora y media, pues

27:15

es que resulta que la parte de Docker es

27:17

un mes del bootcamp, un mes, para que os

27:20

hagáis un poco la idea de lo que podéis

27:22

aprender. Y no es lo único. Tenéis

27:23

cuernetes, GHUp, Actions, Jenkins,

27:25

Terraford, Ansibor, Grafana, Promeceus,

27:27

Asur, Aus, Ax, X, HS, o sea, es que esto

27:31

me encanta, ¿eh? Y aparte de Gisela, que

27:35

por supuesto ya habéis visto que es

27:36

cinturón negro. Esto me lo tienes que

27:37

explicar algún día. Esto de ser Black

27:39

Bell for de Productivity. Esto de Black

27:41

Bel, cinturón negro es porque debe ser

27:43

que ya lleva muchos años y ya es como

27:46

maestra jedy del consejo de Microsoft.

27:50

Aparte de la buena de Gisela, tenéis a

27:52

Yolanda que trabaja en Google, Eduard

27:54

Tomás para hablar de de cubernetes,

27:57

tenéis a Jaime Salas, tenéis a Santiago

27:59

Camargo, Joaquín Trillo y por supuesto a

28:01

Gisela que os va a hablar de Docker y de

28:03

Asur. Empieza en octubre, ¿vale? Aquí

28:06

tenéis los horarios en diferentes países

28:07

porque es en remoto, de hecho tenéis

28:09

diferentes modalidades para que así

28:11

podáis seguirlo. Empieza el 6 de

28:12

octubre, son seis meses de duración, 96

28:15

horas de docencia. Son porque no se

28:17

oculta que hay gente, no, pero que no os

28:19

dice el precio. Lo he dicho todo el

28:20

rato, no os oculta. Son 2,390 €

28:23

>> y tenéis un 10% de descuento si le decís

28:25

que veis parte mía o de Gisela, de

28:28

Gisela o de los dos a la vez. Dices, no

28:30

es que vengo de los dos. Yo que sé,

28:31

igual así hacen un 20%.

28:35

No hemos llegado acuerdo, pero si estáis

28:37

en situación de desempleo, tenéis

28:38

ingresos netos inferiores a 15 € también

28:40

se lo podéis comentar que os van a hacer

28:42

un descuento en la matrícula. Así que

28:44

Gisela, muchísimas, muchísimas gracias

28:47

por, por venir, por estar aquí una hora

28:50

y media hablando de algo como es Docker,

28:52

que normalmente a la gente pues se le

28:53

ponen los pelos como escarpias y todo lo

28:55

contrario. Había muy pero que muy en

28:57

FIBA, la gente estaba increíblemente

28:59

contenta de que lo trajeses además de

29:02

esta forma tan didáctica muy, ostras,

29:04

con código, hala, el Docker con post,

29:06

esto de los modelos que no tenía ni

29:07

idea. Así que muchísima, mira, gente,

29:10

muchas gracias, dice, muchas gracias,

29:13

Gisela. Eh, muchas, muchas gracias por

29:15

pasarte. La verdad que me lo he pasado

29:17

super bien y he aprendido cosas nuevas

29:18

porque hacía mucho tiempo que no tocaba

29:19

Docker. Lo he intentado evitar durante

29:21

mucho tiempo, te tengo que decirte.

29:22

>> Yo también, eh, reconocer que yo

29:24

también, pero luego me enganchó y hasta

29:26

hoy.

29:27

>> Pero mira, s super bueno aquí. Gracias,

29:30

Gisela, me gustó mucho. Muchas gracias.

29:32

Muy bueno Gisela. Gracias, Gisela. S, s

29:35

super s super. Gracias Gisela, te

29:37

queremos. Bueno, o sea, ya la gente te

29:39

quiere, te quiere más.

29:40

>> Sí, ya te quiere más que a mí. O sea, yo

29:42

llevo aquí 4 años haciendo directos,

29:44

pero esto, ¿qué es? Pero Anto, o sea, un

29:47

poquito de amor para mí también. Bueno,

29:49

Gisela, muchas gracias por pasarte. Te

29:51

deseo lo mejor. Que te vaya superb en la

29:53

nueva edición del Bookc de Devops que

29:55

arranca en octubre y nos vemos pronto,

29:59

seguro. En alguna seguro que sí. Pues

30:01

muchas gracias. Gracias, Minu. Gracias a

30:03

todos por estar ahí hasta el final.

30:05

>> Muchas gracias. Venga, amigos, nos

30:07

vemos. Cuídense. Hasta luego. Chao.

Video Information

YouTube ID: YgHOhPalas0
Added: Jul 31, 2025
Last Updated: 7 months ago