ASP. Desarrollo de NET, Docker y Microsoft Azure | Trevoir Williams | Skillshare
Buscar

Velocidad de reproducción


1.0x


  • 0.5x
  • 0.75x
  • 1x (Normal)
  • 1.25x
  • 1.5x
  • 1.75x
  • 2x

ASP. Desarrollo de NET, Docker y Microsoft Azure

teacher avatar Trevoir Williams, Jamaican Software Engineer

Ve esta clase y miles más

Obtenga acceso ilimitado a todas las clases
Clases enseñadas por líderes de la industria y profesionales activos
Los temas incluyen ilustración, diseño, fotografía y más

Ve esta clase y miles más

Obtenga acceso ilimitado a todas las clases
Clases enseñadas por líderes de la industria y profesionales activos
Los temas incluyen ilustración, diseño, fotografía y más

Lecciones en esta clase

    • 1.

      Introducción

      1:02

    • 2.

      ¿Qué son los contenedores?

      9:41

    • 3.

      Docker de la instalación

      4:16

    • 4.

      Crear un contenedor

      11:06

    • 5.

      Configuración. Proyecto básico

      13:34

    • 6.

      Containerize . Aplicación NET

      13:21

    • 7.

      Orquestación con composición de Docker

      6:42

    • 8.

      Registro de contenedores

      7:24

    • 9.

      Instancias de contenedores de Azure

      5:36

    • 10.

      Publicar en Instancias de contenedores de Azure

      3:34

    • 11.

      Resumen de los servicios de Azure Kubernetes

      4:56

    • 12.

      Limpieza de recursos

      2:27

    • 13.

      Conclusión

      1:04

  • --
  • Nivel principiante
  • Nivel intermedio
  • Nivel avanzado
  • Todos los niveles

Generado por la comunidad

El nivel se determina según la opinión de la mayoría de los estudiantes que han dejado reseñas en esta clase. La recomendación del profesor o de la profesora se muestra hasta que se recopilen al menos 5 reseñas de estudiantes.

18

Estudiantes

--

Proyecto

Acerca de esta clase

Este curso está diseñado para equipar a los estudiantes con los conocimientos y habilidades necesarios para desarrollar aplicaciones web modernas, escalables y basadas en la nube usando ASP.NET, Docker y Microsoft Azure.

El curso comienza con una introducción a ASP.NET, que es un marco popular para la creación de aplicaciones web con C#. Los estudiantes aprenderán cómo construir aplicaciones web usando ASP.NET y sus herramientas asociadas, como Visual Studio y . Núcleo neto.

A continuación, el curso cubrirá Docker, una plataforma popular para aplicaciones de containerizing. Los estudiantes aprenderán cómo crear y administrar contenedores de Docker para aplicaciones de ASP.NET, y cómo implementarlos en varios entornos.

Finalmente, el curso introducirá Microsoft Azure, una plataforma de computación en la nube que proporciona una amplia gama de servicios para construir, implementar y administrar aplicaciones. Los estudiantes aprenderán cómo implementar sus aplicaciones de ASP.NET en Microsoft Azure y cómo aprovechar los muchos servicios de Azure, como el servicio de aplicaciones de Azure, la base de datos SQL de Azure y las funciones de Azure.

A lo largo de todo el curso, los estudiantes trabajarán en proyectos prácticos que les permitirán aplicar los conceptos que aprenden en clase. Al final de este curso, los estudiantes tendrán una sólida comprensión de ASP.NET, Docker y Microsoft Azure, y podrán construir e implementar sus propias aplicaciones web en la nube.

Conoce a tu profesor(a)

Teacher Profile Image

Trevoir Williams

Jamaican Software Engineer

Profesor(a)

Habilidades relacionadas

Desarrollo Desarrollo web
Level: Intermediate

Valoración de la clase

¿Se cumplieron las expectativas?
    ¡Superadas!
  • 0%
  • 0%
  • Un poco
  • 0%
  • No realmente
  • 0%

¿Por qué unirse a Skillshare?

Mira las galardonadas Skillshare Originals

Cada clase tiene lecciones cortas y proyectos prácticos

Tu membresía apoya a los profesores de Skillshare

Aprende desde cualquier lugar

Ve clases sobre la marcha con la aplicación de Skillshare. Progresa en línea o descarga las clases para verlas en el avión, el metro o donde sea que aprendas mejor.

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.