In this lesson, I'll show you the purpose of creating and deploying container based applications in common scenarios for their usage and we will review the options for creating container applications in a Azure subscription. What is a container? A container is an alternative way for developers to package software applications to be hosted on web application servers or other backend servers. In the past, every application had to be hosted on its own virtual machine and this created tremendous amount of overhead and maintenance and management for both developers and systems engineers. You can see in this comparison of hosting applications on virtual machines versus containers that containers are significantly more efficient to run than virtual machines because they use less resources. Containers do run isolated from each other in the same way that virtualized computers do but containers do not contain a complete copy of the operating system and therefore require less memory and less management and maintenance than an entire virtual machine. This has led to a very large adoption of container computing in our industry. It's also attractive that containers can run on Linux and Windows operating systems which gives engineers and cloud architects flexibility on how they host these containers. In addition to being flexible as far as where you deploy them, container computing also has the advantage of being highly scalable. Because these containers are a complete copy of an application if you need better capacity to provide better response time for user performance, it's very easy for cloud environments such as Azure to replicate or scale your container. By doing this, you will incur additional fees because it will be allocating additional hardware resources to improve the performance of your container but it will be able to adapt to your current load including rapid scale up and scale down based upon your current user demand. This is an ideal scenario for web architects and Azure engineers in terms of being able to respond quickly to high load scenarios, but save money and scale down in scenarios where your system is quiet. Container computing started as a technology created by an organization called Docker, but has progressed to become something that is part of the Open Container Initiative. And now there are many tools for managing container-based solutions including a popular orchestration tool called Kubernetes. Kubernetes is a way to manage and scale applications that consist of many different containers. As you can see in this picture Kubernetes allows you to run administrative services in a control plane that will manage and watch the performance of your hosting machines which are called nodes. Your hosting nodes contain one or more running containers, for example, you could have a container for the front end part of your website that serves pages directly to clients and different container applications for things such as backend services or databases. By being able to run containers on one or more nodes and being able to run more than one container on a node it gives the Kubernetes environment the ability to respond to user demand and balance the performance of your application across your computing resources. This is all highly automated in a system such as Azure Kubernetes Services. In addition to being a more modern way to package applications that there are more efficient than traditional virtual machine applications it's also attractive that container applications are standardized by many vendors in our industry. If we take a look at Docker Hub, which is a location for vendors to publish pre-packaged containers for you to use, immediately, you can see that there's the ability to search this for verified publishers or Docker official images. By doing this, you'll see many popular products that can be deployed in very few clicks on services such as Azure container hosting services, or deployed in something as advanced as Kubernetes. By having access to this, by having access to this library of pre-created images, engineers and architects can deploy industry standard products in a simplified manner in a way that is compatible with an open architecture called the Container Initiative. Azure has multiple ways to host containers from the advanced solution such as its Kubernetes compatible service, AKS or simple single container hosting in solutions such as Azure Container Apps. The Azure Kubernetes Services was designed to provide a complete match for the native Kubernetes that was designed by Google. This allows you to host your Kubernetes on the Azure Cloud with the same command line capabilities as the original Kubernetes specification. This is very flexible because it allows customers with an existing investment in Kubernetes expertise to use Azure as its hosting platform without having to learn new hosting technologies. There is a native Azure capability for hosting container apps called Azure Container Apps and it has similar capabilities to traditional Kubernetes. Without the need to learn that third party technology. You can now host containers directly in an Azure subscription using Azure Container Apps with the same simplicity as deploying traditional web applications and yet still take advantage of the additional orchestration services that you would normally get from a traditional Kubernetes hosting environment. Let's return to the Azure Portal and look at some of the settings related to creating a Azure container app. In order to manage container apps in an Azure subscription we must first search for container apps in the search box at the top of the screen. Let's do that now. You can see that we are presented with an opportunity to click on container apps and you can see there are no container apps deployed as part of the subscription. Let's take a look at some of the options we have related to hosting containers. If I click the create button we're now presented with the screen for configuring a brand new container hosting application. The first thing we must choose is the resource group and we'll select the DemoRG. All resources created in Azure subscription must belong to a single resource group. We can also now give this a container application name and we'll call it our demo app. Now we must select where we would like this container application hosted. This is called a Container App Environment. This is where we select the appropriate region for a container to be located. We can host applications anywhere in the globe where Azure has a data center. In addition to selecting where we would like to host our application, we also have the option to select what container we would like to deploy. This is where we could pick a container from our internal container registry where our software developers built our custom in-house applications or we could provide a path to an external image in the Docker Hub or other external container registry for applications that might be created by other vendors. Stay tuned for the next lesson where we will create a container app and deploy an application from a container registry. Thanks for watching.