 Thank you for coming, ladies and gentlemen, thank you for coming. A few organisational messages at the beginning, please mute your phones. Second, there's a party tomorrow, as you perhaps know. The tickets were available at the Red Hat Recruiting Boot at the entrance. As far as I know, the tickets are over for today, but there should be more tickets tomorrow. If you need to leave and enter, please close the doors as quietly as possible. You are welcome to evaluate the sessions and you visit this URL, this last slash is important. The next session is by Martin Malina and Marian Labuda from Jbos Tools. Hello, my name is Martin Malina and today we'll talk about a tooling that is available today in Eclipse for Docker. That will be the first part of the presentation with some demo. Then we'll show you what we have ready for Red Hat Container Development Platform Toolkit, sorry, kit, just kit. And finally, we'll show you our OpenShift version 3 tooling in Eclipse and that will be shown to you by my colleague Marian Labuda. So is there anybody here who hasn't heard of Docker yet? I guess not. Okay, okay. So this is what they say on the official website. Docker allows you to package an application with all of its dependencies into a standardized unit for software development. So in the past, when you had an application that you wanted to deploy, you would just install it on a physical machine. Then you would have operating systems, you would install all the things that you needed and then start your application. Then later, people came up with virtualization. So it got a little bit easier because you could have multiple virtual machines on one physical machine and you could replicate them and so it improved the situation. And now the next step is containers where you have everything bundled together in one image and you just run it and you don't have to worry about any dependencies because it's all included. So Docker is slide-wide, it's very fast, it usually takes just a couple of seconds to start a container. You should be able to just get the image and run it everywhere where you have Docker available. When you have multiple containers, unless you expose some ports and allow them to communicate with one another, they're isolated so it's secure and here's the typical workflow, well, the pieces that you need to work with when you want to get started is that you can either start with a Docker file that you write on your own so you define what image to base it on and then you add some of your own configuration and then you build it, create an image, then you start the container, run it on a Docker demon and it's running. Or you can get an image from a registry from the Docker hop or some other and then also run it. Or if you build your own image you can then push it to a registry. So what do we have today available in Eclipse? We have Docker tools that are part of Linux tools but they actually are not only for Linux, it's for Linux OS 10 and Windows. And it's hosted at Eclipse.org and it can connect to any of your existing Docker machines or a Docker demon running on your Linux machine. And it helps you doing all the things that you would like to do with Docker. Some of the comments are pretty easy like pull that's easy to do from command line but if you want to start your container and then share some, mount some volumes and expose ports and define some variables it may be easier to do from an ID like Eclipse. So I'll show you a demo and in this demo we'll show all the basic things like how to connect to a Docker demon, how to pull images. Well, I'll show you all of this. So here I have JBLS developer studio which is based on Eclipse Mars and what I have here is Docker Explorer. So we have a Docker perspective here which includes Docker Explorer which shows your connections then Docker images and Docker containers. So if I click here it will take a few seconds to open and then it will allow me to create a connection. It's actually taking way too long. So here I can enter a connection name and on Linux I would probably use Unix sockets but here I'm using TCP connection. I have a Docker machine installed and running on this machine. So if I use this search it will show me the Docker machine and I just finish and I have the connection here. Here I can see some images that I have here and containers are empty right now. You can also see it here. Okay, so what I'm going to do is I'm going to start two containers. One will be Postgres database, the other will be Wildfly and they will be linked. And in Wildfly I will have a data source that will be using the Postgres database and then we will deploy an application to it. I already have the images here but if I wanted to pull an image I can use this dialogue where I can either just enter the image that I want or here I can search for images but I already have those prepared so I'm going to write it here. And here you have some options. So we're going to expose the port 5432 of the database so that the Wildfly container can connect to it later on. And here we will set our secret password for Postgres. Okay, that should be it. So I can also choose a name but it has this vocabulary of names that will be created randomly. So you can see the database was started and now I'm going to have a modified Wildfly image. So here I have a project and as you can see I have a Docker file here. So in this Docker file I base this on Wildfly and I add a module for Postgres and then I get a modified standalone XML which is the configuration file for Wildfly. I will show you. Here it is. So this is the data source definition and here you can see it uses environmental variables that start with db underscore and this is available because once we start the image we will link the Postgres container. Okay, so here on the Docker file I can just use run on server. Sorry, Docker image built and this will just build the image and then it's available here. So when starting this again I will expose these ports here so that I can then show the web page in the browser. On the next page I have a deployment directory that will be, it will, that's how I'm going to say it here. It will use a directory on my machine that will be mounted on the container when it started. So I have the correct path here. Sorry, I forgot one thing. This is, this here is an option to link to an existing container. Actually I can, so this is my Postgres database and I will use db as the address. So the database is running and here you can see that it created the data source and operates working. Here in data source explorer I have, I have a connection configured and in tables you can see there is nothing yet. But now I'm going to, I have this deploy only server editor that will just deploy anything to the directory. So here you can see it deployed to the application and here in a browser. This is my wildfly server and this is the application. And I can, I can add a user and now let me check the data source explorer. I'm going to disconnect this and then connect again. And now, now you can see the member database and also you can check here you know the content. So it's there, seems to be working. Okay, so, so in this demo we saw two containers running link together. And so they could, the wildfly, the wildfly server was able to use the database running in a different container. So maybe there is something missing for you. If you want to, if you want to start deploying, developing and then deploying your containerized applications on Red Hat Enterprise Linux or Red Hat Atomic Host or OpenShift version three, then that's where Red Hat container development kit comes into play. And it's a unified development environment for building containerized apps. And it's, it supports Linux Windows OS 10 and it is basically a set of background boxes. Vagrant allows you to configure your custom, your custom virtual machines with, with configuration so that when you start a virtual machine you have everything ready, everything that you need. So in, in Red Hat CDK we have a Vagrant box, then there are a couple of Vagrant plugins. One of them is subscription manager Vagrant registration, registration plugin. So when you start, when you start the host, it will automatically register to Red Hat customer portal. And CDK is available as a beta from developer.redhat.com. So I'm just going to show you what we have in Jebus Developer Studio. So we have a server adapter in the server's view, just like you would create a new server. You can create a CDK server adapter, which then will allow you to start, start the machine, the host. And so either I can do this manually using this or I can use the Jebus 2 Runtime Detection plugin that we have. Yeah, I already have the path here. So when I search the path, it will find CDK version 2. And here it appeared. I just, I just need to set up my credentials for Red Hat customer portal, which I already have here. And then I can start this. It will take a minute to start. And what it does is that it basically runs Vagrant app. But once it started, it will create automatically a connection to Docker, which is inside the Vagrant box. And also it will create a connection to OpenShift. So then you can start developing for OpenShift using the OpenShift tools that Marianne will show you in a minute. So what I have here is the same thing that I could actually do from the command line and check the status. And it shows up as running. But the box is started, but some configuration is going on still. So it takes a couple more seconds. Because what it also does is after the box is started, it configures OpenShift. And so that you're ready to start working with OpenShift. Right now it's, yeah, it's running the registration plugin that I told you about that registers on the Internet to the Red Hat customer portal. Taking a little bit way too long, maybe some problems with the Internet connection. Yeah, so if this worked, I don't know if it's still going to finish the registration or not. But once that's done, okay. Now it's just a couple of seconds. That was the bottleneck right now. Okay, so now it started. Now it created the CDK Docker connection here that uses the CDK box. And here, like with any other Docker, you have images. You can have containers around them. But you can see something different here. Here the images were just the repository name and then the name of the image. But here also have the whole path to the registry. Because here you have Red Hat registry. But also you can use the regular Docker.io registry for all the images that are available publicly. Okay, so this is where I hand it over to Marian who will show a little bit about OpenShift. Okay, I will continue when Martin finished. OpenShift 3 is Red Hat platform as a service. It's built upon Docker and Kubernetes. Docker provides containers and Kubernetes provides orchestration. What OpenShift adds its source management, builds deployments, tracking, et cetera. CDK provided by Red Hat, all the contents and OpenShift instance for local development. Now let's get to demo. As Martin mentioned, CDK server adapter creates a new OpenShift connection for test admin. In OpenShift Explorer you can see under OpenShift connection its projects and every project contains services. Other OpenShift resources are located in properties view. For example, you can check what kind of pods are running on OpenShift, et cetera. Many of OpenShift resources come from underlying technologies. For example, pods are from Kubernetes. There are image streams, what are private registry for Docker images, et cetera. To create a new application, let's select a new application in the context of test admin. We can create a new project for this application. The project name is ID of a project and the display name is a name which is displayed under OpenShift connection in OpenShift Explorer. We can select either from server templates or local templates. Let's use EAP 6.4 basic source image template which is located already on CDK. On the next wizard page we have some template parameters, for example application name or source code repository where source code for building a new application is used, branch, et cetera. We can also add or remove some labels. Libres are used to group OpenShift resources. We can manage OpenShift resources more easily with those labels. For example, remove them already. Once you hit finish button, you get creation application summary which tells you what OpenShift resources has been created, whether there were some complications or some resources were not created because of some errors. For this new application, I used KitchenSync example which is located in JBus EP Quick Starts repository. All of the repository is cloned locally and a specific example is imported to your workspace. Once the application process has started, you can see its builds. POT creates at first the Docker image of your application, then this image is pushed to local image repository registry, and then new application POT is created where application is running. We can check POT's logs. It takes some time till application image is built because it downloads some dependencies and then create image and push it to local repository. To be able to see these logs, you have to have set OC binary, which is OpenShift tools command line interface or binary to use or to work with OpenShift server, which is located in OpenShift free server preference page in Workbench preferences. This binary is also required for server adapter, which will be used to publish source code. Image was successfully built and pushed. Now there is an application POT. We can check log and see that server has started and it's running. We can then show application in browser. There is a connection showing web browser for services and projects, and we can see it's running. But mostly when you are developing your applications, you want to also change source code and push changes back to server and see it's changed. So let's create server adapter for OpenShift. Let's select OpenShift free server adapter. We are using connection for CDK. And here we have to map local project in workspace to remote service. Once we have server adapter, we can also show application via server adapter in web browser. Okay, let's change some code. And once code change is done, we can publish it to OpenShift. This is possible thanks to our sync remote sync. It copies local fast to remote OpenShift and it's really fast. And now application should be changed. There is also an integration with live remote. So you won't have to, every time, manually refresh your browser. Once files are changed, browser finds out it's changed and automatically refresh. It's automatically changed also on server site. Once you have set up your server adapter and you publish first change, we are publishing server adapter using our sync. Local files, once they are changed, are automatically published to server. That's all from OpenShift site. So we saw today containers in Eclipse, which Martin said something about in our Docker tooling. Then we had CDK, which contains OpenShift and Docker, et cetera. And finally, I show you how to create a new application in JBL developer studio with OpenShift tools. Do you have any questions? If somebody has a question? In Ademo, you have changed the static HTML file as I saw it. Could you repeat, please? You have changed, in Ademo, you show that you changed static file HTML and then you refresh the page and it all changed. That's pretty cool. But how the process would work if I were to change some more sophisticated source code? Will your automation recompile, redeploy, restart the server possibly and handle all the stuff like that? Only static files are possible to change and automatically have it refreshed on server side because to change Java classes and have it synchronized with servers, debugging on server side and more stuff. But at the moment, we don't have it in our tooling. We are like experimental at the moment and we would like to see how it works and we have more stuff to it. Okay, thank you. Anybody else wants a scarf? Okay, so there are no more questions then. This is all. Thank you. It wasn't too late. I think we have CDK, but the template is probably a variant. I don't know. I haven't seen it yet. I don't know which one it was. I don't know. Somebody said that there is a bad one. I don't know. I don't know. I don't know. There it is. I don't know. I think it's too late. I mean, it was a good one. It was a good one. I haven't seen it in a long time. I'm an impetuous. I'm a impetuous. I don't know why I didn't see it. I'm very surprised. I don't know what it was. I don't know. I just want to know how it works. I understand. I understand. I'm not a fan of this, I don't know what it would be. I think this is the best version. But I'm an aspect ratio. But you are not a fan of this. Or maybe you like it, because you've watched it before. I've never watched it, I've watched it before, I'm the one who's right. You said to me, before I saw the team, I'm an aspect ratio. I'm there. I've asked myself about the question, but you already have contact with it. Good morning, Martin. Are you finally going to get dressed? Yes, I am. Are you looking forward to the live? I am glad to be. It's been quite a while. Yes, you can wait for him here. Are you looking forward to the live? Or are you looking forward to the live? I am not going. I'm going to the bathroom. There's something on the wall. I'm going to the bathroom. You're going to the bathroom? I'm going to the bathroom. Do I have to be the police? You stay here. I'll be the police then. You're also going to the bathroom. You're going to the bathroom. In 12 minutes. 10 minutes. You're going to the bathroom. I'm going to the bathroom. It's better than last night's. I'm going to the bathroom. I'm going to the bathroom.