Windows Server 2016: Introducing Containers David Giard Senior Technical Evangelist Microsoft
Windows Server 2016:Introducing ContainersDavid GiardSenior Technical EvangelistMicrosoft
Module AgendaWhat are Containers?Integrating with DockerDevelopment with ContainersContainer use casesMicrosoft Container runtimesSummary and resources
@DavidGiard
What are containers?
@DavidGiard
ContainersA new approach to build, ship, deploy, and instantiate applications
Physical
Applications traditionally built and deployed onto physical systems with 1:1 relationshipNew applications often required new physical systems for isolation of resources
Higher consolidation ratios and better utilizationFaster app deployment than in a traditional, physical environmentApps deployed into VMs with high compatibility successApps benefited from key VM features i.e., live migration, HA
Physical/VirtualKey benefitsFurther accelerate of app deploymentReduce effort to deploy appsStreamline development and testingLower costs associated with app deploymentIncrease server consolidation
Package and run apps withincontainers
Virtual
@DavidGiard
Why containers?Applications are fueling innovation in today’s cloud-mobile world
Developers• Containers unlock ultimate productivity and freedom• Enable ‘write-once, run-anywhere’ apps• Can be deployed as multi-tier distributed apps in
IaaS/PaaS models • Containers offers powerful abstraction for
microservices
Operations• Enhances familiar IT deployment models• Provide standardized environments for
development, QA, and production teams
• Abstract differences in OS distributions and underlying infrastructure
• Higher utilization and compute density• Rapid scale-up and scale-down in response to
changing business needs
DevOps• Integrate people, process, and tools
for an optimized app development process
• Operations focus on standardized infrastructure
• Developers focus on building, deploying, and testing apps
@DavidGiard
ContainersIsolated runtime environment for hosted applicationsDependenciesEvery application has its own dependencies which includes both software (services, libraries) and hardware (CPU, memory, storage)
VirtualizationContainer engine is a light weight virtualization mechanism which isolates these dependencies per each application by packaging them into virtual containers
Shared host OSContainer runs as an isolated process in user space on the host OS, sharing the kernel with other containers
FlexibleDifferences in underlying OS and infrastructure are abstracted away, streamlining ‘deploy anywhere’ approach
FastContainers can be created almost instantly, enabling rapid scale-up and scale-down in response to changes in demand
Container
App ABins/Libraries
App BBins/Libraries
Container Management Stack
Host OS with Container Support
Server
@DavidGiard
FlexibleVMs can be migrated to other hosts to balance resource usage and for host maintenance, without downtime
SecureHigh levels of resource and security isolation for key virtualized workloads
ContainersHow do they differ from virtual machines?
DependenciesEach virtualized app includes the app itself, required binaries and libraries and a guest OS, which may consist of multiple GB of data
Independent OSEach VM can have a different OS from other VMs, along with a different OS to the host itself
Virtual machine
App ABins/Libraries
App BBins/Libraries
Hypervisor
Server
Guest OSGuest OS
@DavidGiard
Container ecosystem
Container Runtime
Linux
Container Images Image Repository
Application Framework
Application
@DavidGiard
Container runtime
Operating System OS Image
Physical host
@DavidGiard
Container runtimeHost Operating System
Hardware Virtualization
Operating System
Operating System OS Images
Virtual machine(s)
@DavidGiard
Container runtime
Host Operating System
Containers
@DavidGiard
Container runtime
Host Operating System
OS Image
Hardware Virtualization
Virtual machine(s)
Guest Operating System
Containers
@DavidGiard
Local Repository
Image creation
Container ViewContainer OS
ImageC:\Windows\*
@DavidGiard
Local Repository
Image creation
C:\Windows\*
Empty
Container ViewContainer OS
Image
SandboxC:\Windows\*
@DavidGiard
Local Repository
Image creation
C:\Windows\*
Empty
Container ViewContainer OS
Image
SandboxC:\Windows\*
C:\nodeJS
@DavidGiard
Local Repository
Image creation
C:\Windows\*
C:\nodeJs
Container ViewContainer OS
Image
SandboxC:\Windows\*C:\nodeJS
C:\nodeJS
@DavidGiard
Local Repository
Image creation
C:\Windows\*
C:\nodeJs
Container ViewContainer OS
Image
Sandbox
@DavidGiard
Local Repository
Image creation
C:\Windows\*
C:\nodeJs
Container View
Application Framework Application
Framework
Container OS Image
@DavidGiard
Local Repository
Image creation
C:\Windows\*
C:\nodeJs
Empty
Container View
Application Framework Application
Framework
Container OS Image
Sandbox
C:\Windows\*C:\nodeJS
@DavidGiard
Local Repository
Image creation
C:\Windows\*
C:\nodeJs
Empty
Container View
Application Framework Application
Framework
Container OS Image
Sandbox
C:\Windows\*C:\nodeJS
C:\myApp
@DavidGiard
Local Repository
Image creation
C:\Windows\*
C:\nodeJs
C:\myApp
Container View
Application Framework Application
Framework
Container OS Image
Sandbox
C:\Windows\*C:\nodeJSC:\myApp
C:\myApp
@DavidGiard
Local Repository
Image creation
C:\Windows\*
C:\nodeJs
C:\myApp
Container View
Application Framework Application
Framework
Container OS Image
Sandbox
@DavidGiard
Local Repository
Image creation
C:\Windows\*
C:\nodeJs
C:\myApp
Container View
Application Framework Application
Framework
Application Image
Container OS Image
@DavidGiard
Automate with PowerShell
@DavidGiard
Integrating with Docker
@DavidGiard
Run anywhere
Docker integrationJoint strategic investments to drive containers forwardDockerAn open source engine that automates the deployment of any application as a portable, self-sufficient container that can run almost anywhere
PartnershipEnable the Docker client to manage multi-container applications using both Linux and Windows containers, regardless of the hosting environment or cloud provider
CustomerDatacenter
ServiceProvider
MicrosoftAzureDocker
Dockerized app
Container
Windows ServerContainer
LinuxContainer
Investments in Windows Server 2016Open source development of theDocker Engine for Windows Server
Azure support for the Docker open orchestration APIsFederation of Docker Hub images into the Azure Gallery and Portal
Strategicinvestments
@DavidGiard
Development with Containers
@DavidGiardLocal Repository
Development process using containers
Central Repository
Application Framework
@DavidGiardLocal Repository
Application Framework
Development process using containers
Central Repository
Application Framework
Developers can choose desired application frameworks and pull them locally from central repositories
@DavidGiardLocal Repository
Application Framework
Development process using containers
Central Repository
Application Framework
Developers can choose desired application frameworks and pull them locally from central repositories
Required dependencies are automatically identified and pulled locally
@DavidGiardLocal Repository
Application Framework
Development process using containers
Developers use the same programming languages and environments they are accustomed to
Central Repository
Application Framework
using System;class Program{ static void Main() {
}}
@DavidGiardLocal Repository
Application Framework
Development process using containers
Applications are compiled and assembled in the same way developers are accustomed to
Central Repository
Application Framework
using System;class Program{ static void Main() {
}}
@DavidGiardLocal Repository
Application Framework
Development process using containers
A new container image is built containing the application, written by the developer
Central Repository
Application Framework
using System;class Program{ static void Main() {
}}
@DavidGiardLocal Repository
Application Framework
Development process using containers
Central Repository
Application Framework
using System;class Program{ static void Main() {
}}
The new application container image can now be pushed to a central repository
@DavidGiard
Development process using containers
@DavidGiard
Development process using containers
Central Repository
Application Framework
@DavidGiard
Development process using containers
Central Repository
Application Framework
Used for unit testingShare with other developers
@DavidGiard
Development process using containers
Central Repository
Application Framework
Used for unit testingShare with other developers
Staged for integration or QA
@DavidGiard
DevOps process with containers
Developers build and test apps in containers, using development environment; i.e., Visual Studio
Operations automates deployment and monitors deployed apps from central repository
1 2
2
3Operations collaborates with developers to provide app metrics and insights
Developers update, iterate, and deploy updated containers
Containers pushed
to central repository
Central Repository
@DavidGiard
Container use cases
Container use casesWorkload characteristicsScale out DistributedState separatedRapid (re)start
Databases
Web Tasks Scale out
Deployment characteristicsEfficient hostingMultitenancyRapid deploymentHighly automatable Rapid scaling
Distributed compute𝒇 (𝒙 )
@DavidGiard
Container OS environments
Nano Server
“Born in the cloud” applications
Highly optimized
Server Core
Traditional applications
Highly compatible
@DavidGiard
Microsoft Container runtimes
@DavidGiard
Microsoft’s Container runtimesWindows Server container
Hosting Highly automated
Secure Scalable and elastic
Efficient Trustedmulti-tenancy
Hyper-V containerShared hosting
Regulated workloads
Highly automated
Secure Scalable and elastic
Efficient Publicmulti-tenancy
@DavidGiard
Container Runtimes
Windows Server container
Hyper-V container
Modern app dev, flexible isolation
Windows Container Images
Application Framework
Write once, deploy anywhere
Container Management
Docker
PowerShell
Others
@DavidGiard
Host Operating System
Container runtime
Windows Servercontainer(s)
@DavidGiard
Container runtime
Host Operating System
Hyper-V Hypervisor
Virtual machine(s)
Hyper-Vcontainer(s)
Windows Servercontainer(s)
@DavidGiard
Container runtime
Host Operating System
Hyper-V Hypervisor
Virtual machine(s)
Windows Server container(s)
Hyper-V Hypervisor
Hyper-Vcontainer(s)
@DavidGiard
The right tools for youContainer management
PowerShell Docker Others
Container technologiesLinux
Microsoft CloudAzure On-
premisesService provider
Development environments
Eclipse
Others…
Development frameworks and languagesPHPPythonWin32RubyGo.NET
NodeJavaJavascriptC++Perl
Service Fabric
@DavidGiard
SummaryRecommended resources
ResourcesDownload Windows Server 2016 Technical Preview
aka.ms/WindowsTechPreviewCustomer Experience Guides for Windows Server 2016 Technical Preview 4
aka.ms/WS2016GuideStay up to date on the latest with Windows Server
aka.ms/MattMcSpirit Windows Server videos and online training
aka.ms/MoreWindowsCourses
© 2015 Microsoft Corporation. All rights reserved.