Presenter: Marcus Robinson (@techdiction), Technical Evangelist

Introduction

In the old days we had physical servers with 1 OS to 1 box, then virtualisation was invented, giving higher consolidation.

There is quite a lot of waste with VMs, as each has their own RAM, disk space etc, lots of technologies have been invented to reduce this (de-duplication of storage & memory, linked clones etc).

The big advantage with containers is sharing the same OS layer, all containers share the one operating system.

Containers

With a container start up time is also reduced as the operation system is already running.

Virtual machine scale sets, immutable servers (are created via scripts / clones as opposed manually built - pets vs cattle).

One great use of containers is to get a higher density, but can also help with legacy / traditional applications as can be run in containers.

Avoiding vendor / cloud lock-in as another benefit as can run on multiple clouds (Azure, AWS, private etc).

Microservices

Containers are a great enabler of microservices (which helps speed up development as get away from large monolithic applications that can’t be developed in one module per team / squad manner).

Microsoft

Windows 2016

** **

Expect that everyone to run Nano Server / Server Core for everything apart from Session Hosts (containers are not presently intended to be used as session hosts).

Question: how does this manage DLL conflicts?

Answer: Can initiate DLL within its own container space.

Session hosts: Big debate on whether we still need session hosts in the future. Microsoft is focusing on being a platform provider, so providers such as Citrix & VMware etc can provide on top.

Docker & Microsoft

** **

Docker Hub contains complete docker images you can download, but it doesn’t mean you would necessarily this as would likely prefer to build by yourself so that you know what is running.

Demo

Illustrating starting up an IIS service running in a docker container.

Can use tools such as Chef, Puppet, Ansible, SaltStack to build the image for the docker container (fires up a container, builds it then saves it as an image).

Can use a load balancer in front of docker images to create a farm, NGINX is a popular load balancer for this.

Hyper-V containers

A method to provide containers in a secure manner.

** **

** **

Docker for Windows

Not provided by Microsoft, Enables us to develop docker containers using Linux as the OS. Utilises Hyper-V, can also run on Windows 10 not limited to Windows Server.

It also installs the Docker CLI which can be used to manage windows based Docker containers.

Docker on Azure

Docker VM extension

https://github.com/Azure/azure-docker-extension

Azure driver for docker machine

https://docs.docker.com/machine/drivers/azure/

Azure Container Service

What do you do if the single VM running all the Docker containers stops working?

ACS provides High Availability for docker, can use Docker Swarm or DC:OS. Other options Docker Cloud & other services provided by Docker themselves.

Additional option Docker for Azure which is currently in beta.

** **

Docker Datacenter

GUI based management of docker swarm (https://www.docker.com/products/docker-datacenter)

** **

** ****

Sign up at http://beta.docker.com

**Question: **How do you apply patches to containers?

**Answer: **You update your base image then redeploy.

Docker in the release pipeline

Can also use services suck as Jenkins.

Example of deploying a docker build using Team Foundation Services to Azure.

Visual Studio Dev Essentials: https://developer.microsoft.com

IT Pro Cloud Essentials: https://www.itprocloudessentials.com

DevOps Fundamentals: https://channel9.msdn.com/Series/DevOps-Fundamentals

DevOps Dimensions: https://channel9.msdn.com/Shows/DevOps-Dimension

The Container Channel: https://channel9.msdn.com/Blogs/containers

Get access to free online training: https://mva.microsoft.com/training-topics/devops