CONTAINERIZED
DELIVERY
on the Microsoft stack
@CornellKnulst
cornell-knulst
Introduction
Why, history, what…
The cloud has changed expectations
Availability
100% Uptime
Hyper-scale
From startup to
enterprise
Agility
Deliver just in
time speed
Digital Disruption is real !
Containers: the next step in application delivery
Serverless
Manual
Installation wizard
Scripted
Desired state
Containerized
Linux containers
• August 2008 - Linux Containers
• March 2013 - Docker founded by Solomon Hykes
• Next level of application delivery (functional)
• Next level of virtualization (technical)
Containers are NOT VM’S!
Hardware virtualization
OS virtualization
User space
Kernel space
REST Interface
libcontainerd graphlibnetwork plugins
Docker Client
Docker
Registry
Docker Compose Docker Swarm
containerd + runc
Control Groups
cgroups
Namespaces
Pid, net, ipc, mnt, uts
Layer Capabilities
Union Filesystems
AUFS, btrfs, vfs, zfs*,
DeviceMapper
Other OS
Functionality
OS virtualization on Linux
Windows container types
A terminology thing…
Windows container hosts
• Supported Windows Container Hosts
• Windows Server 2016 Server Core
• Windows Server 2016 Nano Server
• Windows 10
Containers on Windows
• August 2008 - Linux Containers
• March 2013 - Docker founded by Solomon Hykes
• ~2014 - Microsoft started implementing Windows Containers
• August 2015 - Windows Server 2016 TP 3 (Windows Server Container
Support)
• November 2015 - Windows Server 2016 TP 4 (Hyper-V Container
Support)
• September 2016 - General availability of Windows Server 2016
Windows Server Containers
Demo #1
First look at Windows Server Container
How Windows Server Containers are different
Host User Mode
Container
Management
Compute
Services
System
Processes
Application
Processes
System Processes
System
Processes
Application
Processes
REST Interface
libcontainerd graphlibnetwork plugins
Control Groups
Job objects
Namespaces
Object Namespace,
Process Table,
Networking
Layer Capabilities
Registry, Union like
filesystem extensions
Other OS
Functionality
Compute Service
Docker Client
Docker
Registry
Docker Compose Docker Swarm
containerd + runc
Control Groups
cgroups
Namespaces
Pid, net, ipc, mnt, uts
Layer Capabilities
Union Filesystems
AUFS, btrfs, vfs, zfs*,
DeviceMapper
Other OS
Functionality
Container Architecture (Windows vs Linux)
Hyper-V containers
Demo #2
First look at Hyper-V Containers
The new Microsoft
Containers on Windows
Getting started
Install Docker and Docker Compose
• https://docs.docker.com/docker-for-windows/install/
• https://github.com/docker/compose/releases/download/1.9.0/docker-
compose-Windows-x86_64.exe
• Supported Windows Container Hosts
• Windows Server 2016 Server Core
• Windows Server 2016 Nano Server
• Windows 10
Microsoft Container Integrations
Container support in Visual Studio 2017
• Run, debug and test apps in Docker Containers
• Breakpoint debugging
• Edit & refresh of code
• Scaffolds Docker assets
• Dockerfile, docker-compose.yml
Demo #3
Container support in VS2017
Debugging containers – How it works
Sources
Debugger
~
%USER_PROFILE%
Environment variables ASP.NET Core
public Startup(IHostingEnvironment env)
{
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional:
.AddJsonFile($"appsettings.{env.Environment
.AddEnvironmentVariables();
Configuration = builder.Build();
}
Container support in Visual Studio Code
Yeoman generator for Docker
DockerToolsForVSCode extension
Demo #4
Container support in Visual Studio Code
Containerized workflow
Azure Container Service
Demo #5
Settingup an end-to-end containerized
pipeline with Azure and VSTS
Lessons learned
Keep windows
images up-to-date
(http://bit.ly/2kdVIHr)
Tips &
Tricks
Data volume containers
(docker create -v C:/DockerData:C:/data --name
DataContainer microsoft/windowsservercore
docker run -it -d --volumes-from DataContainer --name
Consumer1 microsoft/windowsservercore)
Be aware of
sensitive
information!
Install-ModuleImage2Docker
Import-Module Image2Docker ConvertTo-Dockerfile
-ImagePathC:win-2016-iis.vhd-ArtifactIIS -
OutputPathc:i2d2iis
Portainer
(http://portainer.io/overview.html#demo )
DockerTLS
(docker run --rm -e
IP_ADDRESSES=127.0.0.1,192.168.254.123 -v
"C:ProgramDatadocker:C:ProgramDatadocker" -v
"$env:USERPROFILE.docker:C:UsersContainerAdmi
nistrator.docker" stefanscherer/dockertls-windows)
Group Managed
Service Accounts
(https://github.com/Microsoft/Virtualizat
ion-Documentation/tree/live/windows-
server-container-tools/ServiceAccountss)
Think ahead. Ask now.
http://www.xpirit.com/
@xpiritbv
http://xpirit.com/blog
@CornellKnulst
cknulst@xpirit.com

Containerized Delivery on the Microsoft Stack

  • 1.
    CONTAINERIZED DELIVERY on the Microsoftstack @CornellKnulst cornell-knulst
  • 2.
  • 3.
    The cloud haschanged expectations Availability 100% Uptime Hyper-scale From startup to enterprise Agility Deliver just in time speed
  • 4.
  • 5.
    Containers: the nextstep in application delivery Serverless Manual Installation wizard Scripted Desired state Containerized
  • 6.
    Linux containers • August2008 - Linux Containers • March 2013 - Docker founded by Solomon Hykes • Next level of application delivery (functional) • Next level of virtualization (technical)
  • 7.
  • 8.
  • 9.
  • 10.
    REST Interface libcontainerd graphlibnetworkplugins Docker Client Docker Registry Docker Compose Docker Swarm containerd + runc Control Groups cgroups Namespaces Pid, net, ipc, mnt, uts Layer Capabilities Union Filesystems AUFS, btrfs, vfs, zfs*, DeviceMapper Other OS Functionality OS virtualization on Linux
  • 11.
  • 12.
  • 13.
    Windows container hosts •Supported Windows Container Hosts • Windows Server 2016 Server Core • Windows Server 2016 Nano Server • Windows 10
  • 14.
    Containers on Windows •August 2008 - Linux Containers • March 2013 - Docker founded by Solomon Hykes • ~2014 - Microsoft started implementing Windows Containers • August 2015 - Windows Server 2016 TP 3 (Windows Server Container Support) • November 2015 - Windows Server 2016 TP 4 (Hyper-V Container Support) • September 2016 - General availability of Windows Server 2016
  • 15.
  • 16.
    Demo #1 First lookat Windows Server Container
  • 17.
    How Windows ServerContainers are different Host User Mode Container Management Compute Services System Processes Application Processes System Processes System Processes Application Processes
  • 18.
    REST Interface libcontainerd graphlibnetworkplugins Control Groups Job objects Namespaces Object Namespace, Process Table, Networking Layer Capabilities Registry, Union like filesystem extensions Other OS Functionality Compute Service Docker Client Docker Registry Docker Compose Docker Swarm containerd + runc Control Groups cgroups Namespaces Pid, net, ipc, mnt, uts Layer Capabilities Union Filesystems AUFS, btrfs, vfs, zfs*, DeviceMapper Other OS Functionality Container Architecture (Windows vs Linux)
  • 19.
  • 20.
    Demo #2 First lookat Hyper-V Containers
  • 21.
  • 22.
  • 23.
  • 24.
    Install Docker andDocker Compose • https://docs.docker.com/docker-for-windows/install/ • https://github.com/docker/compose/releases/download/1.9.0/docker- compose-Windows-x86_64.exe • Supported Windows Container Hosts • Windows Server 2016 Server Core • Windows Server 2016 Nano Server • Windows 10
  • 25.
  • 26.
    Container support inVisual Studio 2017 • Run, debug and test apps in Docker Containers • Breakpoint debugging • Edit & refresh of code • Scaffolds Docker assets • Dockerfile, docker-compose.yml
  • 27.
  • 28.
    Debugging containers –How it works Sources Debugger ~ %USER_PROFILE%
  • 29.
    Environment variables ASP.NETCore public Startup(IHostingEnvironment env) { var builder = new ConfigurationBuilder() .SetBasePath(env.ContentRootPath) .AddJsonFile("appsettings.json", optional: .AddJsonFile($"appsettings.{env.Environment .AddEnvironmentVariables(); Configuration = builder.Build(); }
  • 30.
    Container support inVisual Studio Code Yeoman generator for Docker DockerToolsForVSCode extension
  • 31.
    Demo #4 Container supportin Visual Studio Code
  • 32.
  • 33.
  • 34.
    Demo #5 Settingup anend-to-end containerized pipeline with Azure and VSTS
  • 35.
  • 36.
    Keep windows images up-to-date (http://bit.ly/2kdVIHr) Tips& Tricks Data volume containers (docker create -v C:/DockerData:C:/data --name DataContainer microsoft/windowsservercore docker run -it -d --volumes-from DataContainer --name Consumer1 microsoft/windowsservercore) Be aware of sensitive information! Install-ModuleImage2Docker Import-Module Image2Docker ConvertTo-Dockerfile -ImagePathC:win-2016-iis.vhd-ArtifactIIS - OutputPathc:i2d2iis Portainer (http://portainer.io/overview.html#demo ) DockerTLS (docker run --rm -e IP_ADDRESSES=127.0.0.1,192.168.254.123 -v "C:ProgramDatadocker:C:ProgramDatadocker" -v "$env:USERPROFILE.docker:C:UsersContainerAdmi nistrator.docker" stefanscherer/dockertls-windows) Group Managed Service Accounts (https://github.com/Microsoft/Virtualizat ion-Documentation/tree/live/windows- server-container-tools/ServiceAccountss)
  • 37.
    Think ahead. Asknow. http://www.xpirit.com/ @xpiritbv http://xpirit.com/blog @CornellKnulst cknulst@xpirit.com