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)
que hoy traemos a una invitada,
una experta de la materia para hablar de
contenedores con Docker. Es Gisela
Torres, trabaja en Microsoft y le vamos
a dar la bienvenida para que se presente
ella misma y nos cuente más sobre a qué
se dedica. Hola, Gisela, ¿cómo estás?
Bienvenida.
>> Hola, buenas a todos. ¿Qué tal? Pues
muchas gracias por invitarme, muchas
gracias por esta bienvenida. Vamos, no
puedo estar más contenta y más nerviosa
a la vez, así que
>> nada, ya verás.
>> Enamente bien somos, o sea, gente muy
buena. Mira, ya te están diciendo
bienvenida. Bienvenida, Gisela. Hola. O
sea, que nada, la gente está buenas,
Gisela, buenas, buenas. Todo el mundo ya
te está dando aquí. El placer es
nuestro, están diciendo por aquí. Así
que nada, bienvenida. Muchas gracias por
pasarte. Gisela, comentaba que trabajas
en Microsoft, estás en Microsoft
trabajando. Me comentabas fuera del
directo que llevabas más de 10 años en
Microsoft.
>> Sí, de hecho estábamos también
comentando que éramos de la misma
quinta, o sea, que llevo 18 añitos
jugando con estas cosas en general, no
solo con contenedores obviamente no,
pero con con contenedores unos poquitos
menos, pero sí, sí. Y hace ya unos
cuantitos años fui MVP de Windows Azure,
cuando ni siquiera era Microsoft Azure,
en el año 2010 y luego ya pues pasé a
los poquitos años a a Microsoft,
>> siempre en el área de desarrollo
orientada pues a hacer aplicaciones en
el cloud y ahora en un área que tiene
que ver con la experiencia del
desarrollador, o sea, que qué mejor
sitio para para estar hoy en día. Y
claro, pues hay que hablar de IA, hay
que hablar de contenedores y hay que
hablar de GitHub y hay que hablar de de
todo lo que tenemos en esta casa. Así
que vamos, eh super contenta de estar
aquí y además desde hace 4 o 5 años
también soy profesora del bootc de Bobs
de Lemon Code, que es uno de los motivos
por los cuales estoy aquí para contaros
un poquito de forma supercprimida y
super reducida las cosas que vemos en
este en este book. Totalmente. De hecho,
mira, os voy a os voy a enseñar mientras
ya que ha dicho lo del bootcam. Ay, esto
no, esto quitar pum y esto. Ay, ¿por qué
no me aparece ahora? Ahora que se había
vuelto loco. Aquí lo tenemos. El tema es
que Gisela es una de las profesoras, una
de las docentes que tienen el Book and
DevOps de Lemon Code, que va a empezar
en octubre. Es una formación que es en
remoto, que es 100% flexible. tenéis
diferentes formas y modalidades de poder
asistir y hacer todo el proceso. Las
tecnologías como es de DevOPS, pues hoy
vamos a hablar de contenedores con
Docker, pero que en el bootcam hablan
desde Docker, cubernetes, Gijap Action,
Jenkin, Terraford, Ansiball, Grafana,
Promeceus, Asura, WS, Ax, Hicks, Gooks y
todo lo que haya todo lo que haya de
Bucandops que os podáis imaginar. Me
imagino Gisela, que aparte de Docker,
Asur también lo das tú. Sí, también ahí
tocamos todos los palos. Sí, sí.
>> Buenísimo. Pues mira, entre los docentes
tenemos aquí a Yolanda, Gisela Torres,
que es ella, Eduard Tomás, tenemos a
Jaime Salas, Santiago Camargo y Joaquín
Trillo. Empieza, si no me equivoco, es
el, mira, no me equivoco, pero pone aquí
6 de octubre, son 6 meses de duración,
96 horas de docencia y trabajo que
tenéis que llevaros y mover vuestras
manitas un poquito, serían 192 horas.
Una cosa importante, si estáis
interesados, que os voy a dejar el
enlace en el chat para la gente que le
interese, que sepáis que si le decís que
venís de parte no solo mía, sino de
Gisela, dice, es que he visto la pedazo
de masterclass que ha dado Gisela y me
ha encantado. Bueno, pues os hacen un
10% de descuento sobre este precio. Si
estáis en situación de desempleo, tenéis
ingresos netos inferiores a 15,500 €
también hay un descuento en la
matrícula, así que se lo comentáis,
¿vale? que le decís, "Oye, mira, yo es
que estoy en desempleo, estoy en el paro
y tal y he visto a Gisel, además me ha
encantado lo que ha explicado y yo me
quiero apuntar, pero estoy en esta
situación." Bueno, hablad con ellos
porque la verdad es que hay gente que da
muchas facilidades y que y que,
son seis meses, eh, también que es medio
año, que eso es increíble. Mucha gente
dice, "No, voy a aprender esto en dos
semanas." Bueno, bueno, o sea, solo lo
de Docker que hoy vas a explicar, que va
a ser menos de, no sé, una hora y media
en el curso, si no me equivoco, estás un
mes entero para hablar de Docker. un mes
machacando a todos, contando todo,
bueno, todo más de lo que vamos a ver
aquí, pero en resumidas cuentas, sí, sí,
un mes, eh, viendo con cariño cada una
de las cosas que deberías de saber para
vivir supertranquilo, supertranquila,
trabajando con Docker y luego para
posteriormente que mi compañero Edward,
que también es profe, como hemos visto,
que os dé toda la caña que haga falta
con con cubernetes, ¿no? Entonces, sí,
sí, o sea, es espectacular el el tiempo
que le dedicamos a cada cosa para que
con cariño lo vayamos acertando.
>> Espectacular. Claro, imagínate un mes,
un mes de docker, es que acabas, vamos,
que te conviertes casi en ballena,
¿sabes? Desde de tanto que le das
cañita. O sea, tremendo. Pues si te
parece, Gisela, pues nada, tú te pones
ahí modo piloto. Yo me voy a poner
Gijacopilot. Modo modo guijacilot. No,
pero que si mira, veo que tienes aquí tu
pantalla que ya la estás la tenemos por
aquí. A ver si nos ponemos aquí. P ahí,
espérate, tengo que quitar la mía. Y
ponemos la tuya. Pam. Y ya tienes aquí
tu pantallita. Así que nada, yo te iré
haciendo preguntas que la gente pues va
a tener en el chat, va a tener este tipo
de cosas. Le recordaremos después lo del
bootcamp porque seguro que hay gente que
llega tarde y tal, pero pero nada, te
cedo un poco los mandos para que nos
expliques sobre Docker, Gisela.
Pues perfecto, muchas gracias, Midu.
Pues vamos a empezar eh desde los
inicios y sobre todo cuando yo empiezo a
trabajar con cualquier tecnología, lo
primero que me pregunto es el por qué, o
sea, ¿por qué necesito aprender
contenedores? ¿Por qué necesito
aprender, en este caso Docker, no? Y el
por qué en este caso yo hace años me lo
cuestionaba también, no tenía muy claro
si era algo más de IT, era algo más de
desarrollo y entonces pues todavía al
principio iba un poco al ralentí, pero
de hace ya unos eh cinco o 6 años pues
dice, "Venga, vamos a dar una
oportunidad a esto que parece que está
cogiendo tirón, ¿no? Y principalmente
los contenedores no van a ser mejores
personas, mejores desarrolladores,
porque vamos a conseguir que nuestras
aplicaciones tengan únicamente lo que
necesitan para poder ejecutarse no solo
en tu máquina, sino en cualquier
ordenador del mundo donde tengamos pues
un motor que sepa ejecutar contenedores.
Con lo cual vamos a conseguir que vamos
a poder reducir eh todo lo que
potencialmente pues puede hacer que
nuestra aplicación también sea
vulnerable y luego también que nuestra
aplicación la haga lo más rápida
posible, siempre y cuando sigan las
buenas prácticas, por supuesto, ¿no?
Pero el objetivo principal es que en mi
máquina funciona, ya no va a ser una
excusa porque vamos a conseguir
utilizando estas imágenes de Docker o
contenedores en general, pues que
podamos tener nuestra aplicación
altamente escalable, super eh rápida, eh
reduciendo el espacio para poder ser
atacada a través de vulnerabilidades y
luego, por supuesto, pues luego ponerlo
en orquestadores como pueda ser un
cubernetes, ¿no? Y luego super
importante y esto si me da tiempo, que
no sé si me dará tiempo, lo veremos
después. vamos a poder incluso conerizar
nuestros entornos de desarrollo
utilizando estas tecnologías de una
forma superchula que va a hacer que ni
siquiera tengas que instalarte nada en
tu local para poder desarrollar en tu
día a día. Con lo cual, vamos, yo lo uso
todos los días y me parece brutal, ¿no?
El mundo de los de containers, por
ejemplo.
Así que si te he convencido, eh,
>> a mí me ha convencido. Yo, Gisela, estoy
dentrísimo. Yo estoy dentrísimo. Yo
estoy dentrísimo. Yo no sé la gente. Yo
veo creo que la gente está dentrísimo
también, ¿eh? Dice, ya dice aquí la
gente dice, "Qué genial el aporte de
Gisela, o sea, ya la gente está dentro,
o sea, que dale dale."
>> Pues hala, una vez que ya hemos con
hecho con el Pokémon Zaska, venga,
ahora, ¿qué necesito para empezar con
los contenedores? Pues en este caso lo
vamos a centrar en Docker, aunque sí que
es cierto que contenedores no es igual a
Docker. Docker es una empresa y a la vez
un software que lo que nos ha permitido
es meternos en el mundo de los
contenedores, sobre todo a los
desarrolladores, de una forma
superfácil. y nos ha dado unas
herramientas que nos permite que el
empezar a trabajar con contenedor es
algo que si empiezas luego a rascar ves
que hace cosas que son muy complejas a
nivel de redes, a nivel de
almacenamiento, a nivel de DNS,
etcétera, pero que para ti es totalmente
transparente, con lo cual no te hace
falta averiguar las tripas para empezar
a trabajar dentro de este mundo. Luego
ya si quieres, pues cuando ya vas
cogiendo un poquito más de soltura,
puedes ir eh más al detalle, ¿no? Pero
para un desarrollador empezar con Docker
es sersencillo. Así que lo primero que
necesito y a día de hoy se puede
instalar tanto en Windows como en Mac
como en Linux es Docker Desktop, que es
un software que proporciona la compañía,
que aquí, como veis, cuando me pongo
encima del eh del botón de descargar eh
Docker Desktop, pues lo lo tenemos para
Mac, para Intel, eh también en Mac, en
este caso, mi ordenador, bueno, mi Mac
es un es un Intel, ¿no?, que ya es
viejito, eh, Windows e incluso Linux.
¿Por qué va mejor en Linux que en Mac en
Windows? Pues la realidad es que para
que pueda funcionar tanto en Mac como en
Windows, este Docker Desktop lo que hace
es que instala una máquina virtual que
para ti también va a ser transparente.
Aquí todo es transparente y entonces
pues puede ser que el delay sea un
poquito eh más notable, ¿no? Pero en el
caso de Linux lo que tienes es que lo
ejecutas directamente sobre tu kernel de
Linux, con lo cual eh en el caso de
Windows y Max tiene que simularlo, pero
en el caso de Linux no. Por eso es uno
de los motivos en los que suele ir un
poquito mejor. Pero a mí me pasa como
amigu, yo normalmente trabajo en Mac y
trabajo en Windows, pero Linux es verdad
que no lo trabajo tanto, pero bueno, sí
que es cierto que este es el motivo por
el cual va un poquito más rápido, ¿no?
>> Yo, en mi caso, ya lo tengo instalado.
Bueno, vamos a perder tiempo en eso que
no tiene mucho sentido aquí, pero sí que
quería recalcar una cosa de lo que ha
comentado antes Midu y que también han
comentado durante eh la intro, ¿no?, que
era como ostras, y sigue consumiendo
tanto como consumía cuando me lo instalé
para probar y automáticamente lo borré.
Pues lo cierto es que no. Y si os fijáis
en la parte superior de mi pantalla,
aquí tengo Docker esperando a que yo
empiece a trabajar con él y tiene como
una hojita.
>> Esa hojita lo que significa es que ahora
está como en un modo suspensión para no
estar comiéndose los recursos de mi
máquina si no estoy utilizando realmente
Docker. En ese momento, cuando ya
empieza a hacer cositas y empieza a
ejecutar contenedores, la primera vez le
costará un pelín, pero luego ya empezará
a funcionar y entonces ya ahí se
empezará a comerse los recursos de mi
máquina. Pero bueno, es otro tema.
>> Pero esto es nuevo, ¿eh? Esto es nuevo.
Esto antes no estaba, o sea, antes
estaba ahí siempre preparado, ya
comiéndose todos los recursos de tu
máquina. ballena. Ya lo podía
haber puesto esto antes.
ballena. Así están de gorditas.
Pero sí, si te fijas aquí en la parte
inferior aparece que ese resource a mode
y es lo puedes deshabilitar si quieres,
pero justamente es para que no se coma
todos los recursos si realmente no los
estás utilizando, ¿no? Con lo cual pues
en ese sentido super bien.
>> Buo,
>> ¿vale? Imaginaros, ya tengo instalado
Docker Desktop, estupendo, maravilloso
en mi Windows, en mi Linux y en mi Mac.
¿Y ahora qué hago con esto? Lo primero
por lo que empiezas siempre es, vale,
vamos a utilizar una imagen que ya esté
construida, porque yo para poder
ejecutar un contenedor, lo primero que
necesito tener es una imagen, una
plantilla como si fuera una plantilla de
una máquina virtual en pequeñito donde
va a tener pues todo lo que necesita
para ejecutar lo que yo necesite
ejecutar. ¿Y qué puedo ejecutar? Pues a
día de hoy prácticamente cualquier cosa.
La forma más sencilla de saber todo lo
que hay es ir a día de hoy, que esto
antes tampoco estaba, a DockerHub, que
ahora lo han integrado como parte de
Docker Dexto. Y aquí, como veis, hay una
sección específica de, vamos a ver si lo
puedo hacer un poquito más grande sin
ponerme en el modo este ten, que no
quiero zen. Vale, aquí, como veis, pues
tengo incluso una sección ya para
empezar a hablar de machine learning y
inteligencia artificial. Luego tengo
pues cuáles son eh las bases de datos
más descargadas o temas de
monitorización, herramientas para el
desarrollador. Y aquí en realidad es
cierto que tiene un poco el look
andfield que tiene la web, pero si nos
vamos rápidamente a la web, vamos a
hacerlo
aquí, ¿vale? Aquí vais a ver que si yo
voy a hub.docker.com,
Pues aquí tenemos una web que es mucho
más rica, que tiene un montón de
categorías y aquí nos podemos hacer un
poquito una idea de todo lo que podemos
eh descargar o todo lo que podemos
utilizar para crear contenedores, ¿no?
Así que vamos a empezar por el principio
y vamos a ejecutar nuestro primer
contenedor. Y por ahora vamos a seguir
utilizando Docker Desktop, pues para
poder ejecutarlos porque a día de hoy es
que ya está todo como autocenido, con lo
cual aquí tengo un terminal integrado
donde yo puedo empezar a trabajar y yo
ya no tengo que irme a ningún sitio.
>> Ostras, una cosa que antes nos daba
mucho miedo, Gisela, es que Docker, pues
mucha gente decía, "Ah, es que tienes
que utilizar la línea de comandos y
tienes que instalarte pues la línea de
comandos de Docker, Ducker Pool, Docker
Pool, todo esto, ¿no? levantar y veo con
Docker Desktop ya no es no sería tan
necesario para que la gente no tenga
miedo y sea mucho más fácil o aún así
recomiendas o vamos a ver terminal.
>> Vamos a ver, bueno, vamos a cerrar el
terminal mejor
>> para no asustar.
>> Vamos a Docker sí. ¿Por qué he ido
directamente al terminal? Porque aunque
bien es cierto que a través de este
Dockerhub podemos buscar cualquier
imagen y decirle ejecútala,
>> pues va a funcionar. La realidad es que
el día de mañana si terminas trabajando
con contenedores es raro que vayas a
crear un contenedor desde aquí porque es
verdad que te da muy poquitas opciones,
pero vamos a hacerlo de esa de esa forma
para que también lo veáis, aunque no
vais a ver realmente de primeras cuál es
el comando, pero lo vamos a ver
justamente después, ¿no? Entonces,
imaginaros que digo, "Vale, me voy a eh
crear un servidor web, ¿vale? Nada raro,
vamos a buscar por Enginex. Y aquí, como
veis, me aparecen de Ginex pues unas
cuantas imágenes, ¿no? Pero me voy a
fiar por las más descargadas, ¿no? Las
que tiene más de un billón descargada,
¿no? Como puede ser este en Ginex. Y
cuando entro aquí, pues voy a ver un
montón de información que de primeras no
tengo ni idea de qué de qué es, pero
bueno, pues más adelante cuando ya
empiezas a conocer un poquito cómo
funciona esto de las imágenes, pues y
además luego después veremos, pues vamos
a ver qué trata pues por ejemplo todos
estos tags, que es un Docker F,
etcétera, etcétera, ¿no? Pero si es una
imagen oficial, como es este caso, que
lo pone justamente en la parte superior,
porque en Dockerhub y en otros sitios
cualquier pata puede subir
cualquier imagen con así que cuidadito
con lo que descargamos.
cuando es una imagen oficial o está
sponsorizada por Docker, pues va a tener
una documentación pues bastante rica que
te va a dar información de cómo funciona
esto, ¿no?
Si no quiero tocar ni un solo comando y
decir, "Vale, yo quiero un enginex a
funcionar", podría hacer clic en este
botón de run que tengo en la parte
superior. Esto me va a abrir una
ventanita donde le voy a poder bautizar
mi contenedor cuando se descargue la
imagen, que aquí, como veis en la parte
inferior dice que se está haciendo un
pully. Esto básicamente lo que está
haciendo es ir a Dockerhub, se está
descargando esta imagen, la tiene que
tener en la máquina local para poder
ejecutar un contenedor y en el momento
que ya la tiene dice, "Vale, dime el
nombre del contenedor y dime por qué
puerto quieres escuchar." No tengo ni
idea de qué significa todo esto. Voy a
hacer clic directamente en RAM. Y cuando
esto ocurre, aquí, como podéis ver, ya
estoy enganchada directamente a la
consola o donde se está ejecutando, pues
en este caso está en Ginex, tengo un
montón de pestañitas, por supuesto, y si
me voy a la sección de contenedores,
aquí vais a ver que ya tengo mi primer
contenedor ejecutándose desde hace 15
segundos sin haber tocado ni una sola
línea. Hm.
>> Podría acceder a este contenedor de
alguna forma porque dice, bueno, si es
un Enginex en algún sitio, o sea, es
decir, yo lo que esperaría cuando
empieza a trabajar con Docker es que si
yo, por ejemplo, ahora me voy al típico
local host, pues aquí hubiera algo. O un
local host eh 8080, por ejemplo, pues
que hubiera, uy, este está cacheado,
habá algo, pero no lo hay. Vale, pues
pero la realidad es que así como tal yo
no puedo acceder a los contenedores
de esta forma sin hacer más que un
docker run, ¿no? Como es en este caso
hacer clic en un ran. ¿Qué es lo que
tengo que hacer? Pues como realmente
todos esos contenedores están aislados,
es decir, no están conectados
directamente con los puertos que pueda
tener mi máquina disponibles, etcétera,
etcétera, lo que tengo que hacer es
mapearlos para que a través de un
proceso de lo que se llama Natin, que
seguramente conoceréis incluso por el
vuestro router de vuestra casa, vamos a
poder decirle, "Vale, he creado un
contenedor, en este caso con Enginex,
utiliza mi puerto, me lo invento 8080
para poder acceder al puerto 80 que este
contenedor tiene a la escucha, ¿no? que
sería el típico puerto que tendríamos un
servidor web si no hemos configurado el
https, ¿no? Por ejemplo. Así que ahora
que ya sabemos que no podemos entrar
directamente a este contenedor así lo
voy a eliminar,
¿vale? Y vamos a hacerlo de nuevo y
vamos a buscar por SNGx,
¿vale? Y vamos a decirle run, pero ahora
ha sido supera automático porque en el
momento que tengo descargada la imagen
ya no le hace falta descargarla de
nuevo. Y vamos a poner aquí un 8080.
Vamos a hacer clic en run. Y ahora esto
es exactamente igual, pero si os fijáis
en la parte superior aquí me dice que
tengo un 8080 2.80. Esto lo que
significa es que de mi máquina local el
puerto 8080 se ha mapeado al puerto 80
de este contenedor. Si hago clic
directamente desde aquí, ahora ya sí
tengo mi Enginex
>> eh accesible desde mi máquina. Vale, si
ya tengo este Enginex, este contenedor
en concreto accesibles del puerto 8080
de mi máquina, si yo ahora intento
crearme otro contenedor que quiera
exponer algo a través de mi puerto 8080,
ya no me va a dejar porque en este caso
pues ya está enganchado a este
contenedor que me acabo de crear y no lo
digo, lo hago. Como dice Goyo Jiménez,
un cómico de aquí de España, le decimos
que ran y aquí te dice, "No, no, este ya
está, ya se está utilizando, no lo
puedes lanzar."
>> Vale,
>> esto serían los basic de los basic sin
utilizar el terminal,
>> ¿vale? Para recapitular, para la gente
que le quede clarísimo, un contenedor de
Docker y para hacer una analogía que
entiende todo el mundo con GitHub, un
contenedor de Docker es como un
repositorio de Gith, pero en vez de
código fuente, pues ya tiene una
aplicación, en este caso, pues tiene sus
dependencias, una aplicación entera
lista para ejecutar con la configuración
del sistema base, está todo empaquetado.
Cuando haces el Docker Pool es como
cuando haces un git pool es como lo
mismo, pero ya es una caja preparada
desde este registro que es el Docker Hub
que hemos visto, donde tienes un montón
de cajitas preparadas y lo no necesita
ni compilar ni configurar nada. Como
hemos visto para el tema de Enginex no
ha tenido que compilar nada, sino que ya
estado todo preparado. Simplemente ha
ejecutado el contenedor, le ha dicho en
qué puerto lo tenía que ejecutar y ya
está. Y lo último que ha mapeado el
puerto de su máquina con el puerto
interior que tendría el contenedor,
porque dentro pues como tiene un sistema
propio, pues dice mi puerto que es el
80, lo voy a mapear con el de tu máquina
que es el 8080. ha hecho como ese ese
puentecito, ¿no? O sea, que un poco así
para que la gente rápidamente
se para que no se nos pierdan y lo
entiendan perfectamente. Simplificado,
eh, Gisela lo ha lo ha explicado mucho
mejor, pero por si alguien ha llegado
tarde, para que no se pierda nada.
Bueno, de todas formas, vamos, gracias
Midu por la por el recap, porque es
verdad que es mucha información, pero sé
de sobra que vais a tener este directo
luego para que lo podáis revisitar y
además os voy a compartir un repo demos
que os voy a enseñar hoy, o sea, que no
os preocupéis porque vais a tener todo
esto también empaquetado a en este caso
sí en GitHub para que lo hacéis ese
Gitol o ese Git Clone, ¿no? Y y a
funcionar, o sea, que que todo esto lo
vais a tener para que luego podáis
cacharrear y lo podáis usar en vuestra
casa si queréis, ¿no? Y efectivamente,
como decía Midu, que es super
importante, es que cada uno de estos
contenedores, digamos que es como si
fuera un pequeño ordenador en sí mismo,
donde tienes, pues en este caso uno, una
serie de logs, un proceso que se está
ejecutando, pero si me voy, por ejemplo,
a la sección de files, es que tiene su
propio sistema de ficheros y tiene toda
eh eh la información que nosotros en
este caso pues es un ejemplo muy básico,
ahora veremos un poquito más complejo,
pero aquí, como veis, tengo mi propio
sistema de ficheros metido dentro de
este contenedor, el cual puedo alterar,
puedo añadir nuevos archivos, puedo
hacer un montón de cosas con ello, ¿no?
Incluso a día de hoy hay una sección de
stats para saber cuánto está comiendo
este contenedor de mi de mi máquina. O
sea, que brutal. También os digo que
esta máquina pues tiene bastante chicha,
entonces con lo cual aunque esté vieja
tiene unos cuantos gigas de más,
entonces pues va todo bastante bastante
guay, ¿no?
Vale, pues esto sería eh la explicación
básica. Ahora sí vamos a remangarnos y
nos vamos a ir al terminal para que
veáis realmente cómo podemos hacer esto
mismo superrápido. Y ahora vamos a ver
más ejemplos porque el tiempo el tiempo
corre. Tampoco os voy a, pero bueno,
vamos a intentar ver cositas chulas
también al final de ella, ¿no? Entonces,
voy a dejar esta pantalla. A mí me mola
mogollón hacerlo directamente desde
aquí, desde terminal porque así puedo
ver lo que pasa en tiempo real. Si ahora
vuelvo a abrir el terminal, os voy a
enseñar los dos ejemplos que he hecho
utilizando comandos. El primero de
ellos, no he puesto ningún puerto. Yo
solamente sé que quiero ejecutar un
enginex en un contenedor. Así que lo
único que tengo que hacer para que veáis
lo sencillo que es docker run y poner
enginex, el nombre de la imagen que
quiero utilizar. Y cuando pulse el
intro, en este caso va a ser superrápido
porque ya tengo la imagen descargada y
aquí, como veis, ya tengo ese contenedor
justamente en la parte superior con un
nombre gracioso que Docker los bautiza
como quiere si no le pones nada, ¿no? Y
pues efectivamente, en este caso, como
no le he puesto eh qué versión de este
enginex quiero, pues simplemente pone
enginex y está, pero es la misma versión
que la que la de arriba. Pero en este
caso yo no le he dicho ningún puerto,
con lo cual si quiero hacer lo mismo que
hemos hecho al final, es decir, vale,
quiero un engine, pero quiero poder
acceder a él. Podría hacer control C.
Paro. Como veis aquí arriba, este se
muere, no se para, pero sigue estando
ahí. Ojo, vamos a limpiar pantalla.
>> Puedes hacer más grande la letra de la
terminal. No sé si se podrá.
>> A ver. Oh, pues sí.
>> Perfecto.
>> Así mejor.
>> Un poquito más si puede ser.
>> A ver.
Ay, no me deja más.
>> Ah, ha dicho este es el límite hasta
aquí. O sea,
>> se ha congelado.
>> Hemos hemos roto Docker. Hemos roto
Docker. Mira,
>> hemos roto doer.
>> No pasa nada, no pasa nada. Si que sí,
sí, lo hemos dejado tostadísimo.
>> A ver si vuelve.
>> No, no creo que vuelva. Muy bien. Pues
esto, esto es lo que se habla muchas
veces de Docker.
Hemos roto Docker. ¿Qué os parece? Eh,
perdona, eh, la culpa es mía porque ost
un cachote. Ostras, ahora
>> se ha vuelto loco. Ha dicho,
pues ahora te voy a hacer todos los zoom
de golpe para que veas. Vale, vale, pues
ya está, ya se ve bien. No toquemos más
el zoom.
>> Vale, a ver. Pues mira, se ha vuelto a
morir.
>> No, otra vez la madre.
>> Ahora ya está, ya está. Vale, ya está.
No hacemos más zoom. Está,
>> no hacemos más. Vale, bueno, pues os voy
a enseñar rápidamente, aunque se ve un
poco regul Bueno, se no se queda
tostado. Espérate, lo voy a tener que
bajar.
>> Ostras, será por culpa del zoom. Está lo
van a tener que reescribir en Rust, ¿eh?
El Docker de esto.
>> Sí, sí, total. Oh, anda, se le está
yendo la olla. A ver, a ver si ahora a
ver, escribo.
>> No, de momento se lo sigue pensando. Ahí
está. A ver. Eh, vale, parece que ya no
lo tengos mal.
>> Vale, parece. Sí,
>> vale, ya está. Ya vale,
>> vale, no pasa nada porque ahora en 3
segundos me voy a ir a Visual Studio
Code, pero bueno, de momento vamos a
lanzar un par de comanditos aquí,
dejamos a Docker de estos que descanse,
¿vale? Pues lo mismo que habíamos hecho,
como os decía, pues aquí hemos ejecutado
ese docen run. Como he hecho un control
C, pues automáticamente se ha parado ese
contenedor, lo cual no significa que se
haya eliminado. Si quisiera eliminarlo,
pues tendría que hacer un docker eh RM y
o bien el nombre de este
contenedor aquí arriba
>> o incluso pues un ID que le que le
facilita que te facilita Docker, ¿no?
Cuando cuando crea un contenedor. Uy,
pues parece que aún así Bueno, sí va con
un poco de delay, ¿no? O lo veo solo yo,
¿no? Va con un poco de delay, yo creo.
>> Sí, va con un poco de delay. H, qué
fuerte que se qué fuerte que se rompa
Docker Desktop solo por hacer zoom, ¿eh?
O sea, es es que, a ver, tengo que decir
que Docker Desktop de forma histórica
siempre ha sido un programa bastante
pesadito que le ha costado. Sí que ha
habido bastantes mejoras últimamente,
pero bueno, todavía todavía le cuesta le
cuesta lo suyo.
>> Sí, sí, sí, le cuesta lo suyo. A ver,
bueno, vamos a hacer un último intento
más y si no seguimos para adelante que
que tampoco tampoco pasa nada. A ver si
puedo.
Vamos a crear uno nuevo a ver si le
gusta más
>> otraot con otra terminal. A lo mejor ha
sido la terminal que se ha quedado
tostada.
>> Dicen, "Docker se queda colgado en
macos." Dice, eh, ¿qué quedará para mi
PC de 8 GB del 2015? No, amigo, para tu
ordenador del 2015 de 8 GB de RAM,
Docker lo esquiva directamente. No es
que intenta ejecutarse, es que lo
esquiva. Ve tu ordenador y se lo salta.
dice, "No, no, yo esto aquí paso." Eh,
eh, pues no sé.
>> Vamos a irnos a Studio Code.
>> Sí, pues lo hacemos Studio Code que ya
está. Si no, no sé si intentar cerrar
del todo Docker y
>> a ver si vamos a hacer el típico.
es que le cuesta la terminal,
¿eh? O sea, que fuerte.
>> Sí, sí, es que se ha quedado
tostadísimo. Qué fuerte con el
>> Claro, nunca había hecho tanto tanto
tanto zoom. Pero vamos, que esta máquina
tiene 64 GB de RAM. No, no, no, para
nada.
>> Perdón, perdón. Es que es que yo es que
tengo un historial de romper cosas,
entonces la gente está haciendo bromas
con eso de es que el Midu siempre se lo
carga y es verdad, soy yo. Perdón,
>> perdón. Eh, pues nada.
>> Ah, qué mal, no pasa nada.
>> Eno Ste Code. Dice, "¿Qué requerimientos
pide?" Yo te los busco mientras eh
desktop. A ver, normalmente de
requerimientos no es que haya unos
requerimientos muy bestias, el problema
es que te funcione bien. Ese es el tema.
Mira, sistema de requerimientos te dice
aquí, bueno, aparte que tienes que tener
Windows 11, en el caso Windows 11 de 64
bits, Windows 10 dice como prerequisitos
4 GB de memoria RAM, 64 bits, o sea,
claro, normal, pero nada. ¿Y qué?
¿Funciona ya?
>> Ahora parece que sí.
>> Sí, vale, pues ya está. Vamos. Sí,
perfecto, perfecto. No hagamos zoom, no
hagamos nada.
>> Vale, no hagamos zoom. O sea, que ya
sabéis, no se puede hacer zoom que esto
se va todo a a tomar vientos. Bueno,
pues nada, solo un comando más docker
run para poder ejecutar enginex tal cual
sin nada más. Y si quisiera, por
ejemplo, definir pues qué puerto quiero
poner a la escucha, vamos a elegir otro
para que veáis que esto no es cartón
piedra. Pues lo único que tendríamos que
hacer sería menos publish o menos P,
¿vale?, que sería la forma más más
facilota y luego pues decirle, "Vale,
pues puerto 90 y luego pues el puerto
80." ¿Por qué sé que es el puerto 80?
Bueno, en este caso no es muy complicado
de averiguar porque al final como es un
servidor web y no tengo configurado ni
certificados ni nada, pues asumo que es
el puerto 80 por el que se está
escuchando. Pero todo esto cuando
hacemos una imagen de Docker, que ahora
veremos cómo cómo se hace esta parte,
pues este tipo de cosas vienen dadas,
¿no? Como parte de esa información y por
eso incluso cuando Docker Desktop se
descarga una imagen y le hace ese RAN,
pues ya sabe cuáles son los puertos a
los que se tiene que mapear, ¿no? Porque
esta es metadata de información que tú
vas a incluir como parte de tus
imágenes, ¿no? Y en este caso, pues
nada, podría poner enginex el nombre de
la imagen siempre al final y cuando
pulse, pues como veis aquí rápidamente
ya tengo este nuevo contenedor
ejecutándose y ahora pues en el puerto
9090 que lo tengo aquí.
Perfecto.
>> Sin tener que haber configurado un
enginex, que normalmente hay gente que
que ha perdido la cabeza intentándolo.
Eso es que ahora justamente vamos a
ailar también con ese escenario, ¿no? Yo
como desarrollador dice, "Vale, esto
está muy bien, pero este Engineés está
pelado, tiene como el típico Hello
Worldinex, pero a mí realmente esto pues
valerme valerme en el día a día no me
vale de mucho, ¿no? Así que lo que vamos
a hacer es bueno, pues echar un vistazo
a un repo que he preparado para
vosotros. donde vamos a ver aquí no
debería de tener problemas para hacer
zoom, así que
>> sí tenía miedo a preguntártelo, pero si
puedes hacer zoom
>> de aquí está bien o uy
>> así está perfecto. Ahí el otro, el otro
ahí ya, ahí perfecto.
>> Ahí dale. Vale, pues aquí esto va a ser
para vosotros, ¿eh? De hecho se llama.
>> No me lo puedo creer. Gisela, te hemos
dejado de escuchar.
>> No vengas.
>> Te hemos dejado de escuchar y además, de
verdad, no sé, no me lo puedo creer. El
zoom está maldito.
>> De verdad, te hemos dejado escuchar de
repente. O sea, se te ha se te ha ido la
voz. Soy yo, ¿no? Hola. Hola.
>> Sí, se escucha. A ver, habla un momento.
>> Sí, sí se escucha. Hola. Ojo, cantar.
Dice, "Yo la escucho." No, sí se
escucha. pues he sido yo que te
he dejado escuchar, pero además es en
Streamyard. Vale, vale. Pues,
qué raro soy yo. Oye, pero es raro
porque Streamyard, además no aparece. No
aparece. Vale, vale, pues voy a
refrescar a ver si te escucho. Vale. Qué
raro. Ostras. Vale, pues todo el mundo
te escucha menos yo. Superaro. Vale, ha
sido el zoom maldito. Ahora vengo a ver.
Venga,
mientras tanto os bailo un poco si
queréis hasta que vuelva Midu. Pero
bueno, lo que os estaba diciendo, pues
mientras que esperamos a que refresque,
¿no? Eh, este repo va a ser para
vosotros y para vosotras. Lo voy a
compartir en mi cuenta de GitHub. Como
veis, se llama Midblemon Code. Todavía
no podéis acceder a él para no hacer
spoiler. Hola. Ahora sí. No te preocupes
que lo arreglo. Vale, ahora sí que ahora
sí que te escucho. Ahora ya sí que te
escucho.
>> Vale, ya te escucho.
>> Oye, superraro, ¿eh? Porque encima en
Streamyard sale cuando la gente está
hablando y tal y había desaparecido tu
barra verde. Ahora ya te escucho. Nada,
perdón, eh, a todo el mundo.
>> Pas de todo, ¿no?
>> Está pasando de todo. Es increíble.
>> Sí, sí. Vale, pues venga, dale, galleta.
Perdón.
>> Todo se puede solucionar. Nada, nada.
Solo estaba comentando que este repo es
para todos los que nos están escuchando,
para los que vean luego en diferido, o
sea, que lo voy a compartir en mi cuenta
de GitHub para que lo tengáis. Se llama
Midudep eh guion lemon Code y bueno,
pues vamos a ver todas las demos, las
que os he contado y luego también las
que vamos a ver ahora. Espero que nos dé
tiempo a todas ellas, ¿no? Entonces,
bueno, ya hemos visto cómo poder
ejecutar un primer contenedor con
Enginex y también cómo exponer un puerto
para poder acceder al mismo, pero que la
realidad es que cuando yo empecé a
trabajar con todo esto de los
contenedores era, vale, pero mi
aplicación qué, ¿no? Y cómo hago que mi
aplicación realmente esté dentro de ese
contenedor, porque un engines así como
tal, eh, pues no me sirve de mucho, ¿no?
Entonces, lo que he hecho ha sido
crearme pues una pequeña aplicación con
TypeScript, que básicamente es una API,
no tiene mucho rollo, pero para es
suficientemente buena para que veáis que
tiene, bueno, pues que tiene cositas,
tiene controladores, tiene un
Middleware, tiene modelos, se conecta
con un es decir, que tiene
cositas que no vamos a entrar en
detalles en cómo está hecha la
aplicación porque no es lo importante,
pero que veáis que bueno pues que en
este caso va a ser pues una API que se
conecta a una base de datos, que sería
un caso pues bastante normal, ¿no?
Entonces, lo primero que yo haría y
siempre recomiendo a los alumnos de
Lemon es pues en primer lugar probar que
esto funciona en local, porque si no
funciona ni siquiera sin conerizar, te
puedes volver loco o loca intentando
contenerizar algo que ya de primeras
pues no funciona, ¿no? Entonces para
ello lo que vamos a hacer es pues de una
forma super rápida pues ejecutar pues el
típico npm install, ¿no?, que sería lo
que yo haría cuando empiezo eh con una
aplicación, ¿no?, que me he descargado
si es de otros o cuando estoy instalando
cositas o ya tengo ese package jason y
luego pues un MP en Room Deadp, ¿no? En
este caso que tengo pues un NOEMON que
me va a ayudar pues también a que mi
desarrollo sea pues un poquito más
sencillo, no que estar parándolo y
ejecutándolo y tal y oh, no funciona,
caso normal. ¿Por qué? porque está
esperando un y en este caso pues
todavía no tenemos un O sea, que
tendríamos dos opciones. O me instala lo
en mi máquina local con todo lo
que se conlleva, que a lo mejor yo no
tengo ni idea, o lo que puedo hacer pues
es montar un dentro de Docker.
Ahora que ya sabemos Docker y sabemos
cómo utilizar las imágenes, pues hay una
imagen, vamos a limpiar pantalla para
que se vea más claro, que me permite
tener pues un en mi máquina local,
¿no? Para que no perdamos mucho más
tiempo, os voy a pegar el comandito que
nos haría falta para ejecutar este
módulo y ahora os lo explico. Y aquí
pues es un poquito más evolucionado de
lo que hemos hecho hasta ahora, pero lo
voy a explicar rápidamente. Docker run,
exactamente igual que hemos hecho con
ese enginex. En este caso sí que le voy
a poner un nombre, que es este eh
y le voy a decir que voy a exponer por
el puerto 2707, que es el puerto por el
que normalmente pues un eh está
escuchando, ¿no? Tanto eh internamente
como el que quiero exponer. Y luego,
bueno, pues aquí una user y una
password, no os preocupéis que esto al
final es algo que se va a ejecutar en mi
máquina local y ya está. Y este - D
básicamente lo que me va a permitir es
que cuando yo ejecute este contenedor no
se quede mi terminal enganchado a loss
del contenedor, sino que vuelva a
recuperar ese terminal para seguir
escribiendo comandos, ¿no? Para no tener
que estar abriendo un terminal cada vez
que ejecuto un contenedor. Y es el
nombre de la imagen. Así que si pulso el
intro, lo que me devuelve es un ID. Y
aquí esto espero que no se rompa. Eh,
pues aquí vais a ver que tengo ese
ejecutándose sin problemas. puesto por
el puerto 27017
y de hecho un comando más, si quiero ver
esto desde el terminal, pues haciendo un
doc podría ver todos los que se están
ejecutando hasta ahora, ¿no? Que ahora
mismo tengo un par de ellos y si
quisiera ver todos incluso los que están
parados pues poniendo un menos a que es
de all pues vería todo, que ahora como
bueno, como está tan grande pues se ve
ahí todo ahí un poco raro, pero para que
los tengáis también, ¿no? Vale, pues
ahora en teoría ya tengo un
ejecutándose, así que podría hacer otra
vez ese empieo
conerizado, pero tenemos un con
lo cual ya puedo empezar a utilizar mi
aplicación que yo estoy desarrollando
con dependencias ahora ya conerizadas
porque tengo imágenes que me lo van a
permitir, ¿no? Y en este caso eh, como
os decía, es una API, no tiene mucho
rollo, ¿vale? Y ahora mismo pues está
pelada, es decir, no tiene absolutamente
nada. Según API Heroes, pues aquí no hay
nada, pero si queréis rellenarla con
cositas, yo en mi caso me encanta
siempre hacer demos con héroes, pues
todo va de héroes. Así que aquí os he
dejado este archivo que lo que hace es
utilizar una extensión de Visual Studio
Code que se llama Rescen, que te permite
eh guardar como código peticiones HTTP,
con lo cual pues mola porque le vas
haciendo clic aquí en Sen Request y
directamente pues te permite hacer las
peticiones sin tener que ir a hacer un
cour ni cosas un poquito más elaboradas
y por ejemplo pues añadir un Spiderman,
eh añadir un Batman,
¿vale? Añadir más cositas, pues un Iron
Man, ¿no? Lo que queramos. Y cuando
vamos otra vez, por ejemplo, al
navegador, que se ve un poquito más
claro, vamos a hacerlo.
A ver, ta.
Pues aquí veis que está todo sin
problemas funcionando. Y esto realmente
se está guardando en una base de datos,
en este caso que está en un
contenedor de Docker. Es decir, que yo
mañana tengo que dejar este proyecto o
no estoy trabajando en eso porque ya no
me interesa nada más. Simplemente con
eliminar este contenedor de tengo
mi máquina limpia, que es lo que a mí
más me encanta de todo esto, ya no que
todo funcione aquí o allá, sino que
cuando yo cierre el chiringo, pues todo
esto se elimina y mi máquina sigue
limpia y no tengo ni un ni un SQL
Server, ni nada de nada, porque también
tenemos SQL Server si tenemos otro tipo
de bases de datos, es decir, que la que
necesites seguramente vas a tener una
imagen para ello. Vale, pues ya funciona
mi aplicación,
así que lo siguiente que voy a hacer es
pues contenerizarla. ¿Y cómo conerizo
esto? Pues para ello vamos a parar ahora
la ejecución. Lo que tenemos que hacer
es crear un archivito que se llama
Docker File, que es este que veis aquí,
que yo siempre digo que esto es la
receta que yo necesito para describir
cómo qué es lo que necesita mi
aplicación y cuáles son los pasos que
tengo que seguir para que la misma pues
se compile en el caso de que tenga que
compilar, que instale los módulos de
Node si los tiene que instalar. Es
decir, como si fuera la típica
documentación que le pasaríamos al
departamento de IT con todos los pasos
que hay que seguir para configurar mi
aplicación y el entorno que la rodea,
pues eso es un Docker file, ¿no?
Entonces, como veis, pues aquí además os
he dejado comentarios, pues para que
veáis que en este caso lo primero que
siempre se define es la imagen base que
voy a utilizar, que en este caso pues va
a ser una imagen con una distribución de
Linux que se llama el Pine, que es una
distribución super pequeñita que tiene
lo mínimo indispensable para que la
imagen sea pequeña y por lo tanto el
contenedor sea muy rápido y que ya tiene
con Node instalado, ¿vale? Así y con
Node 20 en este caso no, así ya me
aseguro que no tengo que instalar Node
ya utilizando esa imagen ya tengo todo
lo que necesito para esta aplicación en
concreto. Le digo dónde voy a guardar la
imagen, copio el pack Jason, ejecuto
pues ese npm install o C, en este caso
diciéndole que solo quiero las
dependencias para producción. Copio el
resto del contenido, puedo crear incluso
un usuario en concreto porque si no lo
hacemos se ejecutaría como root si by
default y eso no queremos, no es buena
práctica. Por eso tenemos aquí estas
líneas. Y luego pues simplemente
asignamos el usuario y aquí le decimos
pues cuáles son los puertos que se
exponen de este contenedor cuando creas
un contenedor utilizando esta imagen.
Este es el motivo por el cual sabemos
cuáles son los puertos que una imagen eh
está exponiendo hacia fuera y a los
cuales tú puedes mapear, ¿no? Y luego ya
por último, a través de esta instrucción
de aquí le decimos, "Oye, para cada vez
que crees un contenedor con esta imagen,
este es el comando que tienes que
ejecutar en el momento que este
contenedor se haya lanzado." Y en este
caso, pues el típico empie
dejar a mi API a la espera de que le
lleguen peticiones.
>> ¿Cómo hago? ¿Qué hago con esto ahora?
Sí, porque sí porque esto está muy bien,
que da las instrucciones, pero vale, las
instrucciones y además que están
comentadas que se agradece, pero claro,
ahora este manual de instrucciones que
parece una receta de cocina,
>> ¿cómo lo usamos?
>> Claro, ¿qué hacemos con esto? Pues
vamos. Bueno, podríamos hacer un poco de
trampa, pero quiero que os quedéis con
los basics. Luego para esto es como
cuando yo aprendí a conducir que iba con
el coche de marchas y luego ya eh
termina con Marbella y luego terminas
con un coche más guay. Pues aquí hay que
empezar un poco y ya no te preocupar, ya
no te preocupas de las marchas,
>> ¿vale? Porque yo podría decir aquí con
el botón derecho build image y ya está.
Pero como lo quiero enseñar guay,
>> vamos a abrir otra vez el terminal
>> para no hacer solo el clic, luego sepáis
que tenéis ahí el click, pero también
vais a ver que es sers sencillo estando
en el directorio donde se encuentra la
aplicación y en este caso el Docker
File, si ahora lo único que tendría que
hacer sería Docker Bill menos Tag o men
t, decirle qué nombre le quiero dar a la
imagen que voy a crear, que en este caso
va a ser Heroes Appi, luego decirle cuál
es el contexto que se va a utilizar para
crear esta imagen, que en este caso es
un punto y ahora os explico por qué. Y
básicamente esto lo que significa, y
aquí, como veis, ya se está haciendo el
proceso de creación de esta imagen que
ha sido superrápido. Lo que le estoy
diciendo es, oye, estoy en el directorio
app, quiero crear una imagen con el
Docker File que tiene ese nombre que se
encuentra en este directorio. Utiliza
como contexto, como punto de referencia
en el sitio donde me encuentro, pues
para que cuando le diga que quiero
copiar archivos, no te vayas a otro
sitio, que es que están en el mismo
sitio donde me encuentro. Pero podría
darse el caso en el que los archivos que
tenemos que recuperar pues estén en otro
directorio o que esté invocando este
Dockerville desde otro sitio. Entonces
el comando sería un poquito más
complejo, ¿no? Pero la forma sencilla
simplemente es donde tengo todos los
chismes, ahí me planto, le digo
Dockerville, le digo cuál es el nombre
de la imagen y como veis en este caso
superrápido ya la ha generado sin ningún
problema. O sea, ha detectado
automáticamente el Docker file. Ha
dicho, "Vale, ya he encontrado el Docker
file." No es que le tengas que pasar el
Docker file, sino que ha dicho, "Ah,
está aquí." Perfecto.
>> Claro, en este caso, porque estoy
siguiendo la convención.
Si quisiera llamarlo dockerfile.d,
dockerfile.pro, Dockerfile, lo que
quiera, porque le quiero poner otro
nombre, entonces sí que podría
utilizando el menos f indicarle pues
cuál es el nombre que le he dado fuera
de la convención, pero si lo hago todo
según dice el libro, pues simplemente
haciendo esto yo ya lo tendría listo,
¿no?
>> Vale. Y entonces ahora cualquier persona
esto, claro, esto ahora has creado este
paquete que es como el paquete que antes
has utilizado de Enginex y otra persona
podría descargarse este paquete,
ejecutarlo en su máquina y ya está y
tendría todo el código y tal como dentro
de este paquete y debería funcionarle,
pero claro, si tenías la dependencia de
>> Claro, aquí pasan varias cosas. Por un
lado, eh, esta imagen todavía. Uy, va,
que me he ido para arriba, ¿no? Que para
arriba, abajo. A ver, aquí vamos a
limpiar pantalla. O sea, esta imagen
ahora mismo, si yo hago un docker
images, que sería lo mismo que irnos a
ese docker desktop que se queda tostado
y a la sección de imágenes, aquí voy a
ver todas las imágenes que yo ahora
mismo tengo descargadas. Y la última que
tengo es este Giros API, que es la que
acabo de crear, que pone que hace 4
horas porque realmente pues he hecho
unas cuantas pruebecillas antes de
arrancar, pero luego también porque si
os fijáis muchas de las cosas que le
pido en esta receta están cacheadas,
>> ¿vale? ¿Por qué? porque no he cambiado
el contenido en las últimas 4 horas. Y
entonces incluso intenta este Docker de
esto o este Docker Bill en este caso eh
utilizar o reutilizar aquellas capas que
no han cambiado para que este proceso
sea cada vez más rápido y que no se
tueste la máquina supuestamente, que no
consuma tantos recursos. Es decir, está
pensado para que optimice lo más que
pueda todo el trabajo que se ha hecho
anteriormente. Es más, te diría que si
yo tengo una imagen, como en este caso
la de la API, y mañana tengo otra de
otra API y utilizamos capas que son
iguales, vamos a poder utilizar o
reutilizar esas capas entre imágenes. De
tal forma que si yo hiciera una
aplicación superb y todos estuviéramos
de acuerdo y habláramos entre nosotros y
demás, pues imaginaros que todos
utilizamos como imagen base esta que
hemos dicho aquí arriba y mi aplicación,
todos los contenedores o todos los
microservicios utilizan la misma imagen,
pues ya ver parte del trabajo que se va
a ahorrar porque como ya la ha
descargado una vez o la ha generado una
vez pues va a ser capaz de reutilizarla
pues con todos los contenedores que
hagan uso de de ciertas partes de de
esta imagen, ¿no?
>> Porque, bueno, no lo he contado, pero
cada vez que creamos una imagen, esta
imagen se compone de lo que se llaman
capas y estas capas lo que nos van a
permitir es que si no hay cambios se
puedan cachear, ¿no? Y con eso
conseguimos pues que todo este proceso
sea mucho más rápido, que descargarla
sea mucho más rápido, etcétera, ¿no?
Todo esto se ve en el bootcamp con mucho
más tiempo, con ese mes de tiempo, ¿no?
Pero bueno, por condensar un poco, ¿no?
Y luego la segunda pregunta que
comentabas, Midu, en este caso, mi
imagen todavía está en local,
>> es decir, yo la puedo usar y ahora vamos
a ver cómo ejecutar un contenedor con
esta nueva imagen que he creado, pero la
realidad es que si yo quiero compartirla
contigo, tendría que subirla pues a
Dockerhub, que es donde hemos visto
anteriormente que tenemos un montón de
imágenes, que comentaba que cualquiera
puede subir una imagen ahí o incluso
podemos subirlo a un repositorio de
GitHub, ¿no? A día de hoy, GitHub tiene
una parte que se llama GitHub packages,
que soporta imágenes de Docker, así que
podría tener mi imagen como parte del
repositorio que a su vez contiene el
código que ha generado esa imagen, ¿no?
O sea, que bueno, eso
>> eh brutal también, ¿no?
>> Vale, pues que me como el tiempo. Vamos
a crear un contenedor con este Hero API
y vamos a ver qué pasa, que tampoco va a
funcionar de primeras, pero vamos a
hacer un docker run y vamos a decirle
que lo vamos a llamar API y vamos a
decirlo que vamos a exponerlo por el
puerto eh 3030, por ejemplo, a mapearlo
al puerto 3000, que es donde está
escuchando mi API. Y vamos a decirle que
vamos a utilizar ese Heroes API, ¿vale?
Si no me he equivocado,
pues aquí está intentando ejecutarse,
pero que todavía pues va a dejar de
funcionar.
>> ¿O por qué? Eh, ¿qué ha pasado?
>> Porque está está buscando ese en
local host, pero realmente dentro de ese
contenedor ese no existe. Ya no
estoy en mi máquina local, ya estoy
dentro. Entonces, lo que podemos hacer
es conectar los contenedores entre sí,
¿no? De tal forma que yo pueda decirle,
"Oye, hay la forma fácil y la forma
menos fácil." La forma fácil es haciendo
lo que se llama un link, que básicamente
cuando yo cre este contenedor lo pego
para no perder otra vez el tiempo
escribiendo lo mismo. En este caso vamos
a utilizar el puerto 3000. Podemos hacer
un docker run y le podemos decir, "Oye,
que sepas que este contenedor que voy a
crear se puede ver con otro contenedor
que se llama que ya creaste
anteriormente." Y aquí te paso incluso
una variable de entorno para que sepas
que este cuando vayas a buscarlo
en vez de ir a local hostes que ir a un
contenedor o a un sitio que se llama
porque una de las cosas chulas que
tiene Docker es que dentro del propio
Docker Engine tenemos un servidor de
DNS. Es decir, no tendría que aprenderme
la IP del Podría utilizar
directamente el nombre que le he dado a
mi contenedor
para poder referirme a él y en vez de
utilizar local host el el nombre la IP
interna que le haya dado directamente a
este pues puedo utilizar
directamente su nombre y ya está. Por
eso está la gracia de poder bautizar a
los contenedores como uno quiera, porque
si son estos nombres raros, si te
quieres crear un script, pues vas a
tener que ir cambiándolo cada vez.
Entonces no no tiene mucho sentido, ¿no?
Pero bueno, digo, bueno, pues me quiero
conectar con este ¿no? Que ya
tiene algún héroe por ahí enganchado.
Así que vamos a lanzar ahora este
comando y si todo va bien, pues como
veis ahora esta API ya se puede conectar
con ese que si ahora pues accedo
así, puerto 3000,
pues aquí está mi API. Y ahora la prueba
de fuego.
Oh, ¿qué pasó? Pues que en algún momento
lo paré o no lo Ah, no lo cargué. Bueno,
pues aquí en este caso eh ahora mismo
está conectado, pero no tiene data.
Vamos a ver si le metemos algo de
chicha,
>> que debe ser que antes, no sé si es que
me lo he cargado, ahora ya no recuerdo
con tantas emociones. A ver,
>> yo no he hecho nada esta vez. No he
pedido que abra el zoom más, no he hecho
nada, eh,
>> creo, creo no hecho nada,
>> seguro. Vale, vamos a ver que funciona
la conexión sin problemas. Vale, aquí
siguen funcionando. A lo mejor me lo he
cargado y no me he dado cuenta, ¿vale?
>> Pero bueno, me sirve superb para
terminar con esta parte y enlazar con la
última.
>> Todo esto lo cuento como yo en su
momento lo pensé en mi cabeza, que no
tiene por qué ser la forma que lo
pienses tú, pero bueno, eh, en mi cabeza
decir, "Vale, ¿y ahora, ¿qué pasa con
los datos? Me carga este no me lo
he cargado, ahora mismo no me queda
claro, pero si yo ahora me cargo este
y he metido toda esta información,
eh, ¿qué pasa? que se eh todos los datos
se van con el contenedor, no tendría
mucho sentido, ¿no?
>> Estaba lo estaba preguntando un montón
de gente en el chat, estaba todo el
rato, oye, ¿y la persistencia de datos y
qué pasa con estos datos? Y desaparecen
los datos. O sea, que mira, perfecto.
>> Claro, pues justamente, mira, ahora me
acabo de cargar este aquí.
Seguramente eh pues si intento volver a
a ejecutar esta línea aquí me dice, "Oh,
se ha desconectado de mongo." O sea, que
bueno, ni no he hecho tan mal el código,
¿no? para que por lo menos se dé cuenta
de que se ha desconectado y esto ahora
mismo ya pues no va a funcionar, no se
queda ahí va a dar un un error porque
porque ya no tiene esa conectividad
porque me lo he cargado, pero si yo
ahora intento volver a ejecutar ese
pues efectivamente va a pasar lo
que probablemente me ha pasado hace unos
instantes, pues que es que realmente eh
a ver si lo encuentro aquí, pues este
en realidad no está persistiendo
los datos en ningún sitio, con lo cual
lo que me va a pasar es que
Cada vez que se borra ese contenedor,
pues no sabía perder toda la información
que tenía. A ver si lo encuentro y si no
aquí. Vale. O sea, que si yo ahora
vuelvo otra vez a ejecutar esto,
>> claro, va a estar vacío otra vez. va a
estar vacío otra vez porque no he
guardado esto en ningún sitio. Entonces,
lo que podemos hacer en contenedores y
en cubernetes y etcétera es utilizar lo
que se llaman volúmenes, que básicamente
lo que nos va a permitir es decirle en
este caso a Docker Engine, que es lo que
está por debajo de Docker de esto,
decir, "Vale, todo lo que caiga dentro
de esta carpeta, dentro del sistema de
ficheros de ese contenedor, quiero que
lo guardes en lo que se llama volumen,
que Docker lo va a gestionar por ti. tú
no te tienes que preocupar de saber ni
dónde está ni de dónde deja de estar al
principio y que si yo, por ejemplo, me
vuelvo a eliminar este contenedor, pues
que realmente no se va a perder toda esa
información, ¿no? Entonces, vamos a
verlo y para ello, pues simplemente os
voy a dejar otro comandito donde
básicamente vamos a hacer el mismo uso
que hemos hecho de ese pero le
vamos a añadir un parámetro adicional
que es este - V que es de volumen. Y
básicamente lo que le estás diciendo es,
oye, créame un volumen que se llame
data y que realmente va a estar
mapeado, esto va como muy lado a lo que
veíamos con los puertos, va a estar
mapeado a un directorio que se llama
barrata/DB,
que es donde guarda toda la
información cuando tú instalas Y
en este caso en el contenedor, pues
cuando generas un contenedor, ahí es
donde va a parar esa información. Así
que si ahora esto lo ejecuto, tengo que
eliminar el anterior porque el nombre de
ya está puesto y vamos a hacer ese
Docker R-F, que esto no lo hagáis en
producción, pero es forzar cargarme el
contenedor.
>> Sí, RM- Fena, suena peligroso,
>> suena chungo.
>> Sí.
Vale, bueno, lo cargamos y ahora eh si
me voy otra vez a Docker de esto para
que también lo veáis, esto se puede ver
desde Visual Studio Code, se puede ver
desde un montón de sitios, pero aquí en
la parte de volúmenes, pues aquí tengo
este data
>> que ahora son 0 bytes porque no hemos
metido absolutamente nada, pero ahora
cuando limpie pantalla y me cree de
nuevo mi API,
vamos a entrar aquí otra vez. Vale, esto
está vacío
>> y si hago otra vez este client y bueno,
pues meto algún héroe,
eh, vamos a añadir a Wonder Woman, ¿por
qué no? A Iron Man, etcétera, pues no
sea, no va a ser información que pese
mucho, pero toda esta información
realmente eh está por aquí, ¿no? Y aquí
no sé si habrá que mira, hombre, pues
hao batate eh 200 megas ahí,
>> 200 megas, claro,
>> para tres héroes.
>> ¿Qué pasa con Batman? que se ha traído
todos los gadgets,
>> ha traído Batmóvil y todo.
>> Total, total. Ha metido a la familia,
al Robin, a todo el mundo.
>> A todo el mundo. Eh, bueno, pues en este
caso, ¿vale? ¿Y esto de qué me sirve?
Pues que si yo ahora vuelvo otra vez a
mi terminal y yo ahora, bueno, pues me
cargo otra vez ese ese Vamos a
parar un momento la API y me cargo ese
con ese - F me vuelvo a cargar ese
y vuelvo otra vez a a crearlo con es
pero me lo vuelvo a crear, pero en este
caso utilizando otra vez ese menos V, es
decir, oye, me vuelvo a crear ese
pero quiero utilizar un volumen que si
no existe me lo creas, pero si existes
me lo reutilizas. Entonces, en este
caso, imagínate que este contenedor pues
se nos ha muerto porque hemos hecho zoom
en el docker de esto y de repente dice,
"No, me he cargado todos los héroes."
Pues con esto simplemente podría volver
a levantar un contenedor totalmente
nuevo, pero que está enganchado a ese
volumen que ya habíamos utilizado con
otro contenedor, ¿no? Y que cuando yo
vuelva a crearme mi appi o vuelva a
ejecutarla en este caso, pues cuando
vuelva otra vez a refrescar aquí, pues
como veis todos los héroes siguen
estando.
>> Los datos. Qué grande.
>> Vale, entonces esto está muy guay.
>> Esto está muy interesante porque claro,
realmente además puedes probar sobre
todo para empresas pues tener ya eh
claro, el volumen de datos. Entiendo que
esto es en local que está en tu máquina.
¿Dónde te ha guardado? ¿En qué carpeta
te ha guardado ese data?
>> Sí, en este caso,
>> por defecto, en el mismo proyecto o en
algún otro sitio.
>> Os lo muestro cuando entro en mi
aplicación Hero Sappi. A ver si estaba
aquí. Ah, no, perdón, en perdón.
>> Eh, aquí puedes ver un apartado que se
llama Bin Mount y aquí
>> eh, ay, no me aparece, perdón. No, que
esto es cuando lo mapeo a una máquina
local.
en algún sitio me aparecía eh aquí creo.
Bueno, aquí ves, aquí ya me dice que
esto es un volumen,
>> pero es un directorio interno que
utiliza Docker, que ahora mismo no
recuerdo cuál es el P concreto, pero
dentro de la máquina virtual donde está
ese
contenedor ejecutándose dentro de un
directorio que solo puede tocar eh
Docker Engine, es donde está guardado
pues un directorio con eh toda la
información que tiene este volumen. De
tal forma que es cierto que lo puedes eh
hacer un backup o puedes utilizar
herramientas de terceros que puedan eh
montar este volumen y automáticamente
pues ver toda la información o incluso a
día de hoy se pueden hacer cosas super
chulas. Imagínate, dices, "Bueno, pues
eh tengo un volumen que ha creado un
contenedor y que quiero echarle un
vistazo eh pues en Visual Studio Code,
por ejemplo, y me puedo ir al directorio
de volúmenes y aquí directamente puedo
decirle chulpe
>> chula esa extensión." Sí, sí, está
chulísima. o ábremelo dentro de un deck
container, que básicamente lo que hace
es que se monta un contenedor, mapea
este volumen dentro del contenedor y
puedo ver todo lo que hay dentro del
mismo, si son imágenes o lo que toque.
se puede hacer, pero vamos, eh el
mensaje sobre todo principal es que
donde está guardada esta información
realmente es en el host de Docker, que
en el caso de estar utilizando Docker
Desktop, pues es dentro de la máquina
virtual que gestiona Docker Desktop y
hay un P que Docker Engine puede tocar y
que tú pues no deberías de manipular
como tal, ¿no? Porque si no, pues bueno,
se le puede ir un poco
>> la olla, ¿no? Vale, vamos a aprovechar
para ver la gente que tenga preguntas en
este momento que las deje en el chat.
>> Eh, yo tengo aquí algunas que he ido
seleccionando, pero hay una una que me
ha hecho mucha gracia porque sigue
siendo rentable aprender Docker. ¿Tú qué
qué vas a decir, Gisela? Claro.
>> Vamos, para mí es que además os diría
que en este caso estamos viendo los
basics de forma acelerada.
Evidentemente, de cada cosa que os voy
contando, eh, hemos tenido clases de 3
horas, ¿no? De crear imágenes, de tal y
demás, pero lo importante ya no es solo
estos basics, sino cómo todo esto lo
hemos extrapolado para utilizarlo para
un montón de cosas más, como veremos
ahora en los últimos minutos, eh, que
nos dará, yo creo que sí que nos va a
dar tiempo, pues toda la parte de IA, eh
también, por supuesto, para tener
aplicaciones escalables.
Luego también incluso lo que os
comentaba y lo que veíamos ahora de los
death container. ¿Qué es eso de los
death containers? Pues básicamente que
yo puedo montarme todo mi entorno de
desarrollo dentro de un contenedor,
levantarme por las mañanas y decir,
"¿Qué me toca desarrollar con Python?"
Vale, pues me abro o me creo un
contenedor que tenga instalado Python
con todas las herramientas, todo el CDC
e incluso si lo abro con Visual Studio
Code puede hacer que ese Visual Studio
Code cuando abro ese repo dentro de un
red de container tenga solamente
aquellas extensiones que me hacen falta
para desarrollar con Python y que cuando
lo apague pues todas esas extensiones de
mi Visual Studio Code desaparezcan.
Puedo cambiar hasta el tema si quiero
como parte de esa configuración.
Entonces, yo creo que es super rentable
porque hay muchas cosas que se apoyan eh
a día de hoy en contenedores, los
descontainers, incluso en GitHub, no sé
si lo conocéis, hay una funcionalidad
que es gratuita en vuestras cuentas
personales que se llama GitHubat Code
Spaces para seguir utilizando estos
contenedores, esos containers en la
nube. O sea, que si vuestro problema es
ese ordenador con 4 GB de RAM, pero
tienes una cuenta gratis de GitHub, pues
puedes irte a cualquier repo y decir,
abrir este repo dentro de un contenedor.
y te monta todo el entorno Visual Studio
Code conerizado con incluso si tuvieras
varios contenedores como en este caso el
la app y tal, pues podrías
hacerlo también de una forma ser
sencilla. O sea, que vamos, la respuesta
corta es sí, pero como veis me flipa,
>> me flipa.
>> Mira, tenemos aquí un montón de, no sé
si son fans encubiertos de Potman y
entonces están preguntando todo el rato,
¿y qué ventaja tiene Docker versus
Potman? y pero un montón de gente y
digo, "Madre mía, no sé si es que ha
venido la empresa de Potman aquí y se
han infiltrado o o qué pasa."
>> Sí, eh, hace bastante tiempo hice un
vídeo en YouTube de incluso hacer la
comparativa, no propiamente con los
contenedores, pero sí con los
descontainers, que es lo que yo utilizo
para desarrollar en mi día a día. Y sí
que es cierto que hace ya un tiempo
atrás pues hubo bastante revuelo porque
Deoker a día de hoy cuando estás en una
empresa pues es es de pago, ¿no? Tienes
que tener una licencia, tienes que pagar
pues pasta para usarlo en un entorno
corporativo con chorro,000 que te pueda
costar, o sea, que tú tengas de
beneficio como empresa, pero si no es el
caso a título personal puedes utilizarlo
sin problemas. Incluso uno de los eh
problemillas que había inicialmente era
pues los permisos que necesitabas a
nivel de root para poder instalar,
utilizar Docker, que a día de hoy
también son salvables.
Y por el otro lado tenemos a Potman, que
es también totalmente válido, funciona
estupendamente. Yo lo he probado también
en Mac, lo he probado en en Windows, en
mi caso, y funciona containers y también
te hace lo mismo, entre comillas, eh,
pero es gratis, es open source, con lo
cual aunque estés en una empresa y
muchas empresas a día de hoy con las que
trabajo lo valoran incluso con Rancher y
demás para no tener que pagar la
licencia de Docker. Entonces, por eso
hay Docker o por pues depende de la
situación en la que estés, porque es
verdad que cuando comparas, aunque ahora
ha tostado con el terminal, pero la
interfaz, eh, todas las cosas que tiene
a día de hoy Docker, porque al final
tienes una empresa detrás que paga,
¿no?, para tener esto y que no es un
esfuerzo de la comunidad, pues tienes
cosas muy ricas y cuando lo ves en
Potmán, pues hay cosas que que está muy
bien, funciona, eh, en muchos casos me
puede valer, pero le faltan cositas si
lo comparas con
>> Pero los conocimientos te los puedes
llevar porque hay gente también
diciendo, "La API de Docker es idéntica
a la de Potman." No sé si es idéntica,
pero más o menos los conocimientos
entiendo que muchos de los conceptos que
hemos visto, incluso seguramente los
comandos más importantes deben ser, si
no idénticos, muy parecidos.
De hecho, puedes hacer un alias entre eh
Docker y Potman por si te sientes más
cómodo utilizando los comandos de Docker
y que por debajo use Potman y es
exactamente igual. La API hay una
especificación que indica cuáles son los
comandos que tienes que tener y en este
caso pues como se cumple en el caso de
Docker desde hace ya unos cuantos años,
pues Potman eh la cumple exactamente
igual y puedes llevarte los mismos
conceptos a un lado o a otro. Es verdad
que en Potman tienes eh una cosa
adicional que es que puedes utilizar
también un concepto de pot que ya no os
quiero hacer explotar la cabeza porque
sería irte más al mundo de los
contenedores. Y por ejemplo en Docker no
existe como tal, pero en Potman sí que
existe ese concepto de pod que
básicamente es como si te crearas un una
vallita entre varios contenedores y que
lo estuvieras todos corriendo juntitos,
pues cuando sobre todo estás pensando en
una aplicación microservicios. Pero al
margen de eso es totalmente extrapolable
lo que os he contado aquí, eh,
ejecutarlo en Potman y lo vais a poder
hacer sin problemas.
>> Aprovechando que Gisela ha mencionado
que tenía un vídeo. Claro, un vídeo. Un
vídeo. ¿Dónde tiene el vídeo? porque
tiene un canal de YouTube que tiene
40,000 suscriptores y a ver si le
ayudamos y consigue llegar a los 50.000
pronto y tiene un montón un montón de
vídeos. tiene de IA generativa para
developers, mira, web RTC, comunicación
en vivo para deps. He visto también
tiene un montón de hackilot de
contenedores. Mira, cómo empezar con
contenedores. Pues ahí tenéis un vídeo
para aprender también Docker de
servidores MCP, o sea, que es un canal
de YouTube que lo tenéis ahí, lo podéis
encontrar como Retun Gis o buscáis
Gisela Torres, Gisela Torres en YouTube,
fácil, rápido, y ahí la la vais a
encontrar y le echáis un vistazo. Yo
recuerdo que si queréis ver este
contenido que está haciendo aquí Gisela
lo más rápido que puede para daros los
basics y que podáis, vamos, al menos
empezar a cacharrear con Docker, que
sepáis que hay un bookcamp de BOPS que
empieza en octubre que la están haciendo
en Lemon Code y ella es docente, la
buena de Gisela, no es la única, pero sí
que es una de las más top que tenemos
aquí, que trabaja en Microsoft, que
tiene más de 10 años de 10 años de
experiencia. Bueno, eran 15 años, eran
cuánto era
>> 18. Además estamos y yo a la par. 18
años. Digo,
>> tiene de experiencia la mayoría de edad.
>> Y en Microsoft era que que llevabas 10
años.
>> Eh, voy a hacer eh 13 en febrero del año
que viene. O sea,
>> madre mía, qué pasada, ¿no? O sea,
espectacular lo de Gisela. Pues nada,
que Gisela enseña la parte de Asur
Docker. En solo de Docker está un mes,
para que os ha una idea lo que os acaba
de explicar en una hora seguramente está
una semana y media perfectamente. Vamos
a crear esto, vamos a hacer esto. Y en
total la parte de Docker es un mes.
Tenéis más docentes que todos son
cracks. De hecho, hay gente que trabaja,
Yolanda trabaja en Google. Tenéis
también gente que es muy experta en
cubernetes, o sea, que vamos, Ghup
actions, temazo. Las clases son en
remoto, o sea, no son físicas, son los
lunes y los miércoles. Tenéis el horario
en la página web, tenéis también cuando
empieza 6 de octubre. El precio oficial
son 2,390 € pero si vais de nuestra
parte le decís, "No, es que he visto la
clase de Gisela, me encanta." tenéis un
10% de descuento y además estáis en
situación de desempleo o tenéis unos
ingresos netos por debajo de los 1500 €
al mes, pues se lo comentáis, se lo
explicáis y seguro que aquí lo comenta,
que va os hacen un descuento sobre la
matrícula. Le podéis descargar el
temario, le podéis echar un vistazo. La
verdad es que la gente de Lemon Cole
siempre hace cosas muy muy interesantes
y bueno, ya podéis ver por el nivel de
Gisela con sus explicaciones que lo que
os espera va a ser mega top seguro, eh,
sin presión, eh, Gisela, pero es lo que
>> es lo que creo.
>> Tenéis que venir o vamos desayunados,
merendados o porque es intenso, intenso.
A ver, evidentemente es un poquito más
live cuando lo hacemos en un poquito más
live, pero porque tenemos 2 horas.
Además, este año vamos a innovar y en
vez de hacer 3 horas, porque antes eran
3 horas cada clase, o sea, que es que yo
las hacía en pijama porque como son
online, yo estaba con mi pijama de
Noopy, no me tenéis que ver la cara,
pero yo estaba con mi pijama aquí
contandoos porque Docker esto, porque
Docker lo otro. Pero ahora lo que hemos
hecho para que también sea más fácil
para vosotros es eh una parte del
contenido se queda grabado como digamos
un poco más la intro, qué es docker de
esto, tal, cómo se hace ese docker run,
bla bla bla y luego ya en las 2 horas
vamos un poquito más al tirol que luego,
por supuesto, hay un canal de Slack
donde nos podéis preguntar eh offline
cuando tenéis dudas porque entendemos
que no todo el mundo a lo mejor puede un
día en concreto y nosotros pues
contestamos dentro de eh nuestro eh
franja horaria o cuando podemos pues
contestamos lo más rápido posible.
posible, pues para que podáis seguir
avanzando y luego también os dejamos
cada profe, en base a lo que os hemos
contado, pues el laboratorio, ¿no? para
que podáis un poco probar pues lo que
habéis aprendido y siempre con
acompañamiento, una un día de la para
que estemos con vosotros, contamos la
vida, super entretenido, o sea, esto
vamos eh me encanta también en Lemon
Code
>> que penséis que que son seis meses, eh,
que que claro, es que esto que mucha
gente ayan dos semanas, no son 6 meses
de de curso. Pues nada, Gisela,
continuamos.
>> Continuamos. Os prometo que un poquito
más de caña, pero ya cerramos. Pero sí,
no, porque ya jolín, sí, sí, vamos a a
tope. Solo una cosa más, un comando
super rápido, ¿vale? Imaginaros, yo
puedo estar pensando y esas son las
preguntas que yo me hice hace 6 años,
¿no? Cuando empecé o hace cinco o se
años cuando empecé con Docker. Era como,
"Vale, pues tú imagínate que ahora en
vez de tener pues una pillongo, pues me
falta el front, me falta el logo y me
falta autenticación. Voy a tener que ir
lanzando comando por comando en un orden
específico, además, para que se puedan
conectar con unos y con otros. O sea,
esto es un tostón. ¿Cómo hago esto? para
que por lo menos incluso cuando esté
desarrollando sea algo un poco más
ligerito, ¿no? Y para ello, hace ya un
montón de años, GitHub, uy, GitHub,
Docker, compró una herramienta que hizo
una que se llamaba FIG y la integró como
parte de su solución, que fue a lo que
vino a parar, en este caso, a lo que
llamamos Docker Compost, que básicamente
lo que me va a permitir es ya no solo
que esté prescribiendo eh pues ese
Docker file con todo lo que necesita uno
de los componentes de mi aplicación para
funcionar, sino que puedo prescribir
pues como veis aquí toda mi aplicación.
Voy a poder tener un apartado que se
llama Services y aquí le puedo decir,
pues mira, tengo una API que está
almacenada en este directorio y
compílamela. Si no tienes generada la
imagen, me la creas. Aquí le puedo decir
pues cuál es el nombre, qué pasa si se
reinicia, los puertos por los que se
expone, si tiene variables de entorno,
las puedo poner. Oye, espérate que está
depende de ese Con lo cual hasta
que el no se ejecute, no empieces
a ejecutar este contenedor porque si no
va a intentar conectarse con un
que no existe y entonces va a fallar,
¿no? Y también puedo ponerle checks para
ver que todo esto está funcionando y que
si no pues que reinicie o haga lo que
corresponda. Y luego aquí también
incluso hay una parte de desarrollo que
incluso lo que me permite es que si toco
cualquier archivo que tenga que ver con
esta API, automáticamente me regenera la
imagen. O sea, esto brutal. Esto tiene
poquito tiempo. Y luego, por supuesto,
aquí, como podéis ver, pues tengo mi
con las variables de entorno que
había definido a través de ese script.
Oye, utiliza estos volúmenes para que
pueda también, por ejemplo, eh pues eh
almacenar en ese volumen pues los datos
que vaya generando, Ghake. E incluso en
este caso pues he dicho, "Venga, también
me creo un Express, que es una
interfaz eh bastante sencillota, pero
que me permite ver la chicha, lo que hay
dentro de ese mo que me acabo de crear.
Y luego en este caso, además de
definirle al final pues cuáles son los
volúmenes, también le puedo definir cuál
es la red donde quiero que todos los
contenedores que formen parte de este
archivo eh se metan dentro, ¿no? Como
que se conecten, ¿no? Como que
virtualmente generen su tarjetita de red
y se conecten a esta red de aquí, ¿no?
Así que, ¿cómo ejecuto esto? Una vez
más, pues si abro un terminal integrado,
solo hay que hacer docker compost app y
ya está. Con esto me levanto tres tres
aplicaciones, realmente tres componentes
que se comunican entre sí y que me van a
permitir pues en este caso eh hablarse
sin problemas. Creo que algo no he hecho
bien. Vale, ya sé lo que no he hecho
bien, que me pasó esta tarde y es porque
tengo que irme un pasito más atrás
porque si no solo está intentando
ejecutar mi aplicación pero no el resto
y entonces pues hace un poco de lío,
pero ahora sí que va a funcionar. Y
aquí, bueno, se descarga eh esa versión
de la imagen de se descarga ese
express y en el momento que termine
ahora sí que va a levantar los tres
contenedores y ahora ya sin problemas mi
aplicación se va a poder conectar. Ay.
Ah, vale, ya. Esto es otro
otro fallito del directo. Nada, que es
que tengo puerto,
>> ¿qué ha pasado? Ya está, no pasa nada.
Es porque estaba escuchando el por
el puerto que está intentando escuchar
este otro pobre y le ha dicho, "No, no,
no." Y aquí, como veis, tú tuú ya está
todo trapo. Claro.
>> Vale. Y aquí mola
>> porque ya tengo todos recogiditos dentro
del mismo de la misma valla.
Claro, y en un solo comando que esto
pues yo creo que la ventaja más brutal
que que se ve aquí es el hecho del
entorno de desarrollo de si estamos
trabajando en equipo, lo típico de cómo
levanto esto en mi local, no tienes que
ejecutar todos estos comandos,
instalarte todo esto, no, solo tienes
que hacer Docker Compost App y lo
levantas y ya lo tienes en entorno de
desarrollo levantado sin ningún tipo de
problema. Tremendo,
>> sin ningún tipo de problema. Entonces,
claro, es que con esto incluso para
gente que a lo mejor acaba, ya no digo
junior, gente que acaba de entrar a un
proyecto porque a día de hoy ya no estás
en uno, estás en 20, ¿no? Y full stack y
no sé qué, pero a lo mejor yo hay cosas
que no no he configurado en mi vida,
¿no? Y con esto no solo es que me ayuda
a levantarlo, sino que también a
aprender un poco pues cómo sería en este
caso levantar todos estos servicios para
para poder funcionar, ¿no? Aquí en este
caso pues me he levantado hasta tres
tres aplicaciones o tres componentes que
si aquí pongo admin
ir ir viendo pues los héroes que vaya
metiendo en esta colección de
¿no?
que una cosa muy interesante que no
hemos comentado y a lo mejor a lo mejor
la gente pues no está cayendo es el
hecho de que claro lo que estáis viendo
independientemente de que Gisela tenga
macOS, de que otra persona tenga
Windows, de que otra persona tenga
Linux, de que no importa tanto sistema
operativo que con que tenga la
posibilidad de ejecutar Docker, ya no te
tienes que preocupar de compilaciones,
configuraciones, bibliotecas,
compatibilidades ni nada, sino que va a
funcionar todo. Perfectamente porque
estos propios contenedores ya tienen su
propio sistema operativo como versiones,
bibliotecas y tal. Entonces ya esto va a
funcionar independientemente del sistema
operativo del usuario.
>> Claro, mi máquina funciona, se acabó.
Funcionar en cualquier sitio.
>> Totalmente, totalmente. Potentísimo lo
del Docker Compost. Yo lo he utilizado
un montón. Bueno, es que yo creo que
casi cualquier persona que haya
trabajado en una empresa lo ha tenido
que utilizar bastante porque al final te
facilita un montón para levantar en
torno de desarrollo. Muy fácil.
>> Sí, sí, total. Pues nos queda poco
tiempo, pero sí que hoy os quería contar
algo de IA que
>> Claro, cuenta, hombre. Si, o sea, a ver,
si no, o sea, tenía que haber puesto,
>> claro, tenemos que ponera, si no nos
cierran el chiringuito, si no Twitch me
banea, o sea, tenemos que
>> Vale, pues bueno, todo esto es lo mínimo
que necesitas para sentirte más o menos
cómodo con Docker. Es verdad que hay
muchísimas otras cosas que podríamos
hacer y bueno, lo que pasa es que bueno,
pues como decemos, ¿no? es para dar un
llevar un ratito y estar un ratito
jugando con todo esto, pero sí que os
quería enseñar un par de cosas que
habíamos comentado Midu al principio de
esta sesión y luego también cuando
estuvo comentando que iba a estar yo por
aquí, que era qué pinta todo esto con la
generativa, ¿no? Y a día de hoy, eh,
Docker se está poniendo las pilas que no
veas con todo este tema. De hecho, están
todos así que yo esta mañana he
actualizado mi Docker Desktop y ahora
por la tarde vuelvo a tener una
actualización pendiente, ¿no? O sea, que
para que os hagáis una idea. Y es que eh
la IA Generativa más Docker, ¿qué es lo
que nos ofrece el día de hoy? Pues dos
cosas. En primer lugar, que yo tengo un
agente como parte de Docker Desktop y
como parte de la línea de comandos que
puedo utilizar para preguntarle
cualquier cosa que tenga que ver con
Docker o incluso si quiero utilizar los
famosos MCP servers, también lo voy a
poder utilizar con este agente, ¿no? Y
aquí, como veis en fase beta tenemos
este Gordon, que es nuestro eh
superagente que nos va a permitir pues
ayudarnos con todo lo que tenga que ver
con con Docker, ¿no? Y bueno, pues
podría preguntarle cosas como, por
ejemplo, eh
muéstrame los contenedores que tengo
ejecutándose.
>> Qué oportunidad perdida de llamarle a la
inteligencia artificial Moby Dick o no
sé o Willy, ¿no? O sea, ya que es
ballenas. Bueno, Willy creo que era una
orca, no me acuerdo. Era una orca, una
ballena, pero
>> total.
Eh, bueno, perdón, eh, es que es que me
ha parecido un tema de marketing que sí,
perdón, perdón.
>> No, no, no, pero bueno, se ha quedado
aquíito. Está Vamos a probar de nuevo
que se ha quedado aquí. Ah, mira, ya
está. Uy, es que le ha costaba, estaba
aquí con el low al Vale, sí, le he dicho
que que sin problemas podía utilizar en
este caso, una tool de un MCP server que
se llama Docker, que utiliza este gordón
para decirle, "Oye, que voy a ejecutar
un comando en tu máquina, espero que te
parezca bien, ¿no?" Y aquí, como ves,
pues me dice, "Oye, pues estos son los
eh contenedores que estás ejecutando,
que esto así como tal me da un poco
igual, pero si me vuelvo a Visual Studio
Code y me voy, por ejemplo, otra vez a
ese directorio A, ¿vale?", Vale, pues
aquí, por ejemplo, una de las cosas que
puedo hacer también es preguntarle a ese
mismo Gordon, eh, Docker, ¿puedes
mejorarme mi Docker F? ¿Vale? Y aquí,
como veis, puedo utilizar el mismo
agente que estábamos viendo el docker de
esto, lo puedo hacer desde aquí y él va
a recuperar pues toda la información que
tiene en este caso en este directorio e
incluso puedo interactuar con él.
>> Ostras, esto está chulo, me gusta. Esto
está chulo. Esto está chulo. Entonces,
bueno, pues aquí incluso le puedo decir
si directamente si quiero que me lo
reescriba. En este caso le vamos a decir
que no para que también podáis probar
cómo me lo mejora, que no lo he hecho,
lo he hecho bien, pero lo podría haber
hecho mejor, ojo, ¿no? Y aquí podría
preguntarle por el Docker Compost y
podría preguntarle por muchas más cosas.
O como os decía, esto se puede integrar
con los MCP Servers. Imagínate que el
día de mañana pues tienes Docker como
parte de tu compañía o tú en tu casa,
¿por qué no? Y dices, "Es que quiero
también integrarlo pues con otros. MCP
servers que existen en el mercado o
incluso con algunos que yo me haya
generado, ¿no? Y aquí pues tengo este
archivo que se llama Gordon-MCP.yamen,
lo llamen, que veis es sencillo, de
hecho sigue la misma estructura que ese
docker compost que hemos visto, pero en
este caso en chiquitín, ¿no? Y lo que le
estoy diciendo es, oye, si me ejecutas
Gordon, ese Docker ahí dentro de este
directorio, eh, quiero que puedas
utilizar estos MCP servers. Y en este
caso, pues hay uno que simplemente me
dice la hora porque los eh modelos de
inteligencia artificial o los Llms pues
la hora la llevan un poco regular. Y
luego yo me he creado un MCP server que
busca vídeos en YouTube porque porque
bueno, porque tenía que probar con algo,
¿no? Entonces aquí directamente incluso
no le estoy pasando la piquí, la tengo
guardada como dentro de ese punto m que
no voy a mostrar, ¿vale? Y aquí pues
simplemente si me voy un poco más para
abajo y le digo doer ahí y le digo,
¿puedes buscarme
vídeos sobre MCP Servers, ¿vale? Y aquí,
si todo va bien, lo que va a hacer
detrás de todo esto es ejecutarme un
contenedor, a ver si me da tiempo para
mostrarlo rápidamente. Un contenedor,
pues con ese MCP Time y con mi MCP
server, que lo tengo eh ya generado, los
autodestruye en el momento que tiene la
respuesta. Y aquí, como ves, me salen
pues resultados de YouTube. O sea, que
yo bueno,
>> aquí podría hacer un FMD y aquí, como
veis, esto es una URL de YouTube que si
lo hubiera puesto en español seguro que
me hubiera salido el vídeo de mi dudez,
pero como no lo he dicho español me los
da en inglés, pero no pasa nada. Pero
aquí, como veis, o sea, puedo hacer un
montón de cosas, por supuesto, le puedo
preguntar la hora, pero como no teníamos
tiempo, pues con esto suficiente,
>> ¿vale? O sea, teng preguntas, tengo
preguntas. Eh, no, no, es que me ha
parecido superinesante esta integración
con este servidores MCP. Yo no tenía ni
puñetera idea y además el hecho, claro,
ya al principio que el Docker yo pensaba
que era la pregunta como que le
preguntabas al Gordon de cosas de
Docker, pero no, es que también tienes
integraciones de servidores MCP. Es
espectacular lo de los servidores MCP
porque se están integrando con cualquier
sitio ahora que Windows también tiene
integración de
>> Sí, sí. O sea, a ver si Macos y no sé,
Linux, me imagino que Linux lo tendá más
fácil, pero bueno, ojalá que lo hagan. E
la mi pregunta del millón es que claro,
tienes el servidor MCP que es un Docker
file y entiendo que también se pueden
utilizar en, por ejemplo, en Cursor o en
otros editores que utilizan MCP servers
que puedan levantar el Docker File para
que sean un servidor que consumas desde
el editor o o no se puede.
>> En este caso, Docker ha hecho una cosita
un poquito diferente para Gordon. Este
Jammel es el que va estupendamente bien,
pero luego lo que ha hecho es lo que se
llama un MCP gateway, que básicamente lo
que lo que te permite en este apartado
que se llama MCP Tool Kit es pues yo me
descargo los MCP servers que quiera,
aquí hay un listado de algunos de ellos
y luego lo que puedo hacer es conectar
diferentes clientes a este gateway de
tal forma que si yo, por ejemplo, me voy
a mi GitHCOT, que tanto adoro,
y me voy aquí al apartado de las tools,
pues aquí debería de tener una tool que
se llama MCP Docker, que realmente es
ese Gateway que es un es un MCP server
que se ha configurado con una imagen de
Docker que se llama Gateway, que se
puede conectar con tu máquina local. Y
aquí en este caso, como veis, pues tengo
eh pues un montón de tools que tengo
deshabilitadas porque me peta ha sido el
eh guijas copyilos con tanta tool, ¿no?
Ahora mismo tengo 31 y tengo
deshabilitadas un montón, pero aquí la
gracia es que yo ya no voy pues en el
archivo de Cloud, en el archivo de
Ghacopilot, en el de Visual Studio Code,
en el de Windows, en el de que sea, sino
que tengo como una especie de hub que
configuro en todos los sitios por igual
y él es el que se encarga de gestionar
todos los MCP servers que hay por
detrás.
Wow,
>> pero a día de hoy no
>> me gusta mucho la idea esa porque al
final las tienes todas en el Docker
desktop este activadas
>> y los puedes conectar en diferentes
clientes automáticamente sin necesidad
de tener que ir a todos los clientes
ahí.
>> Me gusta, me gusta.
Sí,
>> sí, eso es
>> brutal.
>> Em,
una más y te y os dejo ir.
>> Os dejo ir todo lo contrario. Pero si la
gente ya Pero si tenemos aquí a la gente
que me está pidiendo una segunda muerto
ya. Segunda parte, Gisela. La gente ya
me está pidiendo la segunda parte. Si
está aquí la gente como, bueno, ¿y
cuándo vuelve? ¿Sabes? O sea, que
>> iba a decir, ¿cuántos caídos hay?
>> No, no, todo lo contrario. Nada, solo
hay 3384 personas. Gisela.
>> Ah, bueno, super tranquilo. Nada, pues
luego pongo el cazo. Nada, broma.
>> Medio euro cada uno y vamos de las
vacaciones más que pagadas, ¿eh?
>> Qué bárbaro. Qué pena que ya me he ido.
Qué pena. Bueno, pues nada, una última
demo y ya cerramos. Pero vale, en este
caso, como os decía, este ordenador es
bastante viejito y usa intel, no utiliza
ARM, con lo cual hay ciertas cosas que
al principio se veían y ahora han
desaparecido porque han mejorado la
interfaz, pero
Docker ya no solo va de imágenes de
Docker, sino que ahora también lo que
podemos hacer es utilizar el mismo
Docker para descargarnos modelos de
inteligencia artificial generativa, con
lo cual aquí no se ve, pero si me Voy a
mi Windows que tengo aquí preparado
también.
En este caso, si me voy a mi Docker
Desktop, que tengo por aquí a ver si
quiere que se ha quedado tosti. A ver,
ha pasado. Pasa nada, vamos a arrancarlo
de nuevo. Muchas cosas pasando a la vez.
>> Yo no he pedido que le suba la fuente
esta vez, ¿eh? Yo no he dicho. Bueno, es
que es normal porque cuando se streamea
esto se vuelve se vuelve tonto.
>> Sí. Ah, mira. No hay nada como Ah, no
hay nada como reiniciar aquí en este
caso. Mira, además me viene super bien,
como esto es una un entorno en la nube,
pues vais a ver perfectamente la
diferencia. Aquí veis que hay un
apartado que se llama models,
>> que si me voy al de Mac, aquí no está,
>> no, no aparece. Si me voy a mi M1, que
también tengo MacBook Pro, en ese caso
sí que se vería porque solo está
disponible para ARM, ¿no? O y necesitas
GPU y necesitas un montón de cosas que
mi máquina, aunque es un maquinón, pues
ya tiene unos cuantos añitos, entonces
no está soportado. Pero en máquinas que
sí lo soportan, aquí como veis, yo
podría incluso descargarme modelos de
inteligencia artificial que puedo
utilizar con mis aplicaciones que yo
esté desarrollando en mi día a día, eh,
utilizando contenedores o no
utilizándolos. ¿no? Aquí están
intentando ponerse pues a a un nivel eh
rollo o llama, ¿no? Donde incluso llama
pues tiene también los mismos comandos y
demás. Y aquí lo que se han creado es lo
que se llama Docker Model Runner, que te
permite pues descargarte cualquier
modelo de los que estén como parte de
este registro, ¿no? Y que puedas eh
integrarlos con tu aplicación, que
además utilizan las mismas APIs eh
perfectamente que podrías utilizar
utilizando el SDK de Open AI, es decir,
que tu mismo código podrías descargarte
cualquiera de estos modelos y no
tendrías que cambiarlo.
>> Así que os lo voy a enseñar a ver si
quiere esto. mismo repo lo voy a
compartir para el que tenga la suerte de
tener una RM descargar. Lo que no
prometo es que vaya rápido, o sea, es
decir, al final estás ejecutando modelos
que, bueno, pues pueden ir un poco de
aquella manera. Entonces, eh lo más
rápido para poder probar estos estos
modelos, y os lo voy a enseñar
rápidamente, nos queda poco tiempo, es
utilizar pues un eh comando que han
llamado Docker Model RAM, es decir, es
como el Docker RAM que hemos visto
antes, pero en este caso eh poniéndole
el model entre medias, ¿no? Y aquí en
este caso voy a utilizar Genma 3 para
que veáis que no va a ropar a casa en
este caso, ¿no? Y en el momento que
pulso el intro estoy ya en un modo
interactivo como si tuviera un chat, en
este caso con Gma. Le podría decir,
"¿Puedes saludar a los que estén
conectados?"
por por poner un ejemplo. Y aquí en este
caso pues os vais a dar cuenta de que
esto pues va a poder tardar un poquito,
pero aquí como veis pues saludos a los
que estéis conectados
y nada más
>> al que sea, ¿no? Pero aquí, como veis,
puedo eh trabajar pues perfectamente con
estos modelos en mi máquina local. Y
encima el trabajo con Docker pues
estupendo, pero es que puedo ir más
allá, puedo decir, "Vale, me encaja,
quiero, he probado este modelo, he
probado este otro, podemos tener un
montón." Me he creado una aplicación
superchorra, este app.páis P para que
veáis cómo funciona, donde básicamente
en un código en Python también barriendo
para casa, como veis, donde bueno, pues
cargo unas variables de entorno, pinto
bonito que la aplicación se ha
arrancado, recupero de un par de
variables de entorno, ¿cuál es el
momento?
>> Gisela, te puedo pedir una cosa si
espero que no se rompa nada de que le
subas un poquito, un poquito el zoom.
>> Vale.
>> Ay,
>> sí. Uy, no te di. Sí, igual te la liado,
pero se ve perfecto. No, está bien, está
bien. Vale,
>> bueno, pues aquí no, no, perdón, perdón
que no me había dado cuenta.
>> Bueno, pues aquí simplemente nada, cojo
de un par de variables de entorno, pues
la URL donde tengo que llamar y el
modelo que voy a utilizar, ¿no? Y aquí
simplemente utilizo eh la librería de
Open le paso esa información, la API me
la he inventado porque en este caso no
hace falta y aquí le digo, "Bueno, pues
escribe una bienvenida en español para
una descripción de Twitch, bla bla, que
sea divertido, no sé qué." y llamo a la
misma API que llamaría pues en una
aplicación que esté utilizando eh IA
Generativa, o sea, nada raro, nada que
tenga que ver con Docker, excepto es
aquí que me he inventado, que podría ser
cualquier cosa y ya está, ¿no? Y lo que
puedo hacer,
>> a ver si me deja este super zoom, eh,
aquí en este compost como el que hemos
visto anteriormente,
pues tengo algo tan sencillo como esto.
A ver si me deja. Es que claro, ahora
estoy jugando entre el Mac, el Windows y
>> se hay una mezcla. Ay. A ver, a ver si
me deja eh aquí este Docker Compost es
el eh esto es lo único que tiene, no
tiene más.
>> Ostras,
>> una app. Ay, que le digo, "Oye,
compílame todo lo que hay aquí dentro,
me generas una imagen y ya estás." Y
ahora hay una nueva sección que se llama
models, donde le puedo llamar o puedo
tener uno o varios modelos. Claro,
cuanto más modelos, más se va a tostar
tu máquina, evidentemente. Y en este
caso le estoy diciendo, "Oye, quiero
descargarme el modelo YMA 3, que es el
que hemos visto en el terminal, para
utilizarlo con esta aplicación que tengo
más arriba, que es la que os acabo de
mostrar.
Vamos a ver si esto funciona y con esto
ya chin pún nos vamos a ver. Ahora ya lo
hago un poquito más grande, lo prometo.
Vale. Y aquí nada, exactamente igual.
Docker compost a
Vamos a hacerlo un poquito más grande.
Mira, ahora parece que me ha ido un
poquito mejor. Y aquí nada, se está
arrancando. Estos son los valores que me
están llegando en esas variables de
entorno, que es algo propio de ese
docker compost con esa sección de
modelos. Va a tardar un poquito porque
en este caso el PR no ha sido saludo a
todos. Sí, un poco más complicado más
grande, pero en el momento que termine
automáticamente está utilizando el
modelo que le has dicho que es el de
Yema 3 y claro, si normalmente lo tiene
que descargar, pero supongo lo tendrá
cacheado, ¿eh? Y ya no tienes que
configurar absolutamente nada. O sea,
>> claro, o sea, en este caso yo en local
me he descargado estos, pero claro,
imagínate en eh bueno, este en español
lo hacía Regulinchi y este y 3 son 2,31
GB y aquí tienes una sección de locks y
puedes ver también pues cuáles están
disponibles, que ahora mismo pues como
esto es algo muy nuevo pues hay
poquitos, ¿no? Si comparas con un con
uno llama pues hombre todavía no están
ahí pero bueno. Oye, aquí está.
>> Oh, mira.
>> O
>> la respuesta.
Mira, voy a leer. Hola, hola, valientes
exploradores del código. Bienvenidos a
mi canal. Si estás aquí, seguramente te
llama la curiosidad o simplemente buscas
un buen rato. Me gusta, me gusta. Me me
lo voy a apuntar.
Oye, increíble, eh, Gisela, tremendo. Me
ha encantado. La verdad es que toda esta
parte de la inteligencia artificial no
tenía ni puñetera idea. A mí cuando me
dijiste de, "No, te explicaré Docker y
la IA Generativa." Y yo, bueno, ya es la
experta, yo no sé a qué se refiere, pero
bueno.
>> Esta se le ha ido la olla. No, no,
bueno, la olla no, pero digo, no sé,
habrá una Pero es que no tenía ni idea
de de todo esto, ¿no? No sabía que que
se habían puesto las pilas tan fuertes y
que que fácil que que la han hecho muy
fácil y con el Docker Compost que han
puesto una nueva sección y todo. Es
brutal. Me encanta, me encanta. Muchas
gracias.
>> Me alegro. Espero que os haya gustado a
todos. No os preocupéis, lo vais a poder
revisitar tranquilamente o le pasaré
también a Midu el repoéis descargarlo y
probarlo tranquilamente en casa cuando
ya hayáis liberado caché, pues
estupendísimo. Pero bueno, que aquí
estamos, o sea, que yo encantada de
haber estado aquí con vosotros.
>> Muchísimas gracias. O sea, nos ha
encantado. Hay gente que me estaba
preguntando, "Pero, ¿dónde está el el
canal?" Aquí tenéis el canal de Gisela.
Que Gisela, una buena noticia, has
pasado de los 40,000 suscriptores, ¿eh?
Aquí 40000, no,0000 está más difícil,
pero creo que ha subido 400
suscriptores, ¿eh? No está mal, no está
mal.
>> Sí, sí, sí. Muchísimas gracias. Vamos,
aquí también tenéis una serie de Docker
que la suelo ir refrescando cuando voy
preparando el contenido de Lemon. Ojo,
no os olvidéis que son
>> y de hecho eso es lo siguiente que os
iba a comentar, que si queréis saber
todo lo que acaba de comentar Gisela,
todo el tema de de Docker, esto es parte
del bookc de DevOps de Lemon Code, que
la buena gente de Lemon Code pues ha
dicho, "Buah, mira, te es que te voy a
llevar a Gisela para que te explique
todo esto porque es que está muy
interesante y explica muy bien y yo,
vale, pues venga, que se venga." Y
bueno, ya veis que lo ha explicado
tremendamente en una hora y media, pues
es que resulta que la parte de Docker es
un mes del bootcamp, un mes, para que os
hagáis un poco la idea de lo que podéis
aprender. Y no es lo único. Tenéis
cuernetes, GHUp, Actions, Jenkins,
Terraford, Ansibor, Grafana, Promeceus,
Asur, Aus, Ax, X, HS, o sea, es que esto
me encanta, ¿eh? Y aparte de Gisela, que
por supuesto ya habéis visto que es
cinturón negro. Esto me lo tienes que
explicar algún día. Esto de ser Black
Bell for de Productivity. Esto de Black
Bel, cinturón negro es porque debe ser
que ya lleva muchos años y ya es como
maestra jedy del consejo de Microsoft.
Aparte de la buena de Gisela, tenéis a
Yolanda que trabaja en Google, Eduard
Tomás para hablar de de cubernetes,
tenéis a Jaime Salas, tenéis a Santiago
Camargo, Joaquín Trillo y por supuesto a
Gisela que os va a hablar de Docker y de
Asur. Empieza en octubre, ¿vale? Aquí
tenéis los horarios en diferentes países
porque es en remoto, de hecho tenéis
diferentes modalidades para que así
podáis seguirlo. Empieza el 6 de
octubre, son seis meses de duración, 96
horas de docencia. Son porque no se
oculta que hay gente, no, pero que no os
dice el precio. Lo he dicho todo el
rato, no os oculta. Son 2,390 €
>> y tenéis un 10% de descuento si le decís
que veis parte mía o de Gisela, de
Gisela o de los dos a la vez. Dices, no
es que vengo de los dos. Yo que sé,
igual así hacen un 20%.
No hemos llegado acuerdo, pero si estáis
en situación de desempleo, tenéis
ingresos netos inferiores a 15 € también
se lo podéis comentar que os van a hacer
un descuento en la matrícula. Así que
Gisela, muchísimas, muchísimas gracias
por, por venir, por estar aquí una hora
y media hablando de algo como es Docker,
que normalmente a la gente pues se le
ponen los pelos como escarpias y todo lo
contrario. Había muy pero que muy en
FIBA, la gente estaba increíblemente
contenta de que lo trajeses además de
esta forma tan didáctica muy, ostras,
con código, hala, el Docker con post,
esto de los modelos que no tenía ni
idea. Así que muchísima, mira, gente,
muchas gracias, dice, muchas gracias,
Gisela. Eh, muchas, muchas gracias por
pasarte. La verdad que me lo he pasado
super bien y he aprendido cosas nuevas
porque hacía mucho tiempo que no tocaba
Docker. Lo he intentado evitar durante
mucho tiempo, te tengo que decirte.
>> Yo también, eh, reconocer que yo
también, pero luego me enganchó y hasta
hoy.
>> Pero mira, s super bueno aquí. Gracias,
Gisela, me gustó mucho. Muchas gracias.
Muy bueno Gisela. Gracias, Gisela. S, s
super s super. Gracias Gisela, te
queremos. Bueno, o sea, ya la gente te
quiere, te quiere más.
>> Sí, ya te quiere más que a mí. O sea, yo
llevo aquí 4 años haciendo directos,
pero esto, ¿qué es? Pero Anto, o sea, un
poquito de amor para mí también. Bueno,
Gisela, muchas gracias por pasarte. Te
deseo lo mejor. Que te vaya superb en la
nueva edición del Bookc de Devops que
arranca en octubre y nos vemos pronto,
seguro. En alguna seguro que sí. Pues
muchas gracias. Gracias, Minu. Gracias a
todos por estar ahí hasta el final.
>> Muchas gracias. Venga, amigos, nos
vemos. Cuídense. Hasta luego. Chao.