Consultant and trainer.
Microsoft MVP.
Pluralsight Author.

  Learn Docker in a Month of Lunches Learn Docker in a Month of Lunches - the book
  My Top Video Courses
 
 Books
 Courses

Docker Retrospective: May 2017

Plenty happening in the Docker and Microsoft space. Last month I got to some great conferences and spent a bunch of time with some awesome folks.

Docker CE 17.05 was released which added some useful features for Windows, and I shared a .NET Framework sample app which runs across multiple Windows Docker containers and makes use of the new features.

Microsoft Build

Build was in Seattle this year, and Docker, Inc. were in the expo area with a booth that was packed for the whole event. Even before the conference started, we jointly ran a "ContainerFest" pre-day with Microsoft, dedicating the whole day to Docker and containers.

In the pre-day I demonstrated Image2Docker, using it to pull an Umbraco website from a VM into a Docker image, and then running Umbraco in a Docker container. The Dockerfile generated by Image2Docker was the basis for my Umbraco Docker image.

During the show we had over 300 conversations at the Docker booth, mainly from folks who wanted to understand the basics of containers, and how Docker works on Windows. The Docker story is easy to tell, so we quickly moved on to discussing where Docker would fit in their organization, and the problems it would solve.

Brandon from Docker at Microsoft Build

Meanwhile there were lots of Docker mentions in the keynotes and the breakout sessions:

  • cross-container debugging in Visual Studio
  • the Azure Cloud Shell (powered by Docker containers)
  • exporting Azure Functions as Docker Images with IoT Edge
  • Docker Compose support for Service Fabric

Developer Day - South West

The weekend before Build, I was speaking at Developer Day South West in the UK. My session was on modernizing .NET Framework apps with Docker.

Developer Day is a free conference which always has a great turn-out, and is very well run. I demonstrated moving an ASP.NET app into Docker, and then breaking features out into separate containers. Lots of great questions afterwards, and it was good to return to Bristol (where I worked many years ago).

The demo code is on my presentations repo on GitHub: dddsw7. And the next Developer Day is on the 10th of June.

SDD Conference

Software Design and Development is a professional conference held annually in London. The great thing for a presenter is that the sessions are 90 minutes, so you get to show a lot more stuff than the standard 60 minute sessions.

My talk was on .NET modernization with Docker, and I used the extra time to demonstrate the path to production - running the app in Docker Swarm and then on Docker EE Advanced:

Source code as usual in my presentations repo: sdd-2017.

Red Shirt Dev Tour

This was very exciting. Scott Guthrie toured Europe presenting full-day sessions covering pretty much everything in Azure. We joined Scott in London and Dublin, following on from his event with a Docker MeetUp.

I did a session covering Docker on Windows, ranging from the 101 to running apps in hybrid swarms. Taking Scott's cue to "show not tell", this was 90 minutes of demos, with just a couple of slides to frame the sections.

In the final demo I take a distributed app running in Windows containers, and gradually move the cross-platform workloads to Linux containers running in the same swarm. There's no loss of availability for the app, and it's a really cool demo to show.

Source code in the presentations repo: red-shirt-tour.

SignUp - A .NET Framework Sample App

I've been using variations on the same sample app in demos and workshops for a while, and this month I tidied it up and added it to the Docker Samples org on GitHub: dockersamples/newsletter-signup:

SignUp Homepage - an ASP.NET WebForms app running in Docker

It's a distrbuted app which uses ASP.NET WebForms as the "traditional" part, and then plugs in message queuing with NATS, and self-service analytics with Elasticsearch and Kibana - all running in Docker containers on Windows.

All the Dockerfiles use multi-stage builds. Each .NET app is compiled inside a Docker container, using an image with MSBuild and BuGet installed, and then the compiled app is packaged into the final image.

You can build and run the sample solution with Docker on Windows, with no other dependencies. You don't need Visual Studio, MSBuild or even .NET. All you need is the source code and Docker.

I'll be iterating on this sample app to take advantage of new features. Docker secrets are coming to Windows in 17.06, so there will be an update to use secrets for sensitive data.

Jenkins and Bonobo - in Windows Docker images

I'm gradually finding time to finish up my book - Docker on Windows (which you can pre-order now!). Chapter 10 is about CI/CD with Docker and I wanted to demonstrate a workflow where every component runs in Docker.

To support that, I've put together Docker images for Bonobo - a Git server, and Jenkins - the automation server. You can run those services as Docker containers, along with a local Docker registry, and power your whole deployment workflow with Docker.

Jenkins is an interesting case, because most of the functionality comes from plug-ins you add after installation. Some plugins can install their dependencies, but not all of them. My Jenkins instance needs to have the Git and Docker command lines available, so I've created a Jenkins sample image which bundles the dependencies.

The Dockerfile for jenkins-sample makes full use of multi-stage builds. This is how it starts:

FROM sixeyed/git:2.13.0 AS git  
FROM sixeyed/docker-ce:17.05.0-ce AS docker  
FROM sixeyed/jenkins:2.46.2  

:)

Up Next

A couple of great conferences coming up in June, where I'll be doing my stuff:

DevSum 17

The best .NET conference in Sweden!

NDC Oslo

NDC in London was great, and I'm pleased to be at the next event on Norway.

If you see me around, be sure to say Hi.


Share this article on
Author image
Written by Elton Stoneman
Microsoft MVP | Docker Captain | Pluralsight Author