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