 A little bit about Podman, but mainly about Podman Desktop. So that's the, so Podman Desktop was announced as version 1.0 for just a few weeks ago. And it was, we were all sweating the week before because it has to work. So it's a very young app. Let's say that. We are building features like crazy in it. And when you build one feature, another one is broken very often. But it's start to be really usable to do nice things. So why, why, why, why, why Podman Desktop? It's, so how to explain that? It's that for, for, for production, you want to have your containers running on Kubernetes or OpenShift most often. And in development environments, people are more using Docker, Docker Compose, and other things that, that are just, okay, they are containers, but they are not working the same way. And, and your container works on development. And then it doesn't work on production. That's sad. And that's a very nice picture, explained by, by one colleague. So that's the idea is, is a, okay. Docker Compose and Kubernetes-CML, that's not the same. Let's try to give a tool to developers to produce the Kubernetes-CML and make it simple to produce. And that's why it's not just Podman, is that there is one part of Podman Desktop, which is really using Podman. And the second part, which is bringing you from container on giant to Kubernetes and or OpenShift, you choose. I have a session this morning and one this afternoon. The main reason is that because you are two people applying for the sessions and the other person cannot come. So I will focus this session more on what you can do with the container on giant. And this afternoon, I will not talk about the container on giant, but try to focus more on what kind of Kubernetes workload and features we have. So one problem that we solved and that I didn't talk about is that containers work natively on Linux, no, it's a C groups. And so it's features that are really bound to the Linux kernel. And on Windows and Mac, you need to work in a Linux VM. And that makes it a little bit more complex. So it's more complex to start with Podman on MacOS and Windows. And the first thing that Podman Desktop brings to Windows and MacOS user is it's easy to start with Podman. It's just you install Podman Desktop and then you click, click, click, click. And you have everything working. For Linux users, we don't care. So it's not really a feature, it's more a non-feature. And for example, I have been using Linux for 20 something years. And now I do this presentation on Windows because some of the features are specially backed for Podman running in a VM. And not for Podman running on the host. Meaning that when I was testing on Linux, I had things that didn't work. And the application is really, really, really meant for Windows and MacOS first. And we have very few Linux users. And yes, so container and giant. You see the little compose here? So you can install compose on it. So you can run compose. But the interesting thing is that then from the container that you started by running Docker compose, you can continue and do something that we hope is better. Yeah, so proxy connecting to registries. And installing in restricted environments, that's feature that we implemented in December, January, February. So that's the first, it came even before connecting to Kubernetes, this feature. Is that if you are running in a jail where you don't have access to internet, we made this feature first. So really for people who want to run Podman Desktop and Podman in a locked down environment in enterprise. For most of the user who are working remote, it's not a feature, but for enterprise it is. And you have a little, so you can choose between your Kubernetes context. And so in fact, natively you connect to all the Kubernetes that are in your kube config. So if you already have clusters, they will show up here. And you can select in which context you are working. And now I have a lot of time for demos, OK? So there are some demos that I don't do live because it takes too much time. But there are some that I want to do live. So this is how you start the Podman machine in Podman Desktop. And I'm sorry, but if I do this demo live, it will take 10 minutes, and I cannot show everything. So just it's easy. There are certain circumstances where you, so Podman by default is running rootless. So it means that Podman is started with your, with a user, a basic user, not root. But in certain conditions you want to be running Podman as root, and there is an option for that. And we made that for kind on Windows. So to run kind on Windows, it works better if you have a rootful, a rootful Podman. Good. Hopefully I can, I don't know, this afternoon, my rootful Podman machine didn't work yesterday, so I will not show it this afternoon unless I can fix it. Pulling an image. Let's see if the network is OK to the ear. So pulling an image. I will delete the rootless image, and I will try to pull an image. And I have my problem with Docker not accessible today. That's wonderful. If I like the live demos and you break things. OK, so it doesn't work. I'm super happy. When the gods of registries are with you, pulling an image is super easy. So I've never had Docker registry refusing to download an image before this morning in this room here. So that's the big surprise. But yes, OK, so you can download the image from multiple registries. So when the registry is down, you can use another one. Quay is a cool registry for that. Next, next, next. So pulling an image. Starting a container. So I will not do the demo with this or this because I killed it. But let's take engineers. To start a container from an image, if you use the command line, a lot of command line, you put that in a script, et cetera, you have a lot of options that are displayed in the starter container screen. And usually these are things that you define in the image. For example, the port to expose that's defined in the image, and you just have to validate. You don't have to do anything, and you should have something that works out of the box. And so now I have my engineers working good. And I can interact with my container. When you go to the detail, it's always open the log, first thing. There is a summary which is not the most interesting thing. In the logs, if you click in the logs, no, control f doesn't work today, I know. If you do in the inspect, if you click in the content and you press control f, you can search for things inside. That's a nice hidden feature. So you can inspect the container. The cube thing is one of the features I will talk more a little bit later. So from this container, you can create a pod. And basically the definition of a pod is a Kubernetes YAML. So when you create a container, you can directly have the YAML content to create a pod out of your container. And you can interact with the container. And last thing, no, not exactly last thing. You can, as the container is exposing a pod, you can directly visualize what is running on this pod. When you're running Podman, that's easy because it's localized, the pod. When you are running in OpenShift or Kubernetes, that becomes a little bit more complex. And you can, you have here a button to deploy two Kubernetes. And the context here that you can see here, it's depending on the context that you activate here. So here I can decide to deploy to OpenShift local, to develop our sandbox. On OpenShift local, I have two profiles. And I have a MicroShift instance that doesn't exist anymore. But I can still show it. Let's back to the slide. Starting the container, starting the nginx container, building an image from a container file. Yes, let's do this. Normally, today, I am cheating a little bit. So here you can put another name. So you first have to choose a container file or a docker file. So most often, it's called a docker file, but sometimes container file. Then, Ponman Desktop will take your container file and all the directory that are around. So if you are copying files, Ponman Desktop has all the context to do the build. We'll see that in the logs. But as I'm cheating, you can see that I'm cheating. It goes very fast. When you build for the first time, it's actually uploading the build context can take one minute or more, because it's taking the docker file and the directory from your local file system. And it's copying that to the Ponman machine, which is in a VM, and then the build is starting. And here, I'm cheating because it's already built, so I'm using the cache. I'm not sure you want to see that. No, you don't want to. So registries. So that's important. What do I start? Yes, registries. I will show in the app directly. So the registries, they are in the settings here. You have four registries that are pre-configured, or you just have to add your username and password for Quay. In fact, it's username and token, but if you want, you can add your own registry. So if you have a private registry just for yourself or for your company, you can do that. And when you have added one registry later on, if the image name that you have, so if you built an image, if the name match the registry, then you can push it. For example, this one, my custom image, I can push it to a client cluster, but I cannot push it to my registry. But this one, which has a name that corresponds to my Quay.io registry, I should be able to push to the registry. And then when I push to the registry, I can select between tags. Obviously, I take the tag that corresponds to the registry. And then I even tried this today. Does it work? Does the network work? I'm happy. It did work. So you can configure a registry. How many times do I have still? Five minutes. Oh, yeah, yeah, yeah. You can push an image. We have done that. And next to pick, five minutes to talk about pods. Oh, yeah, yeah, yeah, yeah, yeah, yeah, yeah, yeah, yeah. That's evident. OK. I have my pod. I delete my pod. Hop. Let's be crazy. So I have redis. I select two pods. So to explain pods, as I live in Belgium, I was thinking of a metaphor that is implying fries. You want it? So in Belgium, you have two categories for people. You put the sauce on your fries. Or you put your sauce on the side of your fries. But fritesau de safar, they call it. And pods, it's a little bit the same thing, is when you have containers that are exposing pods, you want that the application is exposing the pods to the user. That's good. But the database, you don't want to expose the part of the database to the user. You want to keep it in an internal network. Same thing in your fries. You expose the fry to your mouth. But the sauce, it's just for the fries, not for your mouth. But you cannot do it with fries. So you select your pods. And then you select the pod that you want to expose externally. And the pods that are only required internally, you don't expose them. And there he is. He's working. Perfect. In the logs, you see that you have the logs of your two containers, the Python app modified and the Redis modified. And can you search in the log? No, not today. OK. You can inspect the pod. And here you can search in it. And you can see that it's exposing pods 5,000 and 8080. Good. And you can copy and paste the YAML to create it from code somewhere else. OK. So that's really cool. And you have the possibility to deploy to Kubernetes. That's for this afternoon. And here, if you go, that's where the application is still young, because if you want to connect so now, you want to see the app of your pods, you don't have access to it in the screen yet. It will happen. But we have not done it. But in the summary, you can, oh, I click on it too fast. In the summary, here you have the name of your containers. You have three containers. So there is one secret container that you didn't choose that happened here. And if you click on the container name, secret, then you are on the container. And this time, you can open the browser. And we have the application. And the increment is stored in this database. So that's cool. And if you have the URL, you can see your logs. That's good. And you can see that the container, the container that I selected are now stopped. So I don't have any more container in the running outside of the pod. And my pod has been created. And my pod has three containers. And the last of them is an infra container that's rolling them. And for these logs, you don't see things. I can show you. You can interact with the redid's database here. How many seconds? It's over. So I will finish that and then questions. So question, you can select containers to run a pod. We've seen you can generate the YAML to run a pod. Questions or the last demo is you use the YAML and you start a pod. You can still use Po-man Compose. You can still use Docker Compose after that, OK? So that's not a no. Yeah, OK. It's so when you do the Docker Compose, you cannot send the thing to Kubernetes. Kubernetes will not understand Docker Compose. So that's the first point is that you have something that works on development. But then if you want to put it on production, the Docker Compose is not working. So you have at some point, you have to do the translation from Docker Compose to something that is Kubernetes YAML. And that's where what we are trying to do is that this translation is as painless as possible. So you can use Po-man Desktop with Docker. I failed to install Docker this morning, but that's another question. So you can use Po-man Desktop with Docker. And then you can use Compose with Docker. And then use Po-man Desktop to take the state of your containers to generate pods or to generate QB YAML because you cannot run pods on Docker. That's the problem. But you can generate the YAML and then run the YAML into Kubernetes. And so we support Po-man. We support Docker. We support Lima at this moment. So three different containers on Djine. And for Kubernetes, so we support remote Kubernetes on Djine that are in your Kube config. And we have more support to help you install OpenShift local, help you install kind, and connect to the developers and bugs. And that's what I will develop this afternoon, this kind of stuff. So the point is, do you want to deploy to Kubernetes after a while or not? If you don't want to deploy to Kubernetes, you don't need. If you need to deploy to Kubernetes, and that's something that developers need to do and not the upstream, that's a very nice tool to make it easier. Voila. So it's done. And Docker always runs root containers. And the problem is less. It's a problem. But it's in the YAML, I don't know what you're going to do. And for example, if you want to run the standard, so the Docker IO Redis or Nginx image on OpenShift, for example, it doesn't work. So OpenShift is putting constraints much, much higher than Docker. So containers are running fine in development. And everything is OK. And then you push to production. And suddenly, the container is not working. So to have this information, this feedback loop, be closer to development, that's a nice tool. And that's something where the usage is different from the Docker or Kubernetes extension in VS Code or in whatever editor you are using. It's not exactly the same usage. The Kubernetes extension is not something that brings you from container to Kubernetes. Yeah, that's a tool that's just to do this transition. To do this, I work on containers. I have everything that I want on containers. And what do I need to do to move to the next step? Well, good answer. Another question, new features that are coming? Stability. For me, that's the most important. So we have been building features like crazy in the last month. So the project is one year old since February or March. So it's very, very, very young. And it was going very, very, very fast. So stability, so end-to-end test to know that when we build a new feature, we don't break another one. So for me, that's the most important one. And then for now, the OpenShift local extension, it's the first iteration. For Kain also, it's the first iteration in them. So we discover all the edge cases that make things break at some point. And also things like now I have my pod running. I want to have the button to open my application directly, so to have things even more simple and less hidden. There are some features that now are just, it's here, but you have to know. And I would like it to be more simple. And that's quite a lot already. And I know that what is coming now is the welcome page has been reworked. Because now it doesn't, if you look at the welcome page, it doesn't fit in a screen, you know? I have one man that takes all the room, but the rest is, so OK, here I have a big scaling factor to display in a big screen. But this welcome page was OK when there was only one man. But now that we have more things, that's a problem. Another question? Can I actually let them use the terminal? So the terminal interface is there. So anyway, we install it. So you use it, you don't use it. It's your choice. I would not choose for people. I've been using the text interface for years, and I learned things about containers by using this app. Because there are things that are more displayed. There are things that are also hidden. Because choosing to display containers, pods, image, volumes, you have some visualization. But for example, there is no deployment. So in Kubernetes, deployment is even more central than pods. And you don't see them. You don't see the secret or other things. So there is a selection and a simplification of what you need to know. I find it's really interesting to enter the machine and to say, OK, that's the important point. I will focus on them. And the rest we'll see later. But I don't know. Commonline and Windows, that's complicated. So I have a commonline user for years. And now I have cmd.exe, PowerShell, Git Bash, and some of the commands land in one of the terminal and not in the other. It's getting me crazy. So the terminal experience on Windows is anyway a problem. It's just, OK, open a terminal. Which one? cmd, PowerShell, Git Bash, something else? I'm using this terminal that has all of them. But you see? What do I want to use now? So that's complex. So this afternoon, I will try to break things on Kubernetes, OpenShift local, developer sandbox, and all of that. And it will be fun.