Docker for .NET Developers

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments

I've been working with docker on and off the last few days, watching Pluralsights on it.. It seems legit, like definitely the efficient alternative to VMs, but until it becomes as user-friendly as a VirtualBox or a VMWare, I don't know if I'll use it. Technically I don't *need* the efficiency, and it seems like it's Nodejs's twin, changing all the time to the point where the Pluralsights and StackOverflows are out of date.

👍︎︎ 10 👤︎︎ u/jimmyco2008 📅︎︎ Jun 17 2018 🗫︎ replies
Captions
okay so no demos can fail now hi I'm Schell I am a cio at science I run a micro services practice at Alliance our team does a lot of migration for customers to various orchestration platforms with docker and actually we did a docker data center of migration last year which was interesting now you would know that as docker Enterprise Edition so lots of fun stuff today right now I'm going to focus on the.net experience for Windows developers so I'm going to carry forward here why docker of course you've heard a lot about this already but we like it that it enables a micro services architecture strategy the business people like that because they hope for faster releases because we have this full stack encapsulation isolation between parts of the business the domain and we get to hopefully ask for new features across the board and magically it will deploy without regression if we have done our job right we have polyglot technology capabilities I can hire people from different places that have expertise in different platforms we can still mix and match those within the container or separate from in separate containers and deploy them in a holistic orchestration platform and of course I have some improvement with my developer we're closed because I have things like well just docker is easy to work with first of all second of all I can encapsulate all my requirements for the developers as well and do a compose up and have everybody up and running quickly which we do a lot of these days and I find that to be awesome of course micro-services does come with some complexity so we do need a DevOps culture around it and because we are doing instrumentation and automation and looking at failure and recovery early on we actually have a hope of better resiliency in the system arguably something we should have been doing all along and now we get to do because we are forced to and we like that I think so dotnet developers also have specific benefits with docker beyond what I just stated which kind of goes across the board right around microservices architectures with dotnet we you have well maybe some of you have legacy applications what is that anything before dotnet core right so dotnet 4.6 dotnet 4.5 maybe a couple of WCF services sitting out in net FX 3 and they still work and the business doesn't have a lot of motivation to rewrite the whole application so of course we need a way to incorporate that in our future plans around our orchestration platforms and the sites the new things that we develop and we want the isolation of containers and all the benefits that come with that and the good thing is that with Windows containers we actually have an opportunity to do that with limited changes we can encapsulate the dependencies of these nasty old applications build them into the docker file so that the container has everything that it needs separate from the rest of the ecosystem of our solution and later decide to refactor when we have time to really think it through so that's a good thing in the meantime we can build new applications with dotnet core and asp net core and those can be targeted for linux or windows containers so we have some options here depending on our orchestration plan around the whole solution around the enterprise and maybe there's going to be a mix of that sometime and we also get our familiar developer experience which is really important especially for those that are working with visual studio day-to-day we still want to be able to do that when we move into this new world right so this is something that is very important now let's come back for a moment to the idea of the legacy code because this is important we need the ability to encapsulate those dependencies for our applications into the container so that it's seamless so that it can be actually migrated to container so that we can actually have that works on my machine and everywhere else experience and so I just wanted to go through a couple of examples of things you can do with your docker file that are sort of more around the dotnet developers focus here's an example docker file which is actually the iis docker file and what it illustrates is you know a Windows server core base image and it shows you that you can for example add Windows Features great that means in this case iis and in your case possibly other things that your app needs we've got the ability to copy and run existing executables in the container and make that the entry point so in this case it's service monitor to keep I is alive you also may have the need for dotnet fx3 applications I did a lot of WCS in my day there's probably a few migrations of that nature in my future maybe yours but the idea here is you know it also illustrates that we can add whatever required packages we need whether it be net effects 3 whether it be other items and in addition customized I is requirement so that's something that you know some folks need to do quite a bit of when they deploy applications today your application pool your settings that are you know the configuration settings of is in general maybe some of the websites may be of more than one website so these are things you have control over also with the docker file and then lastly just to point out that whatever it is your dotnet framework platform is you can incorporate that into your docker file and this particular docker file inherits from the microsoft iis base image and this produces my Microsoft asp net base image which is exactly what I'm going to use with the migration towards the end in my final demo or in my almost final demo so the moral of the story is you can contain whatever it is you need you can set up the dependencies of your application with your docker file for Windows traditional applications and Microsoft does provide a lot of those base images I just showed you as part of their docker store and so we have base images that are focused purely on the actual operating system so we've got nano server for the lighter-weight headless deployment within a container and then we've got you know Windows server core for those full fledged beefy legacy applications that we can't quite lose yet and then microsoft iis which gives you the baseline for an i is set up we also have various images that support your dotnet environment so those would inherit from the appropriate base image right or our layer on top and that would be for dotnet core for asp net core we even have a build image and i'm going to use that in one of my demos so you'll see what that's for and then in addition we've got dotnet framework image that layer on top of the Windows server core and I is typically there are images also available for sequel not that I'm deploying that as part of production of course but it is very useful and development potentially because sometimes you just need developers to be able to onboard run have their own copy of the database work offline for goodness sakes how about I'm on a plane and it works and we do quite a lot of that actually in other environments that we work in even with events tour Postgres you know Kafka the ability to compose up and have all the things work for this new developer we just on board it so things like this enable that and it's nice that we have a developer version of visuals of a sequel server went for Linux and also for Windows so that we can do that kind of thing as well so let's talk about docker for Windows this is the easiest way for you to on board with docker if you're a.net developer today so you would install docker for Windows it's a developer tool it goes on your Windows machine and it is a native application that enables you to build Linux or build tool to Linux or Windows containers and run them in tests so you can use any command line or command shell that you like PowerShell happens to also work as well so if you're familiar with PowerShell has nothing to do with the docker CLI it just happens to be another shell that you could stay in while you're doing other things to the CLI commands are the same between you know bash and PowerShell some subtle differences with maybe some variable conventions with a dollar for example dollar sign other than that exactly the same command and so it's native to your experience with docker as well and then you know when you're running against Linux container so when you're you're testing and deploying to Linux containers right now we actually have a VM that supports that but as you probably heard earlier today that there are some changes forthcoming that will make this a more native experience so that you don't need the VM so currently it's a hyper-v VM that we're running against when we're doing Linux containers and then you can verify the mode you're in so if you type docker version you can see that you're currently using the server which is the Linux server and if you go to the tray you can see that you can switch to Windows containers so either of those are ways to verify where you're at I don't know if you want to take bets on whether or not I forget to switch as I go back with the demos but you can feel free to do that just you know stay handy in case you need to tell me I forgot once you switch over to Windows containers you're going to be able to do another doctor version and see that you're using the Windows OS image so that would work and then you could switch back to Linux container so this is stuff you'll just see me do thought I'd bring it up front here and lastly so I have docker for Windows installed what does that do it gives me the dotnet sorry it gives me docker docker machine available so I can type my CLI commands and I can do all the things I would normally do at the command line whether I'm on a Linux box my Mac or now Windows even in PowerShell so it's exactly the same experience but Visual Studio also provides us with tools that integrate with Visual Studio specifically on top of that so it's not really part of dr. for Windows but it leverages docker for Windows to provide that experience okay so that's what we're going to be talking about now developer considerations that I'm going to just touch on as I go through hold these things like target environments in the base images that we use the debugging experience so you can see that that works access to logs just understanding a little bit about that because I'm in visual studio service dependencies networking so we'll do multi container compose up and then environment variables some tricks things to know and CI CV at the end so keep going let's start by doing just a you know project new right so when you create a new project in Visual Studio the idea is you can enable it for doctor right away so I'm going to go through the process of creating a new asp net core appliques peanut core app or solution or project and then that project I will first target with Linux containers and then I'm going to switch over to Windows and run the same okay so that's I guess the first thing that we'll focus on okay so let's head over to visual studio I'm going to just put these on so I can see better and I'm going to open a new project so and I'm going to select asp net core and let's go ahead and put this in a directory that I'm using so we'll go to dock icon and we'll call this demo 1 and it will ask me what kind of app I'll just select Web API keep the default and you'll notice that it enables docker support out of the box I can turn that off but I won't it requires dr. for Windows under the hood so what this will do is generate for me a new project in the traditional way I'm going to have a default controller with some basic capabilities and I'm going to have some docker FS added to the solution as well that I should be able to run with quickly so we'll take a look at that output and here's my solution open up the controllers and open this guy make with a little room here okay so here's my default controller out of the box you know we've got the get values and then maybe I'll put a breakpoint on one of these just to show that when we get to it we'll be able to hit breakpoints as well it does have a docker file that came with this new project and it's actually based on the Microsoft asp.net core one one so the template is asp net core 1-1 the base image is compatible with that it's a linux based image and so this will be targeting Linux containers okay you'll also see the entry point is the demo1 dll that gets produced out of this and if we kind of go over here you're probably familiar that kestrel will be the web server that is used at a box here right so it's going to layer my container with kestrel as well and you'll also notice I have this docker compose folder so this is a docker project and actually just to show you something here it says to start the application with docker this would normally be my f5 experience if I right click here and set this is the startup project this flips over to is Express so the idea is I can still go back and forth not that I have any reason to because this is so easy to work with but the point is you know where you want to be is on your doctor composed or your docker project and it will start with docker what it will do is take the compose file and build the image and then of course run it for you and run it with debugging capabilities so when we go back to the docker file here you probably notice there's a couple of things here that probably don't follow the actual docker file format typically because I wouldn't have you know some of that language here but Visual Studio is hooking in and actually replacing some of these things so we'll talk about that in a bit let's go to the compose file one of the things to point out is the new tooling update will have this set to version 3 docker compose 3 of course but right now it defaults to 2 and we have to keep it that way just for visual studio until I update with the new tools that are just coming right that doesn't mean that we have any issues with docker compose 3 and these docker files so you're going to see me be able to run this at the command line and actually put put in play you know use the latest version of docker composed so this is defining my one service here's my docker compose file and actually if I just give this a run this should run the application load the browser take me to the default page and then I should be able to show hitting breakpoints for example so let's do that and actually while it's building you can see there is a docker output window and it will show me things like well actually it slipped over to debug because it's showing me my output so let it finish this is showing us all the building that I'm getting actually my logs there as well so I'll come back to that as well but see that it's running at port 32 805 right so I have an app it's running let's go to PowerShell here and let's do it docker PS or docker images first and you can see I have a demo one image here right 32 seconds ago and then we have a docker PS and you can see that I'm running this image here and that it's running at 32 a to 5 ok so let's go back to the browser and let me hit this and maybe pass in a value and that ought to hit my breakpoint which is the other container the other method exposed by the controller right here we are so integrated debugging working and you'll also see if I come back to visual studio for a sec that it actually shows in the logs so you can see that it's you know capturing the logs right here in the visual studio environment that's notable only because if you're used to worry we docker at the command line and used to tailing your logs so that you can troubleshoot that way because you're not using a debugger naturally then you might come here and say hey let's go ahead and tale those logs so I'm going to say docker logs and the image starts with let me get back here d9 and you don't see any output here but that's because it's been hooked in Visual Studio you're going to see that I can have control over this though if I come back to the command line and everything works naturally so ok right let's go back here and we'll stop debugging for the moment so I just created a new project I ran it with f5 I had breakpoints and I was running a Linux container in another VM on my Windows machine so that's already pretty cool I think I'm done I'm just going to go no just kidding ok so what else can we do so I had this you know experience that I'm showing you in the browser in the visual studio environment let's go ahead and see what we can do with the command line so I'm going to come here and notice that we have this docker compose CI build so what that is is actually a composed file that uses the build image I mentioned earlier and it will actually be used to produce the output for this solution so what I'm going to do is show you how that works so docker compose and then let's use that file so docker compose CI build animal up so what this is going to do is create a network it's going to restore the packages for the solution and then it's going to build the solution and it's going to push it out to a folder structure that visual studio knows about for this solution so when I was hitting f5 it was pushing things out to a docker folder in the output ok and it's expecting certain things to happen in order for me to use that docker file that I showed you had some you know special structure to it it's also when I'm in visual studio mounting drive so that I have access to the nougat packages and I'm not copying them over so I'm not actually copying things into the image when I'm running in Visual Studio whereas here I'm actually building the output so that I can run a traditional compose up and do a build of the image and do the traditional command line stuff right so now this is finished let's do a clear and get out of here and let's do a docker compose and we'll use the usual compose up and this will now build a new image and run it and if I do a docker PS you'll see let's do this up here you'll see the image is running and it's not got the dev tag anymore right so the dev tag actually came from an override composed file that was layered and Visual Studio and now I'm just getting the default tag so it was assigned in the chisel to the image and it's running at 32 806 so the question sorry so the question is can I go over here and maybe modify this and go to 32 ao6 and it looks like that worked but just to be doing a sanity check let's do that so it's all working now let's go back to the command line and let's see this docker log follow and we'll go to what's that container e0 right and so all the logs appear to be coming back now right so I'm at a visual studio I'm doing a natural docker build so what's different about this from what I would normally do not much I guess the only thing that I did differently was I used the CI build image because that way I could leverage the same docker file that was produced in Visual Studio and then also do a command line build that would run you know without me having to build my own docker files and my own compose files that are out-of-band so I can flip between the two ways I like to you know force people to divide with their logs because that way they have better logs when they go live but that doesn't mean the debugging isn't useful so we like that we can go between both environments easily and seamlessly ok so that's the idea all right so let's see what we can do with this in terms of Windows and here I have my Joker file so right now my docker file is a linux-based image and in order to build this for nano server all I have to do is add - nano server so that's the name of the base image for the same version of asp net core and this will target Windows container so I'll save that and then let's go to my come so a couple things about the compose file we looked at before number one it relied on an override to set up development environment for example so I was working in debug and development of ironmen and also we have this volume mapping I talked about and the entry point was taken over for the log tailing and so on ok but what I want to do now is I want to run Windows containers which right now in this current release doesn't debug right that's evolving and so in order for me to run my Windows continues I'm just going to go to my traditional command line which I would have done in most environments anyway ok so what I'm going to do is I'm going to switch over to Windows containers and while that's happening I'm going to go ahead and create another compose file so let me go ahead and copy paste and let's rename this to Windows and the other thing I'm going to do I'm just going to get rid of the extra files because I don't need the override in the debug and all of those goodies I just need a basic amble file like it would normally do in a traditional environment so I'm going to change this to version 3 because I want to show you that also even though Visual Studio right now isn't templating to that it still is perfectly working with docker for Windows and that will be about all we have to do so my updated docker file my updated compose file here for Windows did I edit the right one I might have edited a different one good thing I'm not going to run that again there you go ok so there we go and let's go back to here so what I'm going to do is docker compose and we'll do a docker compose windows yamo ah but there's going to be one thing that's not going to work yet and it's going to be the network driver and so this is just a workaround also for now there are some the overlay Network was just released and so a lot of this stuff is not integrated yet so the workaround for making sure that I can run this for Windows containers is I need to create the network so I'm going to do this default and external and name that that space before not really important just saying ok right and so now it will create the windows image and the windows-based container will run and it will work that's what we hope for all demos right ok so let's see still working still thinking let it go and I'm just yeah ok let's take a look Oh looks like it's running already ok so I have let me just get this to the top docker images and we have a new image and that is demo 1 let's go ahead and say doc yes and let's see where it's running so I have this new container running now how am I going to hit that would be the next question another sort of minor tweak I guess to get to it so local host is not mapped right now to the windows container so I need to find the IP address of it so what I'm going to do is do a docker exit and you see is the name of the container I think nope it's 90 and we'll do an IP config and we'll grab that little guy because we need it and we'll go back to the browser and let's get rid of this guy paste that guy and boom now that seemed to work just in case hello and it seems to work again so I've now taken the same code that was generated with the CI build and I've switched over to Windows compose file version 3 and a Windows docker file so basically I've updated the base images all and I had to add a workaround for the networking for now and up and running we are right so all good ok let's see what we got next ok so we're going to take a switch to existing applications right I already have a scene at core applications I've got a web app and an API I want to docker enable those and I've already got the solution so I can also add docker support there's many commands for that and what it will do is similar to what we've already seen but I'll show you it will create the docker file create the docker project close files like we expect right and ready for debugging I'll go through the process with again a web app and an API so multi container deployment and then we'll talk a little bit about environment variable overrides as well okay so with that let's go back and here we go I have a web app so this runs without any docker settings right now so there's no docker file there's no compose etc so I'm going to right click on this web app and I'm going to add docker support to that and when I add docker supported as the docker file that creates the composed project and gives me a out-of-the-box compose file for again it's going to be a Linux based container as well and let's see so here it is docker file it's based on asp net core 100 only because the app is based on that so it's intelligent enough to figure out what base image i should have okay and our docker compose is here and same as before we've talked about that so now i'm going to add the web api the order in which we add doesn't actually matter long term because you'll be able to manipulate the doctor composed proj to say which is the starting app but if I start with web app then by default it will do the right things here and also in the compose file so you'll notice that this just added then Web API so I now have the multi container compose file ready to go and I have another docker file here okay so I should be able to just run that and the web app will run and it's a Linux container so it will you know do what we showed what I showed before only possibly more interesting or there could be errors and sometimes that happens so let's see ah okay where's my pair how many people are here and I said to you am I going to forget to switch to Linux I didn't do that on purpose just so you would know it happens or maybe I did you're never going to know okay so let's see if I had a dollar for every time that happens actually I don't know okay I suppose we don't really switch between them all that often in the real world so okay so this is going to load up right now what it's doing is just building both images actually so the output window will show us that progress we've got debug lighting up and at some point here we ought to start seeing the web app there we go so I have a prettier web app it's a medical conference site with a lot of lower system in it very interesting I hit speakers and it should be trying to hit the API but I need the content from the API to show this page and it's not working because I haven't set up the DNS for it because the app was set up to go against my configuration for development with localhost some port and what I need is for it to actually just respect whatever the network name is right for that API which is Web API so let's go back to the application back to Visual Studio stop this and let's see what we can do so going to my web app we have an app setting section here is the culprit right not going to work I'm not going to edit it here though let's talk about environment overrides so the nice thing about core of course is a lot of things but one of them one of my favors is that there's a lot of nice plumbing for figuration and overrides I don't have to build this I used to write custom code for this all the time right for looking in the database and then looking in the overrides in the in you know a text file or wherever so we have environment variable overrides that are natural to docker we want that to be respected and this is all going to just work so all we need to do is provide that environment variable so let's go up to the compose and what I can do is modify this guy input environment and let's call it API base address might be important to spell it correctly just thinkin and Web API Web API refers to this guy by its name okay so I will now be able to run this again and just to give you some clarity docker Network there is actually a network that was created here for this guy and if I wanted to inspect it demo sorry docker network inspect and that would be e8 oops sorry I forgot something there yep yep yep CC see now you pair with me right you forget the whole windows thing but whatever okay huh so now you can see oh is that the right one not the right one not the right one Michelle talker talker that sounded like a horror movie oops okay so probably if it wasn't ei tis 35 right yeah okay so talker network effect 35 there we go Web API web app so now I should be able to hit that and it should show everything we were expecting and it looks like it did so I got my speakers and I can go over here and I got my fetish sessions looks like a very interesting conference let's move on now everything I just showed you again you know multi container add docker support it's defaulted to Linux container in my docker file I'm using of course the version of compose is coming with Visual Studio but if I flip over the command line update that to version 3 I can do exactly what I did before but multi container if I change it to a windows-based image and add nano server then also that will just work so I want going to go through that again but it's the same idea okay there's no more magic beyond the little networking side step which will eventually go away ok so let's get back to business okay so migrating up let's move to that so our legacy applications could be many different platforms we've already talked about that and the idea that you need to be able to encapsulate all your dependencies and so on but there's a couple of other things that could be interesting to talk about besides the dependencies in the container so what I'm going to do is take a real app that I have I went and found a version of that thing that it's so dusty and old I'm surprised it even ran and I took it from an old tag it's called snap board one of my product things that I've built years and years ago and I really did a migration and it actually worked what do you know so Microsoft asp net would be the base image for that and that will be a full Windows server core with iif and then rings up for whatever else I need and deploying my app to dub-dub root and then we're also going to talk about it a little bit of compose up developer love which really is just you know can i light up the whole environment for my dad so that they can develop locally have their database have their Kafka have whatever it is they need in this case it'll be the sequel server version of that ok so let's take a look and here is snap board so this is a 4.5 app so I guess it could be more legacy ok understood but still there's code smell so I open up this app it has already the docker support but I did the same thing as we talked about before right click add docker support it produced this docker file I added a couple things again for some of that networking workaround because some caching that goes on once I added the sequel server container so I would say I'm putting a reference in this live so you can take a look at that but this will go away once the overlay is working and some of the other networking things for Windows specifically so this is now windows containers focus when where the issue that I'm talking about relation networking so continuing same old overrides Visual Studio provides so that I can have a debugging experience which I expect also for my legacy apps right especially those because they're not rigged up for logging nobody thought about that and then of course this entry point is a special edition to handle some config workarounds which I will get to so docker file otherwise pretty normal base image the one I talked about let's come back to the docker compose so again I get a docker compose it has my snap board application and for Windows it's actually defaulting to 2.1 again this is a tooling thing so 3.0 3 will work at the command line I'm using 2.1 because i'm running in the debugger ok and that's what came that's the tooling that comes with with this environment I'm going to remember to do this now because I get a star and we're going to go over to Windows containers before I run this little guy a couple other things to talk about though so what's special about this app well it has a lot of configuration settings and I do need to update those configure an exchange settings when I move between environments so I have to have a way to override those but I don't get the fancy you know asp net core environment overrides that i have out of the box in the new you know modern application so i just had to write a little bit of code that would look to see if we had an environment variable and use that instead right and that's not an uncommon thing to have to do so maybe part of your your migration considerations here is that code and athle we're also hitting a breakpoint check achieve and unlocked there you go so we have this you know legacy application with a breakpoint isn't that awesome i know you just can't even contain yourself so i'm going to continue and this will run the actual application now the other thing that you know happened while we were talking there or we weren't talking I was is it built and ran also the sequel server image but I'll come back and show you that I need a little snap board for this called docker con just to show that real images are coming up and that it actually had the environment or Bragg working and found the graphics that I put in the correct storage account I'll go back and show you why that works because there's actually a mistake in the original web config and the override is correct okay so basically this is just apparently a slowly loading page there you go and it just kind of illustrates that something's working plus it looks nice doesn't it dr. Khan 2017 no so this is running it's a legacy app I migrated it and it's using the asp net core base image if i come over to look at some of the other things I had to do to fix let's take a look so one thing is I am using in my compose a sequel image so the developer image so those are both being spun up and of course it is local only not going to production there is no passwords being shared nothing like that never ever ever put passwords in your compose or elsewhere that go into secrets docker secrets in a vault that's how it works okay you already know that because there's been talks about that already so just making the point to be responsible and I also add a couple things I put it depends on MS sequel here to show that we can also still use health checks for example in Windows containers so a legacy application and now I've got a health check to make sure MS equals up and running for my local container dependency and that's working here the other thing is here's my environment override nothing too suspicious here but if I showed you that the original setting that has the images and so forth is actually misspelt accounts this is a sucessor then obviously that wouldn't work but because of the override working everything's good but you're thinking environment variables work I've already done this before and the answer is yes that is true but our you know environment actually when you run the container it is the starting process that gets the environment variables which is I is and we need it to go to our application which is running in an application pool and so a workaround for that is to just have this couple lines of code in a bootstrap written by Elton who actually introduced me woohoo Elton and and and so we actually my team found that before even this because we were migrating some other stuff anyway and the service monitor is then started there so what that means is I'm slightly changing my docker file to say the entry point is this PowerShell script that does that work instead of the default entry point which would have been to start service monitor workaround achieved and it's some minor thing until there is another solution for the same problem but it's not really a big deal of course this presumes that your container is isolated from other assets and that it's okay that the whole machine has those environment variables and of course that they don't contain secrets anyways because you wouldn't do that in the first place right so that's the idea okay good all right let's return here and I've got some references here just to you know at least when you see the slides you have a reference back to the dns resolution thing for me to be able to run sequel server and compose until the networking resolutions are there environment variables in iis a couple of references and let's talk about of course now we've talked about dev I've built a core app run it in limits containers showing debugging shown logs shown how to switch over to Windows with the same actual code build a new image run it in Windows switch between environments Linux and Windows we found a lot it's only been like half an hour right or so and multi container DNS and we've talked about I don't know migrating legacy acts I mean there's nothing left for you to learn really but what we can do is talk about how we finish off right I'm a developer I'm working on my own I want to check in and I want stuff to happen right if I'm using its visual student I'm not necessarily using visuals BSP for example if I'm a developer but let's just assume we are just for the sake of tying together that Windows and developer story for.net if I'm using the SPS I might have a git or TFS back repo and my service goes there so I'm going to check in some code maybe three people will I don't know there's three people up there and what I want is to get a build definition working so I can pull latest and have that build my images and have that push my images to my registry of choice which could be a j''r container registry if I'm building things for Azure it could also be the docker Enterprise Edition registry if I'm doing things with that platform so the idea is whatever I just see on my choice I can automate this whole process check in and have it work and then ideally what I want is to control the tagging that's the most important part building the image pushing the image all good the tagging is the thing you think about so you can get it out to environments in a very smooth and structured way so we'll talk about that in a second but just to show you I can create this type of build definition and I can control the tag so that's all good this is from visual studio team services right yes yes the build output will show as its building when I check in and it starts to do its process and I'll be able to see the steps as it progresses and how much time each step took and then I also can see the end result in my ads or container registry in fact if we even have a few moments to show that I can go here and let's take a look at this ping pong example because it's a simple one and I can say think long docker not that that has any particular meaning but I can do a check-in let's do it commit and I'll go down here and let's grab this guy oops okay got to find the one I care about let's just kind of close a couple things go right-click and stage alright so we'll do this and we'll say updated boom how about that there and we'll commit that and then we'll do a sync and this should take care of that so am I pushed let me see push okay push boom that means something let's head over here and see what we get build definitions anything cueing anything Bueller maybe I can refresh ah there it is 268 yeah okay I have a build in progress that's awesome I can go take a look it'll show me all that lovely output and I've got the CI part taken care of eventually I hope that will appear over here in my repositories so I can go over here and see ping pong core and I should get a new version alright good so the last step would be the CD part right so there's work going on to improve that story right that's still early days I think with the VSPs story but of course there's other tools that we can use to achieve that and the other thing to consider is that the correct tag that whole process of tag and pull can be also not only initiated by another tool like a run deck or by BSP when all those features are in place but also the container platform itself right the orchestration platform you need to give it the keys to the registry give them read rights and give it you know any sort of tags that you like to pull so you could ideally have some other processes updating the container platform instructing it go get a new image or sometimes fourth pull images when things need to restart for example and so this is another way to handle that at any rate you know the story gets more and more complete all the time but these are all good tools I think the summary that I would give you then for this talk in general is your dotnet developer the investment should pay off because we do have Windows containers we can migrate full-blown legacy apps that could be useful when you're starting to piece things apart into a micro services architecture and strategy allow to bring the old with the new and get that all into one container platform that you can manage because that's obviously you know your DevOps investment and you don't want to have scatters of many many things to manage I think and ultimately what we want is for everything to work on your machine and hopefully everywhere else as well so with that I say thank you and I hope you enjoyed that and let me know if you have any questions [Applause]
Info
Channel: Docker
Views: 72,873
Rating: 4.9096947 out of 5
Keywords: docker, containers, Enterprise, Windows, Linux, .NET, Framework, AspNetCore, Developers, deploy, Windows Containers, IIS, kestrel, Using Docker
Id: a8Z3MncihLg
Channel Id: undefined
Length: 46min 9sec (2769 seconds)
Published: Mon May 08 2017
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.