 Hi everybody, welcome to the latest episode of From the Rock to the Cloud with me, Tom Hall. As you know, I'm the host of this series. We're deeply into season two now, and this being the second episode. And as always, we try and discuss things server, Azure, rock, cloud related. It's in the title. It's obvious when you think about it. And that's what we try and cover. We try and make it as fun, as interesting as possible. Each episode, we have a special guest. We have this guy on the first episode of this season two. We're actually going on the second episode of season two. He's going for like a kind of a record. Wouldn't he make it through to episode three of season two? I don't know. We might kill him off. It might be a red wedding situation where we just, you know, we just, we just get up to Tom Oswira. No, I'm only joking. But, you know, as always, we try and talk about things that are hopefully of interest to you. Please let us know if you have any comments. Let me know if you want to talk about anything in particular, if you have any comments, send them over to us, and we will try and address those for you so that you can get that insight from said expert. So today's session, today's chat. By the way, before, I've just got to say that is a cool t-shirt. I love the Able t-shirt. I think that is brilliant, by the way, Tom Oswira. We're going to talk about, well, we're not going to accept the defaults, as your t-shirt says. We're going to talk about modernizing applications, Windows containers, and Kubernetes. Hopefully you'll explain to me what Kubernetes is later on, but please. And so for the next 30 minutes, we're going to talk with the one, the only Tom Oswira. As always, if you could just tell us a little bit about yourself. As always, even though we only spoke to you last episode, who are you? Absolutely. So first of all, again, thank you for having me again. This is always great to talk to you. Yeah, my name is Tom Oswira. I'm part of the Azure Cloud Advocates. We are part of the Azure engineering team. And what we are actually working on is creating content, delivering content, such as presentations, talking to customers and communities, but also listening to feedback. So we want to know from customers what is working, what is not working, where do we need to improve. So we can actually go out and fix that ourselves or work with our peers in the program management and engineers to make our products better. So yeah, and today I'm here to talk, as you said, about modernizing your applications with Windows containers. Right. Well, let's get to it. Don't forget the Kubernetes. Right. Here we go. Okay. So Tom Oswira, just today's a container, right? Like a container. The only, like, you know, you get containers on ships. We get containers that can, you know, you can put liquid in. But why Windows containers? What's that all about? What is a Windows container? So containers is not necessarily like just something Microsoft came up with, right? It's not something we would have actually like invented or something. Containers exist in the industry for quite a while now. And what you can think is that what we realize is like, if you think back in the time where we actually went from physical servers to virtual servers to basically get the benefit of leveraging more of the CPU and virtualization stuff. Idle servers do not need physical hardware. We get the mobility, all the benefits of we got by doing server virtualization. Now, this is, this is great, but still, like, if you think about it, every server still has a operating system and has obviously some overhead. So in every virtual server, you run an operating system, which has some base services and that, like, if you run hundreds of them, you run that 100 times. Also, that's like, even though virtual machines are a couple of gigabytes in size and we have pretty good connectivity and networks these days, but that's not always the case. It would be great if that they would be way lighter, right? To like have them even more mobile, take them less resources and so on. And that is stuff which we will see containers can provide. And I think, I think that is the, there are a couple of reasons why we would actually benefit of that. There is much, much more. There's a ton of stuff, but think about it as the evolution of virtualization in terms of, hey, I did like what we did with virtualization and server virtualization. The first place is we actually created virtual hardware, right? So it was like we simulated or emulated or virtual hardware, like virtual CPUs and virtual disks. Now, when we do containers, we're actually thinking about simulating the operating system. Like instead of like doing all the hardware stuff, just use the same operating systems for multiple different isolated applications. So it's kind of like the gig economy, right? It's getting that, it's streamlining, getting that bit of the virtual machine to just repeat and be more efficient and basically just do more of the same job at scale. So it creates these kind of like buckets of available performance in the areas you need to be optimized. That's how I understood it from what you just said. Yeah, think about like all the things you think about virtual machines, which are like a lot of the things which are challenging with virtual machines, right? I mean, they have benefits, but there are some challenges. There's still, as I mentioned, big, they have some like uptime you need to take like until their boot time, for example, you cannot just go out and just shut it down and start it. I mean, it's fast, but like it's not like, hey, I just do it like that, right? And so there's a ton of different things out there which help us in terms of dealing with that, but then also making it more mobile. So one of the things which is really important is the problem we had with, oh, it worked on my machine, but it doesn't work in production anymore, right? So I go out, I install the application, for example, here on my machine. I give you the same stuff, the same setup, you install it again because you need to do production, but it suddenly doesn't work anymore. So how can we prevent that from happening? And with using containers, actually, instead of like creating a new virtual machine and setting things up, everything again, I create a container image and we will talk all about what that is and what that looks like. And then I just give you that container image and you can run it and it will run the application in the exact same way as I did it on my computer. And so that is on my server for that matter. So that is one of the problems containers are very good in solving it. Cool. Okay, so I think we understand what a container is now. So that's great. But how do I run a Windows container? Do you show me? Yeah, absolutely. So before I go into that, let me give you some background on that slide here to show you how that can actually look like. So the things we just talked about, I think it's very important. So when we looked at this in the past, this is like we had like physical hardware, we installed operating system on top of it, and then we installed our applications and services on that like operating system. Now, yeah, we did it. We did then that in a virtual environment where we created virtual hardware. And then we basically did the same thing again, right? So we have a user space with the application and we have a kernel space where we have these applications. Now, what we're doing with container... Sorry, Thomas, is the kernel space called a bucket? No. I would say, no, no. Sorry, we probably need to cut this out. You didn't get my joke, because obviously the kernel has a bucket. Oh, okay, okay, okay. Oh, that kernel. Okay, now I got it. Okay, okay. Yeah. Okay. Oh, okay. Sorry. Is that terrible joke? It's a terrible joke. It's a good one, but I was like thinking because like we have buckets in all the technology. I was like, this is not really technology. But yeah, I did not... You can get them from KFC. Makes sense. Makes sense. Bucket of fried chicken. Yeah, yeah. So let me quickly go back there. Sorry. Don't worry. You can get it. You can bring it again. Now I know what it is. So we have here then a user space and then we also have a kernel space, right? Man, I love the kernel. You know what I mean? I love the kernel or I carry on. Okay. So what we're doing now is instead of like building new virtual hardware or even physical hardware, why not just use the same operating system and kernel for multiple applications, right? And that is something we did before is like we installed maybe multiple applications on the same server. But a lot of people told you that's probably not a good idea because there are dependencies and suddenly you like, you cannot run the same application like twice or stuff like that. So that is where the container technology actually isolates these application and services in a container, which makes sense, right? So then I can run like multiple applications on the same operating systems but isolated from each other. So to show you how that can work, let's go to this one. So now let me show you how that, how that can look like how I can actually run the container, right? So here I'm on container host. This is like a Windows server where I installed the container feature and I have Docker to basically manage that. So you can see here I already have a couple of Docker or images like container images. These are the ones from Microsoft, which I downloaded already so we can actually go out and use it. You can see here they have tags depending on the versions and you can also see that there are different sizes. So for example, we have different images like server core and then we have the nano server container, which is a super small container image, especially for dot net core applications. So these are options we can now do and to run the container, I can just type Docker run and then I can do IT for interactive terminal. So then basically what I can do, I can then directly, I directly can boot into the container. So now I take the container image I want to start and I hit enter and you will see I just started a container. You can see here, like you cannot really see, but I will show you a couple of things. If I do now host name, you can see here this is a unique host name for the container itself, auto generated. And then you can also see it has a file system. So I have like because it's a Windows container, obviously it has Windows as users, program files and all that in that container. I can even run because it's a server core container can run PowerShell. So I can do things like for example, get process to like see what processes are running. And you can see the process list is pretty small for a server, right? Because it's not a full server. So let me open up here another window. This is actually the container host itself. Like the one we were before where we started the container. You can see your containers one. If I do now get process here, you can see it is out a ton of processes running on the server itself. Including the ones from the container. And I'm going to show you that in just a bit. So for example, if we have a look at this process ID here from PowerShell. So 6768. If I do now, like do here a, let's have a look here, do a get process here. That is inside the container. So obviously I will be able to see that process. Right. So I can see here, okay, I can, this is my PowerShell running inside the container. And now if I run that on the container host, the great thing here is if I do the same thing, get process and get the idea and can get the same ID of that process. On the container host, I'm actually seeing that process as well. Right. So I see from the containers that can see inside the containers. But that is great. But let's have a look at like what the container can actually see. So let's have a look at another PowerShell process. Let's like the PowerShell running, for example, here on the host itself. So if I look at that process, 2408. So if I go into the container now, so I'm doing that the other way around, around. So if I get process and try to find that process, you can see, I cannot find that. So the container host can actually see the processes inside the container. But the container cannot see the processes from other containers or from the host itself. Right. So that is pretty cool. And that's how it creates that efficiency then, I guess. Yep. Absolutely. Absolutely. So I can then also see, hey, okay, there's the Docker container running. So this is the way like if you do Docker PS, it's running. And if I now close here, because this was an interactive container, if I then do that again, the container will shut down automatically. So like you can see now, no container is running anymore. I just killed the container by exiting it. But depending on what I, if I don't know if it's a server application inside the container, then I will not run it interactively and stuff like that would like run it detached. And then it could actually just run in the background. It would not shut down when I, when I do things like this. But you can see how fast it was, right? I mean, wow, that is ridiculously fast. So, so how is it, why is it so fast? Yep. So let me quickly like illustrate that here. Why this is like so fast, right? We talked about it. It's obviously way smaller, but it also needs to do different things. So if we normally boot up a server like a full OS server, we obviously do a power on, then we run the BIOS or UAV post and all that. And then we start loading the kernel and starting this the session and do the logon and then launch the Windows Explorer and then all the, the services which I need. Now, if you look at where container starts to boot because it leverages the kernel and everything from the operating system, which is already running on, consider that this is the only pro, the only that last two things are basically used by the container, right? So that I think is pretty cool. That is, that is one of the reasons why it's so fast. And if you look at the next one, it also has some cool features in there in terms of memory. Now, if you run a virtual machine, you basically assign like a fixed size of memory to a virtual machine. I know we have great features like dynamic memory for virtual machines, but still there's always a fixed amount of memory assigned to a VM. And if you look at the host here, so I have here a host. It needs like 2.8 gigabytes of memory at the moment. If I start a container, it then needs like, let's say it's 200 Mac for that container, because again, all the operating system stuff is already like loaded, right? I don't need to load that twice. And then if I do like five containers, you can see here, it's even then like 3.4 gigabytes. The reason why it's not 200 per container, for example, in this case, it's because even like processes within the containers can share the same memory. So if I start a PowerShell like three, four times, that process can be shared. The memory of these processes can be shared in theory, right? Not all the processes do that. Some of them are staying isolated. But think about that, like some like DLLs which are loaded and stuff like that. Why would I load them in the memory? I can have multiple containers consuming that. So this is also very, very good, very, very low overhead if you actually run that. Wow, that's super efficient. So that's why it's fast. Great. So Windows Server 2022 containers. What have we done? How have we made that any better? You know what I mean? What's new with Windows Server 2022 with containers? That's my question. So there's a ton of stuff, by the way, which went into the container improvements we have with Windows Server 2022, right? So first of all, you saw the container image sizes I showed you. These are containers for 2019, like around three gigabytes and like 250 max for the nano server one and so on. It always depending also a little bit on the patch level. But what the team did is they reduced the size by up to 40% again. Like almost half, right? So it's again, that again improves the speed of a container to start as well as like a good shutdown and performance. And that up like usually like they say start up time can be like up to 30% better than before or 30% faster than before. So this is one thing obviously, which is a big improvement. Because again, containers usually cannot be small enough, right? You want them to be as small as possible for their base images because without losing compatibility, right? So that is one thing we have there. The other thing is, which is very important is think about applications who actually do authenticate against Active Directory or others. So because containers are not necessarily domain joined and container hosts in the cloud, like in, I will talk about that later on, are not necessarily domain joined. We now can, for example, have group managed service accounts, which can basically authenticate against Azure Active Directory without having the container host joined to an Active Directory domain. This is super handy again to get that portability. We talked about at the beginning to enable that. And then we have a ton of improvements when it comes, for example, to networking. So for example, like, and again, we're going to talk about Kubernetes in just a bit, but there's improved networking for that. We have IPv6 support and so on, which we have there. And then we have some cool new tools also to actually manage containers on Windows Server, including in Windows Admin Center, for example, as well. Okay, so we've just made it a lot. It's embedded into the latest OS, cool. And in terms of, like you mentioned container images and layers. How does that work? Again, this is, I just, we just talked about this. So we had some echo here. Okay, good. So we just talked about the base OS images, right? And this is an important part to understand when it comes to containers. It's not like where you have a virtual machine and then you like basically set up that virtual machine. And then you go into that virtual machine and you install your application and then you add something, you configure something. Basically what you do is like with containers, you work kind of like as an infrastructure as code type, right? So you basically write down how your container image looks like. And so if we quickly have a look at that slide, I quickly want to illustrate that a little bit. So when you're building a container image or you want to run a container, you basically build a container image. And so you select an OS like a base base image in that sense. So we could in the Microsoft world, we have the nano server, we have server core. We have also one called Windows. And again, it gets larger and larger depending on what you want. Because if you're just building a .NET core application, you don't need a lot of stuff, which is like for compatibility reasons. So you would take the smallest one, which you take, but again depends on what you take. Then you basically go out and you add dependencies for it, right? So you're going to be like if there is anything like you need a framework or anything like .NET and stuff like that, or you already have IS and stuff like that, you can add that as well. And then you basically add an application layer. This is then when you actually put the application on top of it. And then you put the configuration for that application on top of it. And as I said, these are different layers. So what happens now is what also makes the container host so super efficient is that when I have run multiple containers based on the same base OS image, I can share that image from a disk based perspective, right? They can build like the only thing which changes are the upper layers, but the base image is always staying the same. So I can also save a lot of disk space as well. So there's some pretty cool stuff here when it comes to layering. I think that is something great to understand. And here we need to quickly need to like I need to go forward. We can cut these out. Yeah. Just cut these here. And then so it just goes forward on this slide. Yeah. Okay. So how I actually would do that is like, I would actually write a file, a Docker file, for example, and then I would write it in code and say, Hey, for example, here, it would start with a base image. Like in this one I use server core, then I do the net framework. I add another layer on that. And then I add like the latest patches, for example, to that, like if I want to add patches and then I could do like the application and configuration in addition. And I would write that Docker file down. And with that Docker file, I would then generate the container image, right? So that is how it works. But now the interesting part, I think, and that's what we're going to explore is like. I now want to containerize a application. Doing all that is pretty hard, right? It's like, I need to learn a lot to actually get that all done and understand and how that works and all that. So we want to make it easy for admins to actually containerize existing applications, right? So everyone has like web applications out there. They probably want to migrate this at one point. And then containerizing it sounds like a good idea. So this is something which I will show you in just a bit. Well, I've got two questions, Thomas, right? First of all, Kubernetes, right? So number one, what is a Kubernetes? You know what I mean? So it's written up there. I see it. Everyone talks about it everywhere. What is a Kubernetes? So the thing I just showed you like before when I run like a one Docker container, right? This is okay. Like this is like what I can do on my machine. But think about like applications which. So first of all, like think about applications which probably run multiple containers, right? So like you have one is a web app. The other one is a database. The other one is a mid tier applications. You probably want to have like multiple locations work at the same time. The other thing you want to have is you probably want to scale out your application as well. Right? So we have like multiple web like web servers for redundancy reasons, but also maybe for performance reasons as well. So you need an orchestrator to actually do all that to make sure that you have enough containers that they're all running. That for example, what if a container for some reason crashes that there was a container coming up again. Again, taking, taking like making sure that you have enough scale and managing that. And also at the end, your container is still running in some world, anywhere on a physical machine. There is always something coming down to a physical machine, right? You can even run in a VM, but at the end it's on a physical machine. Yeah. Now to make sure what is what happens if all the containers would run on the same physical machine and that physical machine crashes, your whole application would go down, right? So again, for that, we also need an orchestrator and Kubernetes is an orchestrator developed like in the early stages by Google. They use that heavily for the internal services. But obviously also the industry went and said, hey, well, this is a great, great tool. This is where we, what we need and kind of like became the standard orchestrator more or less for when it comes to managing containers. And we even have a service in Azure called Azure Kubernetes service where you don't need to set up the whole orchestration. You don't need to set up your whole Kubernetes clusters. We do that for you as a service and then you can go out and employ your containers on top of that. Okay. So, so I can run containers in Azure then and I can use the Kubernetes service as a service to help manage that. Sweet. Correct. Correct. So what you can do again, as I said, like to run containers in Azure, there are multiple ways of doing that Kubernetes or our Azure Kubernetes service is just one of them, right? So that that is probably like if you run a lot of containers and you want to take advantage of the Kubernetes orchestrator, this is one way. We also allow you to, for example, containerize your web applications and then run them in Azure web apps, for example. Like there's also container support for that. We also have something called Azure container instances where you just spin up a container instance without like taking care of all the Kubernetes stuff around it and all that good stuff. So we have a couple of different container services depending on where you go and what the customers needs are. Now, what I want to show you though is like for us, interesting is how do I get existing applications, for example, into Azure, right? I said like, okay, if I'm an admin, I would actually need to go out and build these container images. I would need to write these Docker files and so on. But again, we want to make it easy for customers to spin this up. So if you could have a look at this slide, what I want to show you here is this is, for example, what we can do and I will show, I will go show you a demo directly after this. But what we're going to show you is like how you take, for example, an existing .NET application and then you, we built for you the container image. We store it in a container registry. So this is like a central place where you would put all your container images and then from there we can then actually go out and deploying it on Azure Kubernetes search. And again, instead of you setting up all of that, we have a tool to actually, which can actually help you doing that, doing the whole containerization part and so on. So if I switch, if I quickly switch to my demo here, this is my super ASP.NET app. You can see I took all my web design skills basically to get that done. But this is actually running locally on one of my web servers here, right? So this is like on a normal, it's a virtual machine, installed IAS on it. And this is my web app. Thomas, that is not ready for the public domain to be fair. So that's probably the best, that's the best place for this. I don't, I don't agree with that. I want to have that in the public domain. So what I want to do is I want to actually migrate this website. Again, I put so much effort into it. I want to migrate that to actually to AKS and run it in Azure. So I can actually scale it out because a lot of people definitely want to see that website, right? I mean, people have been asking for this. I mean, they have. They have. Trust me. Trust me. They want to have my Thomas Super ASP.NET web app. That's what they want. And yeah, I want to take advantage of all this stuff we have in Azure. So I want to run obviously and be able to scale it, to have a local answer in front of it, to make sure that all the people are looking at this website or can actually get a piece of that website and it doesn't go down. So let's see how we can actually go out and migrate that. And for that, I already prepared what we call our Azure Migrate App Containerization Tool. And this is currently as we record this in preview, but it's a pretty cool tool. It's kind of like the Azure Migrate Tool for, for virtual machines and databases. So what I did already is it's basically just let me download the script and it sets up this mini appliance here I have here on my screen, right? And from here, I just go through that wizard and I want to show you quickly how easy that is. This is really, really cool stuff because even if you're not familiar with building these containers and stuff like that, this can be super easy. So first of all, currently in this preview, we support ASP.NET web apps and Java web apps on Tomcat. So in my case, as we saw before, this is ASP.NET web app. And then as I mentioned, in our case, we obviously want to deploy this to our Azure Kubernetes service. But as I also said before, we can also do that and deploy it on Azure App Service as well. So if I have, in most cases, I think if I just do a web app, Azure App Service is a great place, but I plan to in the future also deploy other containers on my Azure Kubernetes service. So I'm going to select that one. And then I have a couple of prerequisites. Obviously, I need to accept that this is preview software, the license terms. I obviously read them before just to be sure. It will check that I have internet connectivity to Azure that I have the latest updates. And we're going to use a feature which we have for a long time. So if you are a web administrator or like if you are dealing with IS, you're probably familiar with web deploy. So that is a tool we use in the background. So I can just verify if that's installed. Yes, I already prepared that. Good job. And I also want to see that, okay, PowerShell Remoting is actually enabled. That's good. Done that. And so the next thing I need to do is actually sign in to Azure because I want to obviously move that and do an Azure service. So what I can do here is just click on sign in enter the code and then quickly confirm to sign in. And now we can actually go out and select the tenant and my Azure subscription. I want to use and then continue. Next up, we obviously now need to actually go out and select the application. Now my application that just showed you is running on a web server called Web01. And I'm just using the administrator account to get to this account, to that server. And then I do validation. Click on continue. That works. And now that tool like this, this migration tool goes out and actually discovers the application, the web apps running on IS on that specific server. So you can see here, I deployed two apps to two applications. I obviously in my case, I want like it's currently running in default as default website. And I can then go out and do, for example, some additional application configurations. I will just talk about this in just a bit. But let's call this one Tom's web app. So this is the container name as I showed you before instead of having that long windows container name, it will be just my web app, which will be deployed. And then again, I can do some app configurations. Now think about if you have a web app, which for example has a database in the background, right? You have a connection string. So that we would actually see that. And then we would actually take that configuration string and make sure that that actually then works with the database you're using. So if the database is running in Azure or if it's running somewhere else, we can configure that as well. And now we're going to actually build this. So I have a container registry. This is again, is the central place where I'm going to store my container image. And this is basically the container image I'm going to create from that specific app. I can then have, for example, if I look at the review at the Docker file, this is now the Docker file, which I would have to read to written by myself if I want to do the same thing. But the tool does all of that for me. So I decided, okay, which version of ASP.net do I need? And then, for example, also do copy the application and then also do some other stuff as well and also say, okay, which port, for example, should be exposed for that container. So now let's just build that image. And this image, the great thing about this, and this will take some time, by the way, this will be now built in the Azure container registry, right? So usually you can build a container image directly on your machine, but if you're doing this high performance task, if you have really large container images, for example, at one point, because they're very complex applications, we're doing this in that case. We're uploading all that and to process that in the Azure container registry. So that is where now the container gets built basically. I mean, it's actually very simple. It is, right? That is like, this is what the tool is all about. I mean, you could hear that in my voice, right? You could hear, I was like, oh, you know, it's not actually that complicated. No, no. Yeah, like, you know, and this is, it's simplifying it to a point where actually it's a few clicks. So, you know, that's brilliant. Absolutely, no. And again, it shouldn't be like really complicated, right? It's like, okay, I want to take that app. And maybe I don't even, again, if I'm not a developer or if I don't even know what, like, where is the code for that app? Where is the installer for this app? I don't have that, right? It's probably installed. It's just, everyone knows it's running on that machine. The people who are installed that app, they're long gone. But I want to containerize this and make it like running somewhere else and modernizing it using that, right? I want to like, this means like one server less in my environment. And with that wizard, with that migration tool, I can actually take advantage of this, modernizing it and directly put it into the cloud. And again, you wrote up a point before where you said, hey, the public is not ready to see that website. AKS can also be like deployed in Azure, but I can also just deploy it internally, right? Without having a public IP address and stuff like that. So it can still be used in an enterprise environment where you don't want to have public access. If it's like the expense website, you probably don't want to make that available to everyone outside in some cases. So you can take advantage of that as well. Cool. Excellent. While we are actually waiting for this, just one thing I want to show you more is we can obviously have a look in that build process as well. So we get that information. We can see actually what's going on. And if you have a look here, you can see here, it downloads the container base image and then adds these different layers on top of it. This is actually what the Docker file and we just saw does. And then it runs through and we get all these logs to see what's happening. So we could also see if something breaks or something like that, we could also see why is that. That's pretty cool. Excellent. Okay. So like whilst that's happening, Thomas, where can I go learn about containers? Where's the, you know, you know, how am I going to learn about all of these containers? So obviously, like my number one place is definitely Microsoft Docs, right? There are like, we have documentations for Windows containers. We also have documentations or how you actually then interact with Docker and all the things I showed you before to actually work through this. But then we also have documentation for all the container services we have in Azure, including the Azure Kubernetes service to make sure that you can see how that works. We also have now documentation for that migration tool as well. So you can go and like see all the options you have. And again, as I usually do, I make it look very simple, but obviously you can, like there is obviously all the time when you are in production environments, there are a couple of more things you need to take care of and recover that with the documentation. The other part where I recommend, if you want to learn about containers on Microsoft Learn, which is our free learning platform, we have a lot of different container tools or learning modules available for you. So you can actually go through and learn about containers without having an Azure subscription, without needing to go for credit card or anything. You can just go out and learn there. And even though you're just watching this and you're saying, I don't want to learn about containers, there are also a ton of other learn modules out there to learn about other technologies for Microsoft. So just go out to Microsoft.com slash learn. It's absolutely a great place to get started. I couldn't agree with you more. MS Learn is an amazing resource. So yeah, absolutely big advocate of that. So that's brilliant. Thomas, is it a success? Yep, it is. It is. Absolutely. So what we now have done basically is built that container image and it's now stored on the container registry. So if I hit continue, the next thing I want to do is obviously deploy that. And so again, I could choose my Azure subscription and then I could choose my Azure Kubernetes cluster, which I already run in Azure. If you don't have one, for all the steps, you could just go out and create it directly from here. And then it actually goes through, if again, if I had some secrets and certificates which need to be stored, I could also configure that. Since I made it very simple, I don't have that. I can also have, like if I have containers which need shared storage, it will also automatically configure Azure files for me because again, containers usually are not persistent. So we need to have some shared storage, for example. And then I can actually go out, I can delete the last configuration of the deployment. So if I go ahead to configure, you can see here what should be the prefix of the application, which network ports are done on the web. And then here, interestingly, this one I mentioned is, I could now create multiple replicas. So because this is a very important application, obviously, I hit their 10 replicas and they want to put them behind a external local answer. So this will be a public IP address assigned. I could also do it if it's just the internal application, I can just select internal. We're going to apply that. And then last but not least, I could actually just go and continue. And then it will ask me again, if I want to deploy the application and to deploy that, I could just hit deploy and it goes out and does that all for me. And so that is how easy it is actually, not just migrating the application to the cloud, but also in the same time, going from an application running on a server, which could be physical or a virtual machine to a container. Wow. Okay. Mind blown. Thank you, Thomas. Wow. Thomas, that was amazing. Like learning about containers and Kubernetes, all of that good stuff. Amazing. As always. Thank you, sir. So we're now heading over, is that fun part? The science part is done and we're on the fun part. And so it's a meme review time. So this is as always where I look a little bit silly, generally speaking, my expert looks quite smugly at me and knows what the meme means. And I have no understanding of what the meme means. But if you've got a meme, you want to send it over, share it with us, comment on the memes that we're showing. Please do join the conversation. So, right, meme one. Let's see what the producers have done today to make me look silly. Firewall. It doesn't mean hide inside a server room during a fire. Thomas, what is that saying to you? It makes a lot of sense to me. So yeah, I highly recommend not staying inside if there is a fire. However though, I mean, what I've seen, there's also physical firewalls which actually protects the server room from fire. So, who knows? Yeah. That's very nice. And also great advice. Don't get burned by a fire. So, you know, solid meaning there. Definitely learned something new here. Well, I don't know if that's new, but it's obvious. And if you haven't learned it, then you should have. So, right, okay. So let's have a look at the second meme. Right. And that's Dr. Evil, I think. So, I think, is he taking the mickey? I think he might be. What are you seeing in that one, Thomas? I guess it's like, there are quite some outages caused by power supplies in the world because power supplies fails. And there is usually a lot of, like, Windows who have different classes of power supplies available and they pretend like they cannot fail, they fail safe. And at the end, we all learn they still fail, right? Yeah. Yeah. Everything fails at some point in time. So, you know, right? Thanks, Dr. Evil. And thank you. I think Dr. Evil is possibly one of the producers. So thanks. Thanks, Dr. Evil. Right. Okay. So let's just summarize what we've learned today. And let's, you know, let's talk about kind of all those little things that we've learned. So, you know, as always, you know, I made a few notes. So, number one, containers are the evolution of VMs. They're kind of like, if you were to give, you know, VMs like steroids and beef them up and get them to do everything you need to do, that's kind of what containers are, right? So they're 40% smaller and typically speaking, 30% faster. So this is what, well, just to compare from Windows containers with 2022 versus Windows containers with 2019, right? We're not speaking like in terms of VMs, it's probably like even, even crazier, right? But the thing is just between different versions of Windows Server 2019 containers versus Windows Server 2022 containers. Perfect. Going by Windows Server 2022. And you can be 40% smaller and 30% faster. Love that. And you need to, when you're thinking about using containers, it's smart to build in layers. So, layers will give you that efficiency of containerization so that you get the most out of your environments. Yes, exactly. And you need to definitely think of like, the reason why I brought this up here is like, when we talk about, again, when we come, when we tell people what containers are, we compare it to VMs, right? And the VM, most of the time what we see is actually, okay, you build one image, you build that out. And then maybe you go into the VM and you install software, right? This is not how you do it with the container part. You could, you could do it that way in some cases, but you don't get then all the benefits of having that. And so by creating it as infrastructure as code, basically by writing a Docker file, if you do like, do other things there's even more to do, if you do multiple of these applications together. But yeah, then you get the benefits, get the most out of it. Absolutely. Cool. So, look, Thomas, as always, thank you so, so much for today's episode. Thank you for teaching us things that we didn't know and explaining things that we thought we knew, but actually, you know, it's even better with the latest version of Windows Server. So, but we always appreciate it. Thank you all for listening. Thank you all for watching. This has been from the Rock to the Cloud. We will hopefully catch your eye on either you're watching us on Channel 9, you're watching us on LinkedIn, you're watching us on YouTube, and you know, keep your eye out for that next episode. And drop us your thoughts and comments. And as always, keep it classy, San Diego, right? Thanks a lot. Cheers. Bye.