Transcripciones
1. Introducción: Bienvenidos de nuevo chicos. En esta sección
vamos a empezar a buscar
contenedores en la Nube
o Azure Containers. Entonces para esta sección
vamos a aprender sobre contenerización
y vamos a ver más oscuro lo que es, cómo podemos configurarlo
y usarlo localmente. Y luego vamos
a ver cómo podemos contenerizar o proyecto
dotnet Core. Y luego cómo alojamos usando el servicio Container Instancias proporcionado por Microsoft en su
conjunto, podemos alojar nuestra imagen de contenedor usando Azure Container Registry. Y revisaremos Kubernetes. Conoce si es tu primera vez la contenerización, no te
preocupes, esta es una visión general, pero vamos a entrar en
ello lo suficiente como para que
tengas confianza para tener una
conversación al respecto. Por supuesto, este no es
un curso a fondo sobre contenerización. Puedes consultar mi curso
completo sobre eso. Pero para esta sección
vamos a tener una visión general de todo el fin de semana, cambiar nuestros contenedores de nuestro entorno local a
nuestros entornos Cloud. Así que estén atentos. Sé que te vas a divertir.
2. ¿Qué son los contenedores?: Ahora antes de saltar a
nuestros contenedores cero, eso es una
mirada pegatina a los contenedores y qué son
y por qué los usamos. Según un contenedor
es una unidad estándar de software que empaqueta código
y todas sus dependencias. La aplicación se ejecuta de forma rápida, confiable y en cualquier entorno. Y eso es lo que
parafraseo, lo que está escrito, pero esa es la explicación
y viniendo de docker.com. No. ¿Por qué necesitamos contenedores? Y esta es una palabra de moda. Se escucharía
hablar de contenedores y contenerización y por qué
deberíamos cambiar a él. Examinemos cuáles son
los problemas existentes y
cómo los contenedores pueden ayudarnos. No existen problemas a la hora de
desarrollar software. Hay un costo de
virtualización. Entonces recién veníamos de
una sección donde miramos las máquinas
virtuales en la nube y la infraestructura como un servicio. La realidad es
que, y estoy seguro cada desarrollador puede
dar fe del hecho de que cuando tienes un
entorno y estás tratando de desarrollarte contra
ese entorno, vas a necesitar máquinas
virtuales, ¿verdad? Por lo que la organización
podría no comprar una máquina por software
que tengas. En cambio,
van a seguir adelante y aprovisionar una máquina virtual. Cada máquina virtual necesita
tener un sistema operativo, lo que significa que son más
licencias que se requieren para cada
máquina virtual y luego cualquier software de
soporte
que necesite para su aplicación particular en su máquina virtual o un
conjunto de máquinas virtuales. Esos son otros costos de licencia. Entonces hay que
considerar el hecho de que virtualización no es un esfuerzo
barato en absoluto, sobre todo cuando
se está haciendo en casa. También tenemos el reto de las diferencias en los entornos
porque cuando
aprovisionamos una máquina virtual e instalamos una
versión particular del software, versión del sistema
operativo en esa máquina en particular
o máquina virtual. Más bien, ese entorno se
configura de una manera particular, entonces es muy
difícil, no muy, pero significativamente
difícil replicar ese entorno exactamente para Q0. Y luego por Accenture on prod, lo que nos encontramos
como desarrolladores es
una situación en la
que funciona en dove y luego hay alguna
ligera diferencia de versión entre dev y QA. Se rompe en q0 y luego incluso
cuando arreglamos el encola, no
funciona fuera
de la caja en prod. Así que siempre va a haber ligeras diferencias entre
los diferentes ambientes. Y esos pueden causar,
quería decir, dolores de cabeza
innecesarios para nosotros como desarrolladores e
incluso infraestructura. Soy practicantes lo sé. Otra cosa es ¿qué tan
fácil es para ti cambiar
tu sistema operativo? Porque cuando configuras una
aplicación para dotnet core, vas a necesitar IIS, vas a necesitar
cierto software de
soporte de alojamiento basado en nuestro Windows Server. Pero entonces si necesitas
pasar a un servidor Linux, entonces tienes que considerar, bien, necesitas usarlo en genética o
Apache o algún otro software de
alojamiento, alguna otra versión de esto, alguna otra versión de eso. Y lo es, Es
difícil replicar el
entorno de ejecución en windows a otro, a otro sistema
operativo. Entonces esos son algunos de
los problemas que sí
enfrentamos a la hora de desarrollar software, especialmente software que
queremos ejecutar en cualquier plataforma. No hay beneficios de usar contenedores. Uno, tenemos portabilidad. Entonces Docker ha creado
un estándar de la industria para contenedores para que
puedan ser portátiles en cualquier lugar. Y voy a hablar más sobre lo que realmente significa la capacidad portuaria. Los contenedores también son ligeros, por lo que comparten el núcleo subyacente del sistema
operativo de las máquinas. No tiene que
seguir adelante y aprovisionar un nuevo sistema operativo por aplicación, la virtualización
en línea, donde cada máquina virtual tiene sus propias máquinas autoalojadas de
aprovisionamiento completo , por así decirlo. Los contenedores se encuentran en la parte superior de
un sistema operativo, pero luego proporcionan un entorno
virtual donde solo se
puede instalar el software que se
necesita para el entorno. Y luego por extensión, por la capacidad de puertos, una vez que tengamos esa plantilla, que llamamos una imagen de contenedor, podemos aprovisionarla
encima de un sistema operativo Windows o Linux o macOS y tener los
mismos resultados cada vez. También está el
asunto de la seguridad. Ahora una vez que una aplicación
está en un contenedor, es segura porque siempre
puedes tomarla. Se puede levantar de nuevo desplazado. Y siempre podemos almacenar
o secretos para que nadie a quien podamos restringir
el acceso al contenido sea un poco más fácil que como lo haríamos
en una máquina virtual. También veremos la inmutabilidad. Entonces una imagen que
es la plantilla para un contenedor siempre será
la misma cuando se cree. Entonces, una vez más, eso
retroalimenta a
la portabilidad porque si hay una imagen contenedora
para mi aplicación y necesita tres
bibliotecas para soporte, siempre
me
va a dar ese entorno. No importa dónde
se aprovisione. Entonces puedo estar seguro de que
una vez que esto esté contenerizado, siempre será
lo mismo. Si hay una nueva
versión entonces
tendría que crear una
imagen completamente nueva con esta nueva versión. Ese punto,
tienes una imagen para la versión uno y una
imagen para la versión dos. La versión uno nunca
actualizará la versión dos. Entonces no quieres
correr el riesgo de aprovisionar la versión incorrecta porque está claro qué versión
vas a aprovisionar. Ahora, aquí hay una descripción general
de los looks completos de Docker, y esto está tomado de la documentación de
Microsoft. Entonces el lado izquierdo, se ve que tenemos
los sistemas operativos. Podría ser Linux,
podría ser Windows, podría ser Engine X igual a
B Mac OS o lo que sea, sea cual sea el kernel
subyacente. Así la izquierda. El motor Docker
se sienta encima de eso, y
nos proporciona un servidor, un cliente y una API RESTful. Y todos estos trabajan en
conjunto para gestionar las imágenes que se crean. Entonces, una vez más, la
imagen es la plantilla. Y usando esa plantilla
y el servidor Docker, podemos aprovisionar en contenedores, que verás
a la extrema derecha. Entonces el contenedor es la instanciación
real de la plantilla. Y entonces esta plantilla puede
ser reproducida varias veces. Por lo que podemos tener
múltiples contenedores fuera de la misma aplicación
por diferentes razones. Entonces, una vez más, la imagen
son solo las plantillas. El contenedor es la
instanciación de esta plantilla. Ahora ya he mencionado el
más oscuro varias veces. Entonces Docker es una plataforma de
contenerización que se utiliza para desarrollar, enviar y ejecutar contenedores. Docker no
usa hipervisor. Entonces, a diferencia de las máquinas virtuales no
necesitas un hipervisor, por lo que realmente puedes
instalarlo en tu computadora de escritorio o portátil si estás desarrollando
y probando aplicaciones. Y lo mejor de todo, es compatible con todos los principales sistemas
operativos. Entonces, independientemente del
sistema operativo que estés usando, hay soporte Docker para ello. Y sí soporta cargas de trabajo de
producción para muchas variantes de versiones de Linux y
Windows Server. Lo mejor de todo es que es compatible con muchos proveedores de Cloud,
incluido Microsoft Azure. Ahora también verás al
buscar Docker, Docker Hub. Así Docker Hub es una oferta de software como servicio que
es un registro de contenedores. Esencialmente, un
registro de contenedores almacena y distribuye las imágenes de contenedor que
creamos usando Docker Hub. Docker hub, lo siento, en realidad
puedes alojar la imagen para tu aplicación
y puedes distribuirla. Y sí apoya la
distribución pública en ambos. También soporta distribución
privada. Así que incluso dentro de
tu organización, dame tener imágenes de
aplicación interna que estés manteniendo. Puedes confiar en Docker
Hub para la privacidad, pero también para hospedar. Ahora, cuando miramos nuestros
cero contenedores y ofertas
de
servicios en ese lado tenemos Azure
Container Instancias. Azure Container
Instancias nos permite al Señor y ejecutar
imágenes docker bajo demanda. Nos permite recuperar
una imagen de un registro como Docker Hub o
Azure Container Registry. Así que eso nos lleva a
Azure Container Registry. Este es un servicio de registro
Docker administrado basado en el registro Docker,
el registro de Docker
de código abierto al que apuntar. Y por supuesto esto es
administrado por Microsoft para que no tengas que
preocuparte por las versiones. Este es solo el estándar
actual. Y esto nos ofrece una oferta de
registro privado alojada en Azure. Y le permite construir, almacenar y administrar sin administrar, lo siento sus imágenes para todos los
contenedores y para implementaciones. Entonces, entre Azure
Container Instancias como tu Container Registry, tienes una buena base para comenzar a contenerizar tus aplicaciones y almacenar las diferentes
versiones de imágenes. Y una vez más, todo eso se
puede hacer en privado. Y para que pueda acelerar
sus esfuerzos de desarrollo, reducir los costos de
infraestructura y maximizar su aplicación
en la entrega mediante la
contenerización. Cuando regresemos,
vamos a
empezar por mirar el agujero más oscuro. Podemos configurarlo y cómo
podemos crear nuestros primeros contenedores. Así que quédate por ahí.
3. Docker de la instalación: Ahora
comencemos con la
configuración más oscura en nuestra máquina y nuestro viaje
comienza en docker.com. Así podrás, en tu
navegador ir a docker.com, y desde aquí podrás descargar el Docker
Client adecuado para tu máquina. Entonces estoy usando una máquina con Windows, pero luego verás que
puedes obtener un chip ascendente, chip
Linux e Intel para
otro tipo de máquinas que podrían no estar basadas en
estos sistemas operativos. Para que puedas seguir adelante
e instalarlo en
función de cómo
necesites instalar para tu máquina en particular si estás usando la versión de
Windows, es una instalación
sencilla al usar el asistente. Y una vez que se haya instalado, se
le llevará a instalar el subsistema Windows Linux o Subsistema Windows para Linux, subsistema
WSL que habíamos
mencionado antes de esto. Entonces está en la
documentación de Microsoft. Si solo buscas en Google windows, WSL, verás
venir esta documentación y podrás
seguir las instrucciones. Así que puedes simplemente seguir adelante
y ejecutar esto usando tu parcial o
símbolo del sistema como administrador. Y seguirá adelante y lo descargará e
instalará por ti. Ahora una vez que tengas instalado Docker y el Subsistema de Windows
para Linux, entonces puedes iniciar
tu Docker Desktop. Entonces eso puede tomar un tiempo. Ya lo tengo instalado. Puedes ver que
incluso estoy pendiente o no lo hice pero puedes presionar pausa, asegúrate de tener todo
configurado antes de continuar. Y cuando lo hagas, entonces puedes lanzar
tu Docker Desktop. A partir de aquí. Puedes
mirar los contenedores. Si es la primera vez que
estás ejecutando Docker, entonces no vas a tener ningún contenedor en esta lista. También puedes mirar imágenes. Así que desde aquí puedes
ver imágenes locales versus imágenes que están
disponibles en el hub. Entonces sí mencionamos Docker
Hub en la lección anterior. Entonces lo que quieres hacer
es en tu navegador, ve a hub.docker.com y sigue adelante y crea un ícono. Estoy diciendo que
voy a decir que no, sólo para mostrarte
lo que puedes esperar. Y entonces puedes
empezar hoy gratis. Y una vez que tengas tus conos, podrás acceder a las
diferentes imágenes de Docker que están disponibles
para consumo público. No. Estoy diciendo que
envío de vuelta aquí, estoy mirando mi
propio registro donde
tengo una
imagen de base de datos de pacientes que había creado. Está a disposición del público. No es muy útil. De hecho, creé este para mi libro sobre
desarrollo de microservicios, donde demostré cómo puedes contenerizar diferentes partes de tu aplicación de microservicios para que
puedas tomar una copia de ese libro si lo deseas desde el punto de vista de los microservicios. Pero el punto es
desde Docker Hub, puedo ir a mirar
diferentes registros. Entonces estos son mis repositorios, pero si hago clic en Explorar, entonces puedo ver diferentes imágenes y
verás que hay varios miles de
imágenes disponibles para su uso. Entonces puedo usar cualquiera de estos. A lo mejor necesitas una instancia de Redis, necesitas una instancia
SQL postgres. Y
las aplicaciones populares y muy populares han sido contenerizadas y están
disponibles para usted como imágenes de
contenedor para que pueda
crear una instancia de imágenes. Los costos son contenedores
en su propia máquina. Ahora traerlo de vuelta
a Docker Desktop, si sigues adelante e
inicias sesión en el hub, debes saber que has
creado un Arkon. Entonces desde aquí
realmente obtendrás acceso
a tu propio
repositorio según sea necesario. Entonces aquí es donde
habría empaquetado mi contenedor y
lo publiqué en el hub todo usando Docker Desktop
como herramienta. Bien, no lo hago una vez más, puedo ver todas
las imágenes locales que hubiera sacado. Y una vez que creo un contenedor, tengo acceso a él después. Entonces pueden ver aquí tengo
un contenedor RabbitMQ,
tengo un contenedor Mongo DB de dos contenedores para
Microsoft SQL Server, y tengo uno para boceto 3D. Entonces, cuando
volvamos, vamos a ver todo el fin de semana global. Es traer una imagen y
crear nuestro propio contenedor.
4. Crear un contenedor: Ahora tal como está, Microsoft
SQL Server es casi exclusivamente utilizable solo
en máquinas Windows. Ahora bien, si estás usando
Mac o Linux, no te preocupes,
todavía hay una solución para ti. La solución número uno
sería que puedas usar
una máquina virtual, así puedes usar VMware o alguna otra herramienta que
admita la virtualización. Y puedes poner en marcha
una máquina virtual que tenga un sistema operativo Windows
y luego usarla. Sepa que puede ser intensivo en
recursos. Y no voy a hacerte pasar por todo eso solo
para usar el software. La alternativa a un entorno
virtualizado para Windows sería usar doc. Yo los animaría a
lanzar su terminal. Entonces, una vez más, estoy usando
una máquina con Windows, pero tu terminal en Linux o Mac OSX se vería
muy similar a esta. Y simplemente puedes ejecutar el comando docker solo para
asegurarte de que está instalado. Y si
ves algo así, ellos no sabían que
tienes acceso a los comandos de Docker CLI. Bien, entonces lo que queremos
hacer en este punto es ejecutar un comando que se llama
Docker Pull que es acercar un poco para que
sea más fácil de leer. Entonces vamos a hacer
docker, pull, docker, pull. Entonces vamos a sacar
esto lo que llamaremos imagen. Entonces Docker tiene archivos
predefinidos que
alinean el entorno que se necesita para una aplicación
en particular. Y a estas se les llama imágenes. La imagen que queremos es la imagen de Microsoft MS
SQL Server. Entonces vamos a hacer un docker, tirar contra esa imagen
para que puedas presionar pausa, asegúrate de que la escribes de la manera que yo la tengo. Y cuando presionas Enter, va a
seguir adelante y decir: Bien, me van a sacar litros y luego lo
vas a ver descargando. Entonces ya saqué esa imagen, así que ya la tengo
en mi máquina. Pero vas a
ver que está jalando. Y entonces va a empezar
a mostrar tus métricas de ello hecho cargando. Y en realidad se verían
algo más así. Entonces esta es una captura de pantalla que tomé antes de cuando
la estaba descargando. Y vas a
ver que va a
engendrar a estos manojos de lentes
que se ven similares a este. Y vas a tener
estas etiquetas de descarga. Una vez que eso se completa, el siguiente paso es ejecutarlo
realmente. Para ejecutarlo,
necesitas este comando. Entonces vamos a decir Docker
corre y luego guión e, y luego haremos
el eula aceptar. Entonces lo que pasa es que SQL
Server suele tener uno de esos documentos que
necesitas para aceptar los
términos y condiciones. Entonces solo lo estamos poniendo
en un parámetro que sí, aceptamos los términos
y condiciones. Y luego otro
que dice contraseña SA. Entonces, si miraste el proceso de instalación
cuando estamos usando Windows, podemos usar la
autenticación de Windows para conectarnos a la
base de datos, ¿verdad? Entonces todo lo que necesitamos es un nombre de máquina y podemos usar un usuario de Windows, el usuario actual de Windows, autenticación de
Windows
y desconexión. Ahora porque esto es más oscuro
y es un contenedor, No
hay ventanas ni puertas o
Mark o no hay
Linux Autenticación. Entonces no es realmente que solo
puedas conectarte usando el usuario predeterminado
en tu computadora. Entonces este paso es
aplicable ya sea que estés usando Windows,
mac, Linux, etc. Entonces lo que tenemos que hacer es
especificar una contraseña de SA. Entonces ESI es el usuario predeterminado, lo que significa administrador
asistente de administración del sistema. Cada vez que instalas
un motor de base para Microsoft SQL Server, obtienes este usuario de ensayo. Entonces vamos a
configurar esta SA, contraseña y podrás introducir
cualquier contraseña que desees. Sólo estoy poniendo una
contraseña segura aquí. Y esto es realmente posible
que puedas ver en otras demostraciones que podrías ver en cualquier parte de Internet. Entonces esta contraseña no es necesariamente única para
mí ni para este ejercicio. Puedes poner cualquier valor de
contraseña con el que te sientas cómodo
y recuerdes. Así que solo estoy dividiendo la palabra contraseña segura, por supuesto, con
caracteres especiales, números y un par de letras mayúsculas. Después especificamos el puerto. El puerto aquí
al frente es importante por
lo que queremos pasar. El puerto. En el otro extremo del colon se encuentra el puerto al que mapeará. Entonces lo que esto significa es SQL server por defecto difusiones
desde el puerto 1433, ese es el puerto predeterminado. Entonces sin hacer nada, especificando cualquier puerto
o cualquier cosa
siempre pasará por 1433
quiere que se estén conectando. Sin embargo, Docker está funcionando en sus propios
entornos especializados, por lo que necesitamos trapear. Este es el puerto predeterminado, y luego este es el
puerto de la máquina de guerra que querrá
atravesar un túnel para llegar a este deporte. Así que en realidad podrías
dejar eso como 14334233. Si no quieres tener
SQL Server instalado ya y estás
ejecutando Mac y Linux, entonces 143 es, 33 está bien. No tienes que
hacer nada extra. Simplemente puedes conectarte. Sin embargo, debido a que estoy
usando una máquina Windows, tuve que cambiar mi puerto porque
1433 ya está ocupado por mi instalación nativa de SQL
Server. Entonces solo
te estoy demostrando que puedes hacer 14331433 por defecto. O puedes poner en tu propio puerto específico
si así lo deseas. Después el siguiente. Lo último es que vemos guión D y después
especificamos la imagen
que queremos ejecutar. Así que básicamente estamos diciendo
docker ejecutar esta imagen y estar seguro de que todos estos parámetros
intermedios están configurados. Eso es esencialmente
lo que acabamos de hacer. Entonces, cuando presionas Enter y
subes esta para que se ejecute, lo que hará es lanzar esa imagen dentro
de la interfaz de usuario más oscura. Y en la interfaz de usuario vas
a ver que, ya sabes, tienen debajo de la
tina de contenedores un contenedor. Y podrías haberle dado un nombre
al contenedor. No especificamos un
nombre en el comando, pero podrías haber puesto dash n y darle
un nombre específico. Entonces cuando no
proporciones un nombre, obtendrás un nombre aleatorio, como lo que ves aquí
con estos nombres, al
menos Docker te indicaré el tipo
de imagen que estamos usando. Y verás por aquí las especificaciones del puerto de
acuerdo a lo que habíamos configurado. Entonces como dije, puedes hacer puertos
alternativos y esto
estaría bien si tienes varios contenedores de
la misma tecnología que bloquearán UP puerto
articular funcionando. Pero si no
tienes
instalada la tecnología como con mi MongoDB, no
tengo MongoDB
ejecutándose en mi máquina, así que no voy a usar
un puerto alternativo. Solo voy a decir
usar el puerto predeterminado, mapearlo al puerto predeterminado y actuar como el software real. Para SQL Server. Tengo varias
instancias ejecutándose, y quiero esta instancia
de un puerto específico que
pueda llegar directamente a ella cuando necesite conectarme. Ahora, veamos la conexión. Entonces para conectarme, puedo usar cualquiera de mis herramientas de administración de SQL Server. Ya hemos mirado
algunas de estas herramientas. Solo para reunirme esta
semana, voy a usar el Data Studio y para conectarme. Voy a seguir adelante y
crear una nueva conexión. Y para servidor, voy
a escribir nodo host local. El más oscuro va a
correr en los anfitriones locales. Y por eso es importante ese
número de puerto. Porque normalmente el
comando localhost 1433
sería la forma de conectarse a la instancia de
SQL Server instalada localmente. Si, especialmente si estás
ejecutando un nivel profesional o empresarial o
desarrollador, ¿verdad? Así que el host local con el
puerto me conectaría a la
instancia instalada predeterminada en mi máquina. Sin embargo, como quiero
la instancia más oscura, tengo que ir al host local y al puerto específico que le
había dado durante
la configuración del contenedor. Para la autenticación, no puedo usar autenticación de
Windows
que establecimos. Tengo que usar la
autenticación SQL. Y voy a decir ensayo, y luego la contraseña. Se me olvidó. Entonces, aquí hay una
manera rápida de que si olvida estos valores del entorno, pueda recuperarlos
de la interfaz de usuario del Dr. Simplemente puede hacer clic en
el contenedor en ejecución y puede usar señales visuales
para saber cuándo se está ejecutando. Aquí se está ejecutando y verás registros sucediendo en
segundo plano. Puedes ir a Inspeccionar, puedes ir a terminal, etc. si voy a Inspeccionar, voy a ver todas las variables de
entorno que se configuraron. Entonces hicimos que el eula aceptara eula. ¿Por qué? Esa es una variable de
entorno. Aquí está la contraseña de SA. Y mira eso. Tengo la contraseña vía
disponible para mí aquí mismo. Cada vez que haces estas
configuraciones y estableces variables de
entorno
y tu mente olvida donde todo humano, siempre
puedes simplemente saltar
al contenedor en ejecución, ir a inspeccionar y ver las variables de
entorno. Así que voy a saltar de nuevo por aquí y por favor la contraseña. Y luego voy a
hacer clic en Conectar. Ahora estoy recibiendo este error de
que fue exitoso, pero necesita una conexión de
confianza. Bien, así que solo estaba Muestra certificado
del servidor
y ahí estoy. Ahora estoy conectado a la instancia de SQL Server
que se ejecuta en mi contenedor. Y este es un contenedor que realidad se usa en otro curso, asp.net Core
desarrollo multiplataforma, que es por supuesto donde realmente
enseño en espera. Puede utilizar asp.net
Core para desarrollar una solución en cualquier entorno. Entonces lo hacemos un poco más oscuro, Isaías Sean en ese curso. Y sólo te estoy enseñando eso. Solo estoy compartiendo eso
contigo para que sepas que por
eso existe esta base de datos. Entonces obviamente
no tendrías bases de datos si acabas de
crear este contenedor. Este contenedor funciona como cualquier
otra instancia de SQL Server. Y mientras el
contenedor esté funcionando, entonces puedes interactuar
con él de la misma manera. Puedes conectarte a él,
puedes construir aplicaciones para usarlo. Y adivina ¿y si lo detengo? Entonces puedo detener este contenedor
en este punto, ¿verdad? Si intenté hacer
algo más aquí, como intenté
entrar en la base de datos, observe que mi Data
Studio va a enganchar su enganche porque ha perdido la conectividad con la
base de datos, con el servidor. Así que mientras ese
contenedor esté funcionando. Entonces por eso dijimos que
cuando instalas un software, posible que no necesariamente
quieras que sea omnipresente y esté funcionando
todo el tiempo. Quieres parar, detenerlo
e iniciarlo bajo demanda. Ahí es donde la contenerización
puede desempeñar un papel importante para
ayudarlo a ser lo más eficiente
posible con los recursos de
su sistema durante el
desarrollo. Ahora, sepa que tenemos alguna
experiencia sacando una imagen, configurando nuestro contenedor. Y esto, estos pasos
están bien documentados, así que no estoy inventando estas cosas. Puedes encontrar todo esto. Una vez que encuentre la imagen que le
interesa en Docker Hub, puede hacer clic en ella y ver todas
las formas recomendadas en las que puede configurarla en todas las variables de
entorno que se necesitan para la
configuración. Pero ahora que hemos
visto cómo podemos usar una imagen de terceros, nos
deja saber, configurar nuestra propia aplicación dotnet
Core, mirar un fin de semana completo, conectarnos a esta
imagen y ver cómo podemos contenerizar
una aplicación.
5. Configuración. Proyecto básico: Ahora vamos a crear nuestro propio proyecto
asp.net Core. Y en el futuro
vamos a contenerizarlo. Entonces, por supuesto, estamos usando
nuestra solución habitual. Voy a agregar un nuevo proyecto. Y esta vez voy a
ir con un proyecto API. Y solo estoy eligiendo una API acorde con el tema de que los contenedores y la
contenerización juegan bien con el diseño
arquitectónico de los microservicios. Entonces voy a saltar por aquí, crear nuestro nuevo proyecto API. Sólo voy a
llamarlo microservicio. Una API adopta
contenedores que demuestren. Para que puedas reutilizar el nombre. Por supuesto, no tienes que hacerlo. Y luego voy a darle a Next. Ahora, en este paso, llegamos a elegir nuestro tipo de
marco de
autenticación y podemos
elegir habilitar más oscuro. Así que no voy a habilitar
más oscuro aquí vamos a agregar eso manualmente o usar un método
diferente de agregarlo. Pero para el segundo microservicio, verás la
diferencia cuando hagamos eso porque queremos
que sea sencillo. Solo voy a hacer una
API mínima y podemos darle a Create. Ahora claro, si estás usando Visual Studio Code
y la CLI de dotnet, abres tu terminal
y vas a escribir el comando dotnet new web guión 0 para la salida y darle su nombre a ese proyecto. Y luego una vez hecho eso, puedes cd en esa carpeta recién
creada y hacer código full stop para iniciar Visual Studio Code
en esa carpeta. Entonces ahora tenemos nuestro proyecto
estándar de API web y todos somos desarrolladores,
así que sabemos qué hacer. Saber es ese raro tumor
hermoso código y nos conectamos a nuestra base de datos
y a todos esos activos. La cosa sin embargo,
es una vez más, cuando tenemos que pasar
de nuestra máquina al entorno
dev e implementamos, puede
haber diferencias
entre los entornos que hacen funcionar en su máquina y luego no funciona en def. Y luego terminamos
con excusas como si funcionara ayer o decimos, bueno, funcionó en
mi máquina en él
va a usar tu
máquina en producción. Todos sabemos esto. Es por eso que la
contenerización hace que nuestra aplicación sea
mucho más portátil y mucho más estable independientemente
de dónde se despliegue. Ahora, voy a agregar soportes de
contenedores a
estas aplicaciones. Creé la aplicación
y vamos en serio, escribimos el
código hermoso y todo. Pero sabemos que
lo necesitamos en un contenedor, así que estoy dispuesto a
hacer clic derecho en el proyecto. Y luego voy
a bajar a Agregar. Y entonces verás
aquí los soportes de Docker. Entonces cuando haga clic en Docker
soporte me va a preguntar, bien, ¿Cuál es el objetivo o si quería
dejarlo como Linux? Bueno, obviamente podrías cambiar entre y sí quieres
asegurarte elegir el
entorno adecuado en función las dependencias
cercanas a las elecciones de
la biblioteca, porque no todo
funciona en Linux. Pero por ahora para
esta sencilla app y dotnet Core es multiplataforma. Voy a usar Linux. Doy clic en Bien, entonces obtenemos este nuevo archivo
llamado archivo Docker. Entonces este archivo Docker no
estaba ahí inicialmente. Pero vamos a evaluar lo que está haciendo
este archivo Docker. Y sí se ve confuso, pero cuando lo leas a través, verás bien, es algo que se
puede entender. Lo primero que hace
es sacar una imagen base. Entonces desde y luego está
diciendo el nombre de la imagen. Así que recuerda cuando hicimos nuestro
docker pull para SQL Server, tenemos que especificar
una ruta similar a esta donde dijimos
SQL Server en su lugar, no
especificamos nuestra etiqueta. Entonces, si quieres una
versión específica de una imagen, es
decir, esta es la
imagen, pero luego dos puntos. Entonces el valor después de
los dos puntos significa la etiqueta o la versión específica
que te interesa. Entonces estamos haciendo una aplicación
asp.net. Entonces obviamente nos
gustaría que la imagen fuera dotnet seven asp.net image. Y luego estamos viendo como base. Entonces va a especificar,
bien, una vez que estés
creando ese contenedor, crea nuestro
directorio de trabajo llamado puertos
expuestos 84 para tres. Y luego a partir de esta imagen SDK
donde queremos construir. Entonces, una vez más especificar el directorio de trabajo que va
a ser SRC y luego copiar los archivos del directorio
CSP, ¿verdad? Entonces ven aquí, estos
son sólo los caminos. Así que copia este
archivo CS broach desde esta ruta prácticamente y luego haz un comando
dotnet restore. Entonces aquí empiezas a
ver que es solo usar los mismos comandos de la
CLI de dotnet que
usamos es simplemente hacerlo
en nuestro nombre, ¿verdad? Entonces está haciendo una restauración contra ese archivo CSV y va a copiar todo en ese archivo. Entonces está configurando
ese directorio de trabajo para que vuelva a estar ahí. Entonces, si
lo paso línea por línea, claro, tiene sentido, ¿verdad? Esencialmente
vamos a ejecutar de nuevo dotnet build como release. Y la salida va a ser. Construcción de barra diagonal. Estos son directorios
que no tenemos que
crear y que no se están
creando en nuestra máquina. En cambio, se van
a crear en el contenedor que está haciendo
esta compilación del compilador. Y entonces va a decir a
partir de este paso, justo, una
vez concluido este paso, tome lo que se
llame publicado. E iban a
ejecutar el comando publish, que va a hacer el
mismo tipo de lanzamiento. Toma lo que hay en esa carpeta
publicada. Y le va a dar una pequeña flor aquí para decir
usar caballo es igual a falso. Bien, una vez más, esto
se genera para nosotros. No necesariamente tenemos que
ofrecer este archivo. Podemos. Es bueno entenderlo, modificarlo, pero en
términos generales, no es necesario. Y luego después de todo eso de base va a ver que
el directorio de trabajo está arriba y va a copiar todo desde publicar
ese directorio. Y entonces el punto de entrada
va a ser ese DLL. Así que las aplicaciones dotnet Core generalmente
se ejecutan en función de esa DLL. Y eso es lo que pone en marcha la aplicación ejecutándose
en el contenedor. Ahora bien, ¿cómo
sé que esto va
a funcionar en un contenedor? Así que permítanme cambiar
hacia el proyecto de inicio del microservicio que
acabamos de crear. Y verás que el botón
estrella es entrometido y más oscuro con todos los demás. Como si voy al
blazer a HTTPS. Y ya
miramos la
configuración del césped y sabemos que el perfil de lanzamiento
tiene el HTTP, HTTPS. Pero si miras esto, verás que ahora hay
una entrada más oscura aquí. Y la entrada más oscura va a tener esa URL de lanzamiento
con la swagger. Así que todo se
configura para ti una vez que agregaste
el archivo Docker. Pero básicamente
va a seguir adelante y lanzar más oscuro, ¿verdad? Entonces, cuando vaya a este nuevo proyecto de inicio
y vea correr con más oscuro, mi aplicación se lanzará
tal como esperaba que hiciera, derecho, así que se
lanzará en un navegador. Y voy a poder seguir adelante
y usarlo como espero. ¿Qué pruebas tengo que
saber de que se está ejecutando en un contenedor y no solo
siendo manejado por Visual Studio Bueno, si miras la ventana de
Visual Studio, habría aparecido
el nuevo panel. Así que probablemente
nunca antes lo habías visto. Contenedores. Y en este panel ves que este contenedor o la
aplicación que está alojada se están ejecutando está aquí como un contenedor que
se está ejecutando, ¿no? No, también podrás ver todas
las variables de
entorno. Entonces verás el desarrollo de la
versión, todas esas
variables de entorno que no nos sentamos, sentamos, pero están todas ahí. También tenemos puertos. Entonces miras el puerto aquí, verás que está
creando puertos. Recuerden que tuvimos que
crear unos puertos para hacer un túnel. Entonces 21433 cuando estábamos haciendo
nuestra imagen de SQL Server. Entonces verás aquí que
tenemos un puerto que está mapeando al puerto 80 y
mapeado de puertos al puerto 443. Cualquiera de los dos, puedo
pinchar y sostenes. Entonces cuando miramos la
dirección en o Swagger UI, veremos que
estamos en el 769, que está mapeando al puerto 443. También notarás si tienes interfaz de usuario
más oscura abierta y en ejecución, que tienes un nuevo contenedor con el nombre de la
aplicación también ejecutándose. Y te está mostrando el puerto. Y puedes hacer click
para mostrar todos los puertos. Entonces todas estas son
señales visuales y evidencia que no tenemos aplicación
contenerizada. Y esto es un microservicio. Y una vez más, no se
limita a los microservicios, sino que se recomienda con microservicios
porque permite que cada microservicio viva en su propio entorno independiente de todos los demás servicios con sus propias dependencias y todo lo que necesita
para funcionar de manera efectiva. Y una vez más, es portátil. Si estás usando Visual
Studio Code y
quieres contenerizar la
aplicación que tienes aquí, lo que tendrás que hacer es ir y obtener las extensiones
para más oscuras. Entonces, si solo vas a Extensiones y solo puedes buscar
Docker, tenerlo instalado. Estaba tratando de
desplazarme y encontrarlo, pero solo puedes
buscar más oscuro y seguir adelante e instalar la extensión
Docker. Asegúrate de que estás
obteniendo el de Microsoft. Y luego una vez que tengas eso, obtendrás esta pestaña que te
permite ver todos
los contenedores
y te da un pozo similar, no
quiero decir similar, pero te da
suficiente información comparada con lo que
habrías experimentado en Visual Studio sobre
los contenedores en ejecución, así
como diferentes
imágenes que tienes disponibles para ti si has
tirado en varias imágenes, nos
permite contenerizar
esta aplicación en particular. Es decir que aprovisionamos
en nuestro código de Visual Studio. En Visual Studio Code, mantenga presionada Control Shift y P, y verá traidor
mostrar todos los comandos. Así Control Shift
N P y que se
lanzará o Paleta de Comandos. Y luego verás aquí que E tiene la opción de
agregar un archivo Docker. Si no ves esa opción, solo
puedes comenzar a escribir Docker y
aparecerá independientemente. Así que recordemos eso agregando. Docker supports es realmente solo acerca de agregar un archivo Docker. Entonces si seleccionamos
eso y luego puedo especificar el tipo de aplicación
que quiero apoyar. Entonces es una aplicación asp.net
Core. Y luego podemos
especificar el SO una
vez más y especificar los puertos. Voy a dejar ese puerto. Eso está bien para mí. Puedo elegir si quiero
un archivo de redacción de docker, vamos a ver
docker-componer más tarde, alguien que diga que no por ahora. Y entonces va
a seguir adelante y generar ese archivo Docker para mí usando una sintaxis muy similar a que acabamos de ver
en Visual Studio. Ahora para ejecutar esta API en más oscuro
desde Visual Studio Code, podemos ir a la pestaña de depuración, y luego puedo elegir
de la lista desplegable, el almuerzo dotnet más oscuro. Y luego seguir adelante
y ejecutarlo de nuevo, ver alguna actividad pasando aquí
abajo en la terminal. Y si miras de cerca, verás que los pulmones
son muy similares a lo que
podrías haber visto en Visual Studio cuando
se estaba ejecutando, pero está ejecutando algunos
comandos de Docker en segundo plano. Y luego después de algún
tiempo, no
vamos a poner en marcha
nuestro más oscuro. Y vemos Hello World. Era un punto final de API tan simple que acabaría de
devolver HelloWorld. Si miramos en nuestra interfaz de usuario más oscura, verá el nuevo contenedor ejecutándose también con el nombre. Bien, así que aquí
tenemos el puerto 32771 corriendo de
nuevo, deportivo 5099. Así que en realidad podríamos haber
especificado que
queríamos 84 para tres para esto arriba. Podría haber dicho 80 coma 443 cuando
me preguntó por los puertos. Yo no hice eso, pero
solo les estoy haciendo
saber que esa era una opción que hubiera dado un mapeo similar al
que tenemos aquí. Entonces ahora ya sabes
cómo contenerizar tu
aplicación dotnet Core usando tanto Visual Studio como
Visual Studio Code. Por supuesto, seguimos
ejecutándonos en depuración. Entonces voy a
detener la depuración. Y eso nos
permite realmente depurar o apps mientras están
en un contenedor. Ahora bien, si solo volvemos a pasar por
los pasos para agregar un nuevo, permítame agregar un nuevo proyecto. Lo siento. Cuando estamos agregando el proyecto, tuvimos la opción de
agregar soporte más oscuro. Así que solo voy a hacer click
en uno aleatorio aquí. Y teníamos la opción de
habilitar Docker. Entonces todo esto habría hecho era permitirnos
elegir el SO aquí, y luego se
habría generado o proyectado con el
archivo Docker ya aprovisionado. Puedes hacerlo desde
el primer momento si
sabes que lo vas a
usar más oscuro o
puedes agregarlo fácilmente después cuando tus ambiciones
lleguen a ese punto. No, ya está hecho. Son siete. Hay comandos dotnet
que podemos usar para
publicar realmente nuestra aplicación en un contenedor sin la
necesidad de un archivo Docker. Un archivo Docker se puede
utilizar para cualquier versión de dotnet y es universal. No tienes que preocuparte si
estás usando un archivo Docker. Pero cuando volvamos,
vamos a ver cómo podemos usar comandos dotnet nativos
para contenerizar o subir.
6. Containerize . Aplicación NET: Ahora en esta lección
vamos a ver cómo podemos contenerizar una dotnet usando dotnet publish o los comandos
nativos de la CLI de dotnet. Ahora esto es único, al
menos ahora mismo
al momento de grabar, para dominar siete,
y estoy seguro que estará disponible
en versiones posteriores. Hasta el momento, dotnet six y por debajo, aún
necesitas el archivo Docker. No obstante, si estamos presionando con sus siete, entonces
podemos hacer esto. Sólo voy a seguir adelante
y crear un nuevo proyecto. Y solo voy a usar
Visual Studio para esta demo, pero puedes sentirte
libre de seguir usando Visual Studio Code. La mayor parte va a
ser impulsada por la línea de comandos. Pero voy a crear
otras API de microservicios. Voy a llamar a
este micro-servicio a api dot containers que demo. Y sigamos adelante
y creemos eso. No voy a agregar soporte Docker. No voy a cambiar
nada de la configuración anterior. Y ahora tenemos nuestro nuevo proyecto. Entonces este nuevo proyecto, necesitamos agregar un
nuevo paquete, ¿verdad? Entonces vamos a usar
el comando dotnet CLI. Estoy usando dotnet CLI
porque todo el mundo puede usarlo ya sea que estés
en Visual Studio o en el código de Visual Studio. Así que acabaré de lanzar la
terminal aquí en Visual Studio. Y voy a ejecutar
el comando dotnet add package y estamos agregando microsoft.net dot
build dot containers. Así que adelante e
instala ese paquete. Ahora con ese paquete instalado, podemos verificar con
solo hacer clic en el archivo del proyecto CS y lo
verás aquí. Ahora bien, cuando queremos darle un nombre a
nuestro contenedor, hay
ocasiones en las que podríamos tener nombres
inválidos como proyectos. Entonces, si quisieras
cambiar el nombre, realidad
podrías
agregar un nodo aquí en la
sección Property Group fuera del CSB Raj. Y esto sería
contenedor y obtendría mi ortografía correcta imagen Nim. Y luego con este nodo, en realidad se
le puede dar
otro nombre. Entonces voy a llamarlo
un macro micro servicio. Dash para escribir sólo algo. Es microservicio punto a punto api punto Clinton
es esa demo. Quiero
descontinuarlo para que solo se llame microservice dash para escribir, solo para mostrarte
que podemos renombrar la imagen real antes de
que se publique. Ahora cuando esté listo para publicar usando las redes de puntos, las
amarillas otra vez, puedo decir dotnet publish y voy a especificar
el sistema operativo. Entonces dash, dash OS, y yo solo voy a pegarme
a Linux y dash, dash arc. Y estamos especificando 64 para
demostrar que queremos un bit 64. Entonces decimos slash t publish container y luego
slash C release. Entonces con todos esos,
lo que estamos haciendo aquí, estamos viendo que queremos
la configuración de lanzamiento,
ese es el guión C. Una vez más, el dash art está especificando
una arquitectura de 64 bits. Y estamos especificando que
queremos un OS, OS basado en Linux. Sepa cuando se ejecute ese comando, van a ver que
imprimí algunos registros, pero adelante, ejecútelo. Pulsa pausa. Cuando esté hecho,
podemos ayudar juntos. Pero lo más importante,
vas a ver eso para construir la imagen con el nombre
de contenedor especificado. Si no especificamos ese nodo de nombre de
contenedor, entonces habrías obtenido
una imagen similar
al nombre del proyecto que
hemos visto antes. Entonces esas son solo pequeñas pepitas que puedes tener en cuenta. El caso es que siempre que
necesitemos configurar esta
imagen similar a whole, tenemos el archivo Docker
configurando todo tipo de entorno, es decir,
false, y así sucesivamente. Para el contenedor,
en realidad podemos especificar un nodo
diferente aquí. Así que si quería, digamos que estamos usando
dotnet 6.7 son, solo
quería un
dotnet six Runtime. Esta imagen, en realidad podría
venir aquí y especificar imagen
contenedor y luego poner
en el nombre de la imagen. Así que vamos a ver si quería
el tiempo de ejecución para dotnet six. Pude ver MCR, microsoft.com.net slash runtime, y luego la etiqueta para 6.0. Bien, si quisiera
algo más, como si realmente quisiera etiquetar esta imagen yo mismo,
podría especificar. Y yo sólo voy
a quitar esta. Fue un ejemplo, pero podría especificar etiqueta de imagen de contenedor. Y entonces esto
me permitiría establecer mi propia versión de esta caza
o imagen en particular que estoy empujando. Digamos que después de una corrección de errores, la imagen original era 1.2, 0.0. Pero tal vez hice una corrección de errores. Sé que quiero que esto
sea 1.2, 0.1. Y luego si vuelvo a ejecutar el
comando que vamos a ver que obtenemos una
imagen completamente nueva con esa versión de etiqueta. Ahí vamos. Así que solo volví a ejecutar el comando. Sé que tengo la nueva imagen
con la etiqueta 1.0, 0.1. Ahora recuerde guardar el archivo CS Bridge y
es por eso que tengo tantas carreras. A mí me ha pasado la
primera vez que no la vi. Siempre que haces un cambio
aquí tienes que ver porque esta no es una operación de compilación, es una operación inédita. Entonces si no ahorras, entonces no va
a ver el cambio es poder seguir adelante y empujar. Hay varias
otras cosas que realmente
puedes agregar cuando
estés configurando la
imagen de tu app desde este punto. Entonces, si quieres
tener múltiples etiquetas, realidad
puedes ver las etiquetas de una imagen de
contenedor. Observe que la S es
diferente de toggle. Y puede especificar
diferentes nombres de versión usando técnicas de
versionado alfanumérico y semántico. Y solo querrás
usar un punto y coma para separar cada etiqueta de versión. También puede agregar un grupo de elementos donde puede agregar más metadatos. Así podrás configurar los puertos de
contenedor que
quieras que tenga este contenedor
una vez creada la imagen. También puede crear una variable de
entorno de contenedor. Y esto, ya lo hemos
visto antes, especialmente cuando estamos configurando nuestro contenedor SQL Server donde tuvimos que aceptar
el acuerdo de licencia. Así que simplemente seguimos adelante y
creamos esta variable. Entonces, cada vez que el
contenedor gira eso, ese valor variable
está disponible. Aquí donde se sienta en el
maderero verbosidad para mí rastrear. Esto significa que
se supone que este contenedor
escupe tanta información como genera nuestro dotnet
Core up, bien, y sabemos que los core
ups pueden ser un poco conversadores, por lo que debería estar
escupiendo todo eso a la consola del contenedor. Otro ejemplo de una variable de
entorno que es posible que desee establecer sería una para el entorno ASP NET Core. Entonces aquí, cuando lo estamos
ejecutando localmente, va a salir con el desarrollo como una variable de
entorno. Sin embargo, cuando hacemos una publicación y estamos haciendo la versión de
configuración, esa variable va
a ser producción. De hecho, podríamos anular esa configuración
predeterminada y ver cuándo
estás en este contenedor, quiero que esa
variable de entorno sea desarrollo o QE slash
staging o producción, etc. así es como puedes pensar el uso de variables de
entorno. También puedes agregar etiquetas
y etiquetas solo ayuda con los metadatos y el listado
cuando está en el registro. También podemos especificar
el registro aquí, pero aún no estamos
listos para eso. Entonces con todo eso hecho, puedo hacer otro push y crear esa imagen
o actualizar esa imagen. Entonces estas una vez más son
imágenes no contenedores. Ahora quiero
realmente ejecutar mi imagen ahora para asegurarme de que
la imagen existe. Puedo saltar
a la interfaz de usuario más oscura, bajar a imágenes. Y entonces verás
aquí que tienes todas las versiones
de las imágenes que hubieras publicado
deberían estar aquí. Entonces ves aquí eso es
1.0 punto, 0.1, 0.0, 0.1. Y si selecciono cualquiera, vas a ver esta
sección llamada layers, donde son todas las líneas, los diferentes pasos que se
deben seguir para finalmente construir el contenedor
para esta aplicación. Si voy a imágenes, verás que está usando la imagen DBN porque
dije que quería Linux y está usando mi
imagen que había creado. Entonces, para ejecutar esto, podríamos hacer clic en
la imagen y luego hacer clic en ejecutar. En realidad, no me gusta
hacer eso, ¿verdad? En realidad prefiero
usar la línea de comandos. Ahora al lado de ella en
verás tirar y empujar el buje. Entonces esta es nuestra imagen local,
así que no hay nada que sacar. Pero si hacemos una encuesta, significa
que obtendrías la
versión actualizada de esta imagen, sobre todo si se
supone que es la última. Entonces, como has visto, hemos podido actualizar
la imagen con la misma etiqueta. Entonces, si hay actualizaciones
sobre esa versión, siempre
podemos ir pull y
va a hacer una actualización. También podemos empujar el hub, lo que significa que aquí es donde
vamos a empujar de nuestro repositorio local
a Docker Hub. Ya
te hubiera demostrado, whoa, eso se ve al menos cuando el IVR sigue
empujando el hub, puedes ver tu propio
contenedor en el buje y
puedes tirarlo de nuevo hacia abajo en cualquier otra máquina según
sea necesario y empezar a trabajar. Entonces así de fácil es
memorizar tu contenedor
cuando lo has creado. Sigamos adelante y ejecutemos
este nuevo contenedor. Entonces lo que voy a hacer es lanzar una ventana de terminal y
voy a hacer esta más grande. Entonces me disculpo si usar el de Visual Studio
te lastima los ojos. Lo que espero saber. Entonces estoy usando una ventana de terminal. Ya he ido
al directorio donde se encuentra
nuestra
herramienta de microservicios API demo. Y lo que voy a hacer aquí es ejecutar un comando que
diga docker run. Entonces ya hemos visto a este docker
ejecutar comando antes, ¿verdad? Voy a especificar dash, IT, especificar un puerto. Entonces voy a decir esto
que quiero que se ejecute. En el puerto 80. 80 y eso debería
resultar a través del puerto
84, tráfico amarillo. No quiero complicar
nada y usar 443. Y luego voy a especificar
el nombre de la imagen. Así que la herramienta de guión de microservicio, y puedo especificar el
destino si quiero o no. Entonces déjame
seguir adelante y darle a Enter. Veamos qué pasa. Así ves en capaz de encontrar
imagen con lo último. Por lo que es muy importante
que sigas adelante y pongas esa última etiqueta en lo que sea que se
deba tirar por defecto. Entonces déjame seguir adelante
y especificar esa etiqueta, que es 1.0, 0.1, y luego intentarlo de nuevo. Y esta vez
en realidad va a
escupir algunos registros que se parecen registros de aplicaciones
asp.net Core. Entonces, ¿qué pasa si trato de llegar
a la aplicación? Entonces sí dijimos que la
aplicación debería estar en vivo en el puerto 80, 80. Entonces cuando traigo
un navegador y voy al puerto de host
local 80, 80. Y luego pongo pronósticos
meteorológicos, que es el punto final
que vive en esa API. Vemos que estamos
recuperando nuestra API. Y veremos
también que tenemos un pequeño mensaje que viene sobre la redirección HTTPS,
eso está bien por ahora. Si nos fijamos en la interfaz de usuario más oscura, veremos que tenemos un nuevo
contenedor ejecutándose también. Y esta es, no
sé cuál
es ese nombre, pero una vez más, podríamos haber
especificado el nombre en la carrera de Docker si quisiéramos. Si hago clic en esto, verás que también está
escupiendo registros por aquí. Para que puedas ver los
registros desde la consola, puedes ver los
registros desde aquí. Y en realidad la
razón por la que está
escupiendo a la consola
que la inició. Déjame parar eso y
rehacer el comando run. La razón por la que se hace cargo la consola es porque
no especificamos dash d, lo que significa que queremos que
se ejecute como un daemon ejecutándose en
segundo plano aquí mismo. Es, libera la consola. Muy bien, entonces ese es otro
pequeño dato que puedes usar para liberar la consola cuando quieras ejecutar
tu contenedor Docker, pero no quieres que se haga
cargo de la consola. Entonces aquí el contenedor Docker
se está ejecutando una vez más. Sólo tenía que
saltar y volver a entrar. Y verás que está
funcionando una vez más. Y podemos ver la consola desde aquí sin hacernos
cargo de nuestra consola local. Entonces ahora ves cómo
puedes contenerizar tu
aplicación dotnet Core usando tus comandos de la CLI de dotnet
y ciertas configuraciones. Lee sobre la documentación con la
que puedes jugar y pones diferentes configuraciones
que resuenen contigo. Pero te lo dejaré a ti. Ahora, cuando volvamos,
vamos a ver cómo podemos usar docker-componerse para manejar la orquestación de múltiples aplicaciones que
están contenerizadas.
7. Orquestación con composición de Docker: Entonces ya tenemos una idea de qué es la orquestación de contenedores. La orquestación de contenedores
básicamente significa que tenemos varios contenedores y
necesitamos poder
orquestar el inicio de las vacaciones. ¿Por qué empiezan? Si, si uno depende del otro, cuál comienza primero, etc. entonces hay varias cosas
que necesitamos configurar
para nuestros contenedores antes de que
la palabra realmente comience. Entonces si tengo, digamos, una
aplicación de microservicios, y todos estos microservicios existen en sus propios contenedores. Pero para que la aplicación se ejecute, todas estas aplicaciones deben
estar en funcionamiento simultáneamente. Entonces nos gustaría
asegurarnos de que tenemos una forma muy repetible de tener todos ellos
funcionando al mismo tiempo. Entonces ahí es donde entra Docker
Compose. Así que solo voy
a seguir adelante y agregar soportes
más oscuros a
nuestra segunda API. Y simplemente haciendo
clic derecho y haciendo, siguiendo el asistente, por supuesto, ya
sabes, para hacerlo en
Visual Studio Code también. Pero ahora tenemos el archivo
Docker existente en ambas aplicaciones. Ahora, cuando vuelvo a hacer clic derecho, en realidad
puedo agregar soportes de Container
Orquestación. Entonces cuando haga clic en esa, me
va a preguntar, bien, ¿qué orquestador
quiero usar? Y por defecto voy a tener
Docker Compose ahí. Entonces solo voy a seguir
adelante y dar clic en Aceptar. Confirma que quiero
usar el sistema operativo Linux. Y esto va a generar un nuevo proyecto con
algunos archivos nuevos. El primer archivo aquí
es un ignorado más oscuro. Tan similar a nuestro archivo
gitignore, hay ciertas
cosas que no necesariamente necesitamos
traer con el
contenedor y todo. Entonces es solo decir
ignorar todos esos y compilar
todo lo demás. También tenemos los
ajustes de césped que JSON, lo que nos da un Docker Compose lanzó sentado AUC aquí. Ahora se está apoderando.
Podemos simplemente decir docker-componer y ejecutar eso una vez aquí en Visual Studio. Entonces con eso, podemos simplemente hacer girar lo que diga el archivo de
redacción de Docker. No o Docker. El archivo de
redacción Docker tiene dos partes. Tenemos la
redacción de guiones más oscuros y
tenemos la anulación. O invalidar nos permite especificar una determinada configuración que
queramos en cada contenedor. Entonces aquí, déjame ir primero
del archivo principal. Aquí estoy viendo que
voy a la versión se fijó. No estoy dispuesto a cambiar eso. Y luego tenemos una
sección para servicios. Y luego bajo servicios, tenemos nuestro primer servicio
que es el microservicio, uno que habíamos especificado. Queremos agregar orquestación
y soporte para. Entonces va a decir, bueno, cuando construya este contenedor, voy a llamar a
la imagen como sea ese nombre
generado, guion ese nombre. Y luego voy a construir
usando bien el contexto, donde quiera que esté el proyecto y el archivo Docker o las
instrucciones de configuración sobre
cómo se
debe generar este contenedor existe en el archivo Docker
en nuestro proyecto. Entonces, para tantas aplicaciones
como tengas que necesitas girar a la vez
cuando estés desarrollando. Puede agregar orquestación
y soporte. Así que también puedo agregar
orquestación y soporte al segundo
microservicio y el tercero n a la
n Así que si sigo adelante y vuelvo a hacer eso y
especifico los mismos ajustes, entonces van a
ver que ahora tengo un segundo microservicio
aquí en ese archivo. Agradable y fácil. Entonces, si salto
al
archivo de redacción de Docker y creció porque ahora
tenemos más como para dos servicios diferentes y
tantos servicios como usted tiene, es posible que tenga anulaciones R-nada. Pero aquí lo que estamos
haciendo es especificar que el ambiente debe
ser desarrollo. Siempre podemos cambiar
eso basándonos en nuestras necesidades. Entonces mientras estamos en Visual
Studio, claro,
esa
variable de entorno definitivamente
querrá estar en desarrollo. Podemos especificar que
queremos puertos HTTPS, HTTP. Ahí vamos. Entonces podemos especificar volúmenes. Entonces un volumen en naranja más oscuro, contenerización en
básicamente es una era para el almacenamiento, para la persistencia. Entonces, cuando el contenedor
se está ejecutando, no
queremos
perder los datos. Cuando pusimos
en marcha el contenedor, debería
recordar el
último lugar en el que se encontraba. Por lo que esto es especialmente
importante para los contenedores de
bases de datos y contenedores de
bocetos listos, etc. así que cuando decimos volúmenes aquí, solo estamos diciendo
que queremos almacenar los secretos del usuario. También queremos almacenar ciertas otras
configuraciones, ¿bien? Entonces, sean cuales sean esas
configuraciones, por favor persisten incluso cuando
un contenedor no se esté ejecutando. Así que ahora que tenemos
un recorrido rápido de cómo ve realmente
nuestra contenerización o Docker
Compose, o Docker Compose
y archivos de anulación. Sigamos adelante y
veamos qué pasa cuando corremos con Docker Compose. Así que sólo voy a pegarle a Run. Y en nuestro navegador tenemos nuestro primer micro-servicio funcionando. Ahora, el primer microservicio fue creado con soporte Swagger. Vemos cómo podemos llegar
a ese punto final. Pero si vuelvo
a Visual Studio, te darás cuenta en la sección
con los contenedores, verás que tengo el
microservice one container, así que tengo uno
existente para ello. Entonces es crear un contenedor
completamente nuevo basado en la redacción de docker. Y está creando un contenedor para el segundo microservicio. Y con tan solo hacer clic en
esta
vez, pudo lanzar
ambos servicios que
pueden o no depender el uno del otro. Si miré en la interfaz de usuario más oscura, verás que tienes una nueva
sección de Docker Compose que aparece. Y esta sección Docker
Compose cuenta con ambos contenedores para
los microservicios. También cuenta con los diferentes
puertos para cada uno. Así que fácilmente puedo seguir adelante
y navegar a cualquiera de ellos. Y puedo simplemente dejar
de todos ellos usando una parada. También podría haberlo hecho,
probablemente debería haberlo detenido desde Visual
Studio también. Entonces ahora que entendemos cómo funciona Docker Compose y
orquestación. Y hay otro
nivel a esto donde presentaríamos
Kubernetes 0s, que hace mucho más que
solo hacer girar contenedores. Pero veremos eso
brevemente más adelante. En la siguiente lección,
vamos a saltar a Microsoft Azure
y vamos a crear nuestro servicio Container
Registry. Y luego mira cómo podemos empujar nuestros contenedores a ese registro.
8. Registro de contenedores: Bien, así que volvamos a
saltar a nuestro portal y
vamos a seguir adelante y
buscar el Registro de Contenedores. Entonces ese es un contenedor de búsqueda. Y queremos registros. Y vamos a crear
nuestro propio Registro de Contenedores. Entonces, como de costumbre,
vamos a seguir adelante y rellenar este formulario. Entonces lo estoy poniendo en el grupo de recursos
habitual. Le he dado un nombre. Y tenga en cuenta que tiene reglas de nomenclatura muy
estrictas. Entonces guiones, no
soy una carga o no se permiten
caracteres especiales. Entonces estoy llamando al mío
no es por supuesto ACR. Y eligiendo la mejor
ubicación para mí, y estoy usando el sesgo básico. Entonces esto va a costar un
poco de dinero. Así que ten en cuenta eso. Entonces, sigamos adelante y
revisemos y creemos. Una vez hecho esto, podemos
saltar a nuestro recurso. Ahora obtenemos el tablero
habitual y nos
está mostrando
cuánto almacenamiento tenemos, cuánto se usa. Incluso tenemos una
URL pública a nuestro registro. Así que recuerda que si bien es una URL pública,
registros privados, así que usando Microsoft como tuyo, administración de usuarios
incorporada y lo
que sea que estés usando en
tu organización, puedes agregar tu propia seguridad a
tu registro
privado para asegurarte que los desarrolladores puedan extraer, empujar y parchear
imágenes de contenedor en consecuencia. También tenemos los repositorios
que podemos conectar nuestras herramientas para poder
administrar y tirar y empujar. Entonces, si voy a acceder a las claves, podré iniciar sesión
como usuario administrador. Entonces aquí hay un nombre de registro que es el servidor de inicio de sesión y usando
las credenciales de usuario administrador. Entonces ahora que tengo el acceso
al nombre de usuario y contraseña
a nivel admin, puedo lanzar mi terminal. Y voy a
ejecutar un login de Docker, seguido del nombre de
nuestra dirección de servidor de inicio de sesión, que es en mi
caso, ¿es caballo, ECR punto como tu CR? Entonces seguiré adelante
y presionaré Enter. Entonces
me va a pedir el nombre de usuario. Así que sólo voy a copiar
y pegar esa parte. Y luego la contraseña, que por supuesto sólo
voy a copiar del portal y usar el terminal
y presionar enter. Y entonces voy a ver aquí,
Logan tuvo éxito. Ahora acabo de despejar la
pantalla para que pudiéramos tener una nueva pizarra. Pero una alternativa a usar
el inicio de sesión de Docker
sería usar el
comando bash es un inicio de sesión. Una vez que hagas
eso, te va a llevar a
través de eso apagado, cero apagado. Autenticación
contra Microsoft como ceros y unos que estás
autenticado. Entonces puedes ver,
es ACR login y luego especificar el nombre
del registro al que
te estás conectando,
que sería, ¿es grosero? Y no tienes que poner
en el servidor de inicio de sesión completo, solo di el nombre
del registro y luego eso te registraría en el
registro de la misma manera. Entonces esas son dos formas en las
que realmente podrías seguir adelante y autenticarte. Ahora, veamos
empujar por encima de la imagen. Entonces voy a usar
la imagen docker para nuestra herramienta de microservicios solo porque tiene
un nombre más corto, es más fácil simplemente
usar ese nombre. Bien, entonces el
microservicio guión dos, eso es lo que vamos a estar empujando para instar a la historia. Así que vamos a comenzar
con esta etiqueta de comando docker. Y luego fui a
especificar el nombre y la
versión correspondiente porque no
hablamos de elitista. Entonces solo estoy especificando
la versión aquí. Y lo estoy etiquetando con un alias relativo a la dirección de registro en la
que quiero que se encuentre. Bien, entonces, ¿qué significa esto? Significa que estoy tomando esta imagen local
y la voy a empujar a esta dirección
en este repositorio, y debería llamarse así. Ahora,
al no especificar una etiqueta, automáticamente
se
marcará como la última. Entonces claro, si quería
mantener la misma versión, sólo
puedo seguir adelante y
especificar la versión de acuerdo. Bueno, fui a dejarla
versión de este embudo. Entonces, cuando hago esta
etiqueta, presiono Enter. El segundo paso
sería hacer un empujón. Entonces quería decir Docker push. Y luego voy a empujar la imagen del
contenedor con alias nulo. ¿Bien? Y entonces esto ahora va a conectarse
una vez más
a nuestro registro. Va a usar la etiqueta
predeterminada latest y la
está empujando a esa dirección. Entonces esta barra de registro, esto lo llamaremos un
repositorio y ese nombre. Entonces una vez que esto se complete, si
vuelvo a saltar al portal y busco en repositorios, no
voy a ver que
tengo esto como nuestro repositorio. Y cuando haga clic en él, veré que
tengo la última etiqueta aquí asociada a esta imagen. Bien, y luego desde aquí
puedo hacer una
encuesta si
quisiera y sacar esto
del registro a voluntad. Esta es una buena manera de
mantener
sus aplicaciones
contenerizadas y en un registro para que
los desarrolladores puedan venir y simplemente obtenerlas
cuando estén listas. Y te ves cuando tienes
un equipo que gira y
tienes configuraciones ambientales complejas, esto es muy,
muy importante y fácil usar porque entonces simplemente
pueden tirar hacia abajo estas imágenes y tener la aplicación ejecutándose en su entorno
con una configuración mínima. Entonces, si copio esto y luego hago un tirón de Docker justo después, simplemente
relanzaré
el terminal y pegaré Eso es un pool más oscuro
y está tirando directamente del repositorio con la
etiqueta latest y presionaré Enter. Entonces puedes
pasar a la lista de imágenes en
UI Docker Desktop más oscura, y verás esa imagen
aquí disponible para su uso. Bien, así que simplemente puedo hacer clic en
eso y hacer girar la ejecución la aplicación o usar mi comando docker run
que prefiero usar,
en realidad empezar a usarlo . Ahora otra forma en que puedes ver todas las imágenes que
tienes es
usar el comando docker images. Y eso enumerará todas
las imágenes que están disponibles actualmente, así
como sus identificaciones. Entonces, si quería
eliminar una imagen, digamos que quería eliminar la versión 1.0 de mi computadora. Puedo tomar ese valor de identificación. Entonces puedo ver una RMA más oscura, que es la abreviatura de eliminar
imagen y pegar en ese ID, y luego seguirá adelante
y la borrará por mí. Del mismo modo, si estoy
usando Docker Desktop, siempre
puedo simplemente ir a la
imagen y presionar el botón. Entonces verás que puedes
equilibrar entre las cosas de la interfaz de usuario y los comandos. Pero al menos ahora
sabemos cómo empujar nuestra imagen a nuestro registro
en Microsoft Azure. Entonces podemos hacer
tantas piscinas como
necesitemos contra ese registro. Una vez más, esto es
genial para la organización. Los cuatro contenedores en
diferentes aplicaciones. Es posible que nuestro equipo de desarrollo necesite acceder a
medida que avanzamos.
9. Instancias de contenedores de Azure: Así que ahora volvamos a nuestro portal y vayamos a nuestro,
a nuestro servicio de
Registro de Contenedores. Ahora tenemos el concepto de aprovisionar
realmente la
imagen como contenedor. Lo hemos hecho localmente, hagámoslo en la Nube. Ahora hay varias formas. La manera fácil que te
voy a mostrar
en esta lección es
usar el como tus instancias de
contenedor. Así que eso nos permite
aprovisionar contenedores sobre la marcha en base una imagen y
se alojaría en la Nube. Entonces, si
salto a repositorios y miro nuestra
imagen publicada aquí, verás que tienes la
opción de ir a la etiqueta, la versión específica
que deseas. Y luego puede ver las instancias
ejecutadas se
implementan en la aplicación web. Entonces vamos a hacer ambas cosas. Empecemos
con la instancia de Ron. Aquí. Se va a lanzar el blade de creación para
la Instancia de Contenedores. Así que sólo voy a llamar a
este micro servicio dash dos porque ese es el
único que ponemos en orden. Microservicio guión dos,
dejaremos todo por defecto, usaremos el mismo grupo de recursos,
la ubicación apropiada. Podemos especificar los
recursos que queramos para este contenedor y podemos especificar querer una dirección IP
pública. Voy a decir que sí. Y lo voy a dejar para
transmitir en un puerto 84 ahora. Y vamos a
seguir adelante y darle a Crear. Y una vez que se haya completado ese
proceso de creación, podremos saltar
al recurso. Y a partir de ahí tenemos nuestra aplicación de microservicios aprovisionada en
Container Instancias. Entonces aquí podemos reiniciar, parar, quitar este contenedor. Y veremos aquí que
tenemos un contenedor ejecutándose en el servicio de
instancias de contenedores, y tenemos una dirección IP pública. Ahora, puedes obtener un nombre
completamente calificado, pero generalmente establecerías ese valor cuando
estás pasando por configuración del
asistente porto a través los pasos normales donde
tienes que rellenar todo,
lo básico y el
networking, top, etc, etc. o si usas el comando. Entonces por ahora tomamos
la ruta fácil y
podemos retroceder pedaleando y mirar
cómo es el mago. Pero por ahora, solo
voy a navegar a la API diploide a través de esta
una dirección IP pública. Entonces, si abro una
nueva pestaña y escribo esa dirección IP pública
y solo escribo ese punto final de pronóstico del tiempo. Ya que eso es
lo único que hay ahí. Y déjame corregir mi ortografía y volver a intentarlo. Ahí vamos. Entonces aquí estamos golpeando la API diploide dentro
de ese contenedor. Y ese contenedor se está ejecutando en nuestro
servicio de Instancias de Contenedores en la Nube. Por supuesto, si añadimos un nombre de dominio totalmente
calificado, podríamos
calentarlo a través de esa dirección. Ahora solo el buck chuck
un poco y salta
al asistente para crear
una instancia de contenedor. Si lo miras, llena
la información básica, ya
sabemos todo eso. Tenemos varias opciones de sesgo, pero entonces la disponibilidad
es relativa a nuestra región. Para que puedas leer más sobre
eso por tu propia razón. Si no estás viendo
lo que te gustaría. Podemos elegir nuestra fuente de imagen. Podemos tener las
imágenes Quickstart donde solo
podemos elegir una
de estas muestras. O podemos elegir
de nuestro registro, que es básicamente lo que hicimos. Así que solo podríamos buscar el registro apropiado y
luego la imagen apropiada, y luego la
versión apropiada que deseemos. Podemos cambiar el tamaño
del contenedor. Y luego podemos
mirar otros registros, ya sean registros públicos
o privados y proporcionar las
credenciales en consecuencia. Ahora, por supuesto, probablemente sea mejor tener todo en Azure y no tener algunas cosas en Docker Hub
y algunas cosas en un cero. Por supuesto, con base en tus rodillas, en tu arquitectura
y en tu organización, quieres tomar las
mejores decisiones posibles. Pero viendo que este es un curso de
cero desarrolladores, vamos a sesgar
todo hacia mantener todo en
Microsoft hace Europa. Ahora para la parte de redes, podemos elegir una dirección IP pública, privada o ninguna. También podemos elegir esa etiqueta de
dominio, ese nivel de DNS. ¿Está bien? Por lo que la etiqueta de nombre DNS para la dirección IP pública
será parte de un nombre de dominio completo o FQDN que se puede utilizar para
acceder al contenedor. Entonces esa era la pieza
faltante con el otro método que usamos para crear este ACI o
contenedor para nuestra imagen. Si saltamos a avanzado, vemos que aquí tenemos cierta cantidad de oxígeno de orquestación. Entonces podemos configurar nuestra política de
reinicio donde digamos si tal vez hay un
fallo o sucede algo, ¿quiero reiniciar
el contenedor? Puedo decir si pasa algo, reinicia siempre significa que
habrá un Reinicio periódico. Nunca significa que
correrá hasta que lo detenga. Y luego claro, después de
poner todos esos, podemos seguir adelante
y crear notas. También puede especificar sus variables de entorno para este contenedor en particular
que está girando. Así que eso es todo el trabajo de las instancias de
contenedor en nuestras instancias de
contenedor de Azure. Ahora claro que sí
vio una opción donde
podríamos haberlo implementado en una aplicación web. Entonces, cuando volvamos,
vamos a ver un servicio de aplicaciones web cero
con contenedores.
10. Publicar en Instancias de contenedores de Azure: En esta lección,
vamos a explorar los matices de crear un contenerizado como
su Web App Service. En realidad no
vamos a crearlo. Solo vamos
a ver algunos de los diferentes escenarios que
debemos tener en cuenta. Entonces cuando hago clic en Crear, vamos a lo básico. Por supuesto que sabemos que llenamos la información básica
con nuestro grupo de recursos. Voy a dar
este nombre específico. Sólo voy a decir
microservicio dash two dash. Algo único que estoy seguro que nadie más
en Internet tiene. Y entonces ¿cómo
vamos a publicar? Entonces antes de ahora hemos
mirado el código. ¿Y si voy al contenedor
Docker? Entonces si hago clic en el contenedor Docker y noto que me
va a preguntar qué sistema
operativo hasta ahora
hemos estado usando las notas, así que no hay necesidad de cambiar eso. Voy a utilizar la mejor
región en función de mis necesidades. Y luego voy a especificar
unas nuevas plantas de servicio. Entonces fíjate que no puedo usar el plan Code Service porque el modelo de hosting es
diferente cuando hace frío, entonces podemos reutilizar el
plan de servicio existente que
teníamos de antes en este curso. Porque estoy eligiendo el contenedor
Docker, sin embargo, tengo que hacer uno nuevo y no
soy de los que vayan
al precio premium. Todavía puedo obtener
el precio gratis, así que simplemente elegiré ese. Y luego si vamos
a la tina más oscura, entonces tenemos varias
opciones aquí. Puedo elegir un solo contenedor
versus un Docker Compose. Y fíjense que
todavía está en vista previa. Entonces, si elijo
contenedor único que me
permita especificar la fuente de la imagen, quiero usarla
desde Docker Hub, algún otro registro privado. Tan oscura banda entera, ECR o un Registro de
Contenedores cero. Esos no son los
únicos dos registros. Y a veces podrías
terminar aprovisionando tu propio registro en tu
propio entorno, ¿verdad? Entonces esas son todas opciones. Pero si elijo mi Azure
Container Registry, entonces
puedo seguir adelante
seleccionar el registro, seleccionar la imagen y su etiqueta. Puedo establecer un
comando de inicio si lo deseo. Salta a la red. Estoy prácticamente todo lo
demás sigue igual. Lo que sea que
ya
estés acostumbrado está familiarizado cuando se
trata de aplicaciones web de Azure. Usar la carga de trabajo más oscura para Azure Web App Service sería una
barra muy similar en el hecho de que no, estamos usando contenedores docker. Y claro, a la hora de actualizar las etiquetas y el desarrollo
continuo y despliegue
continuo, todas esas son opciones que
están disponibles para nosotros una vez que
aprovisionamos esto arriba. No obstante, en aras
del tiempo y del costo, no
procederé. Por supuesto que puedes seguir adelante
y proceder con un nivel gratuito. Pero recuerde que el Registro de Contenedores y Instancias de
Contenedores están costando. Para que puedas seguir adelante
y experimentar y obtener cualquier información que
necesites en consecuencia. Yo, sin embargo, me detendré aquí. Entonces, cuando volvamos, vamos a echar
un breve vistazo a Kubernetes 0s, solo alguna teoría. Una vez más, este no es un curso en profundidad sobre
Docker y orquestación. Hay mucho que aprender. Yo solo quería
darle una apreciación de cómo funcionan los contenedores agujero. Podemos poner nuestras
imágenes en Azure y agrupar instancias de aplicaciones
basadas en esas imágenes. Entonces, cuando volvamos,
vamos a ver
algunas teorías que rodean a Kubernetes 0s y obtener una comprensión de cómo
funciona en este contexto actual.
11. Resumen de los servicios de Azure Kubernetes: Bien chicos,
así que en esta lección solo
vamos a
repasar algunos de los conceptos básicos que rodean a
Kubernetes es solo una teoría. No vamos a
meternos en Kubernetes es, es un juego de pelota completamente diferente. Entonces no vamos a entrar en
ningún detalle y discurso, pero sí quiero que aprecien por qué normalmente oirías hablar de Kubernetes es
cada vez que escuchas hablar de más oscuro y contenerización. Kubernetes ofrece un mecanismo
confiable de programación y orquestación para cargas de trabajo de
aplicaciones tolerantes a fallas. Eso es un montón de
grandes palabras para decir que nos
ofrece la capacidad administrar
contenedores enteros son provisión, la provisión reiniciada en
base a diferentes métricas. Así que en realidad podemos
usar
Kubernetes es configurar diferentes reglas para administrar u orquestar
o contenedores. Una vez más, para aplicaciones nativas de
Cloud o
basadas en microservicios, esto es muy importante
porque hay varias partes móviles
que necesitan estar sanas, probablemente necesiten
escalar individualmente. Entonces usando Kubernetes es que
podemos orquestar todo eso. Podemos decirle a uno de
los servicios que
necesitamos tres contenedores
durante el día. Otro necesita a
otro nunca necesita escalar. Todas esas cosas son
posibles con Kubernetes. Para ello, utilizamos un enfoque
declarativo, y nos permite usar este enfoque declarativo
para manejar despliegues. Y está respaldado por un sólido conjunto de APIs para nuestras necesidades
de gestión. Proporciona administración de contenedores para organizarlo,
agregarlo, eliminarlo o actualizarlo hasta varios
contenedores en ese momento. Ahora, cuando usamos
Kubernetes, podemos abstraer tareas útiles
como la autorreparación, el
escalado, la
administración de redes, el almacenamiento, las actualizaciones de
contenedores y la administración de
secretos. Ahora bien, la razón por la que esta lista es significativa es que vimos algunos de estos desafíos
cuando estábamos mirando a través de contenedores están arriba. Bien. Vimos eso para ser
muy conscientes de qué dirección
IP o más bien qué número de
puerto se asignó
a cada contenedor. Tuvimos que ver qué tan bien, no lo
hicimos en
estos ejercicios atornillados a la
arquitectura de microservicios. A veces los servicios necesitan
hablar entre ellos, así que definitivamente
necesitamos saber cómo van a establecer contactos
entre ellos. ¿Cómo vamos a manejar el
almacenamiento o vamos a actualizar el contenedor cuando se actualice
esa
imagen del contenedor? ¿Cómo reiniciamos el contenedor para manejar esa nueva
versión de la imagen? Entonces sintiendo, si algo
se siente, ¿
reiniciamos, vimos que podemos
hacer algo de eso
usando las
Instancias de Contenedores en línea Y claro, si nos
sentamos y nos
monetariamos nosotros mismos, probablemente podamos hacerlo. Pero, ¿por qué
nos decimos cuando podemos usar Kubernetes es el automatizado? Ahora bien, este es un comentario una vez más de la documentación de
Microsoft. Es una descripción general rápida de cómo nuestros Kubernetes es
lo que llamaremos clúster. También puede ver a los expertos en clave que se ve el clúster. Entonces de aquí tenemos
el avión de control. Aquí es donde se sentaría toda nuestra lógica de
orquestación. Y luego tenemos cubetas
o instancias clave. Y cada uno de estos
tiene el contenedor. Se ve como un nodo. Y tiene tiempo de ejecución para
el contenedor así
como el proxy para comunicarse
con el plano de control. Y entonces tantos contenedores
como haya Kubernetes es una vez más los orquestará
y gestionará todos ellos. Ahora, claro, si tenemos Kubernetes es
vamos a tener un Azure Kubernetes
Service o AKS para abreviar. Por lo que esto nos ofrece una forma
rápida de desarrollar e implementar
aplicaciones o contenerizadas en un cero. Entonces vimos lo rápido y fácil
que fue con el ACR y ACI. Bueno, es aún más fácil y robusto si ponemos AKS en la mezcla. Y nos da toda
la potencia de la
orquestación de Kubernetes respaldada por Microsoft como su
infraestructura. Es un servicio de pago por uso. Y una vez más, la escalabilidad
y todas esas cosas están en Twine en este
servicio está totalmente gestionada, por lo que no tenemos que
preocuparnos por ninguno de los
software y hardware subyacentes. Y ofrece más funciones de
orquestación y administración que ECI
o Container Instancias. Pensemos en ello como
un servicio de administración o extensión
de servicio de gestión
para nuestro servicio ACI. Entonces, una vez más, todos
estos servicios pueden unirse para
ayudarnos a entregar una
aplicación contenerizada que esté respaldada por una orquestación
y escalabilidad adecuadas. Entonces ahora que tenemos
una apreciación de Kubernetes es al menos desde
un punto de vista teórico. Volvamos a
saltar a nuestro cero y limpiar nuestros recursos y ver cómo podemos liberar algo de espacio y ahorrar algo de dinero.
12. Limpieza de recursos: Entonces, a medida que nos
acercamos al
final de esta sección, queremos asegurarnos de
que limpiamos nuestros recursos y no gastemos más dinero del necesario en nuestra suscripción
a Azure. Aunque no pudieras
seguir algunas
de las plantas de guisantes, al
menos entiendes
los conceptos y solo
veremos cómo
podemos eliminar los recursos. Entonces la forma más fácil de
eliminar nuestros recursos, ir al recurso, por
supuesto, y hacer clic en Eliminar. Ahora bien, si tienes otros recursos en el
mismo grupo de recursos, siempre
puedes simplemente
eliminar el grupo de recursos y eso destruiría todos
los recursos en consecuencia. Ahora tengo algunas
cosas importantes en este grupo de recursos, así que no estoy dispuesto
a tomar esa ruta. En cambio, voy a eliminar los recursos
de manera individual. Entonces, para eliminar nuestro Registro de
Contenedores, solo
presionaré Eliminar. ¿Estás seguro de que quieres eliminar? Bien, y entonces eso activará
esa operación de eliminación. Del mismo modo,
voy a pasar a la instancia de contenedor para
la herramienta de guión de microservicio. Y voy a seguir adelante
y borrar eso también. También voy a volver a visitar una operación anterior donde
borramos las imágenes. Las imágenes ocupan espacio. Puedes ver si tecleas en
el comando docker images, todas las imágenes que tienes en tu computadora y sus
respectivos tamaños por imagen. Entonces, si no necesitas la imagen, solo
puedes eliminarla. ¿Bien? Entonces aquí se ve que la imagen de SQL
Server es de 1.33 gb. Y luego algunas de las imágenes de las apps en las que
estábamos trabajando. Todos ellos tienen
un total combinado de probabilidad que
supera un gigabyte. Entonces, para eliminar una imagen, simplemente
puedes hacer doble clic
en esa identificación de imagen y copiarla. Y luego en el comando, tecleas RMI más oscuro, abreviatura de remove
image, piece ese ID ,
presiona Enter, y luego
seguirá adelante y lo eliminará. Así podrás obtener una tierra una vez. Veamos cuál es esta respuesta. Una respuesta del conflicto
D11 al poder eliminar esto, se debe forzar a medida
que se está utilizando. Entonces, si hay que forzarlo, entonces vamos a reescribir ese comando. Docker son un guión loco F, y entonces eso
forzará la eliminación. Bien, así que esa es otra forma que puedes limpiar algunos de los recursos que probablemente
habrías rehuido durante esta sección. Entonces, vamos a concluir esta
sección del curso.
13. Conclusión: Entonces en esta sección aprendimos sobre contenerización
y más oscuro. Y nos dimos cuenta de que Docker
es una tecnología que tiene, somos una empresa que brinda tecnología y ha
establecido un estándar para la contenerización en toda
la industria de TI. Mientras exploramos la
contenerización y la más oscura, analizamos cómo podemos
contenerizar un proyecto.NET Core. Miramos usando
el archivo Docker. Analizamos el aprovisionamiento de recursos de apoyo
adicionales e incluso cierta cantidad de historias
orales sobre el
uso de Docker componer. También analizamos
cómo podemos implementar
nuestras aplicaciones en Azure
Container Instancias y cómo podemos subir nuestra imagen, nuestras imágenes de contenedor
a un registro. En este caso, nos enfocamos en
Azure Container Registry. Pero si estás usando
Docker Desktop, es muy fácil empujar el Docker Hub si quieres
usarlo como tu registro. También hicimos una revisión rápida de Kubernetes y
Container Orquestación y lo que todo eso significa. Así que gracias
por seguir esta sección conmigo. Te veré en el siguiente módulo.