[FDD 2016] Marek Śledziński - Microsoft Windows a sprawa kontenerów

48
Microsoft Windows Containers

Transcript of [FDD 2016] Marek Śledziński - Microsoft Windows a sprawa kontenerów

Microsoft Windows Containers

Hi !

Programmer A little bit of DevOps MS Technology Stack

So, what is a container?

„Operating-system-level virtualization is a server virtualization method in which the kernel of an operating system allows the existence of multiple isolated user-space instances, instead of just one. Such instances, which are sometimes called containers, software containers,[1] virtualization engines (VEs) or jails [...]”

https://en.wikipedia.org/wiki/Operating-system-level_virtualization

And why should I care…

Classic virtualization vs physical machine Portability

Trending (well, not Windows Containers…yet)

Containers and Docker

Runtime

Image Repository

Windows Containers - Example

\

ASP MVC 5 (.NET 4.6)

\

ASP MVC 5 (.NET 4.6)

ASP MVC 5 (.NET 4.6)

> docker build –t aspmvc-demo2 .

WindowsServerCore [10 GB]

WebServer [100 MB]

WebApp1 [10 MB] WebApp1 [20 MB]

Let’s look for an example layer

Example layer

Example layer

Example layer

Example layer

Example layer

This folder is empty

> docker run –d aspmvc-demo2

> docker run –d aspmvc-demo2 x2

> docker run –d aspmvc-demo2 x7

> docker ps

Memory per container

~ 1 GB / Container (not under load)

Repository

Runtime

Native support Windows Server 2016 (CTP3+) Windows 10 (Anniversary update)

Docker port for Windows Open Container Initiative

But how?

Architecture Internals

Architecture on Linux…

Operating System

File System Other

containerd + runc

libcontainerd

API

libnetwork graph plugins

Docker Engine

Docker Client Docker Compose Docker Swarm Registry

Namespaces/Cgroups

Architecture on Linux… and …

Operating System

Namespaces/Cgroups File System Other

containerd + runc

libcontainerd

API

libnetwork graph plugins

Docker Engine

Docker Client Docker Compose Docker Swarm Registry

... And on Windows

Operating System

File System Other

Compute Service

libcontainerd

API

libnetwork graph plugins

Docker Engine

Docker Client Docker Compose Docker Swarm Registry

Namespaces/Cgroups

Namespaces on Linux

http://www.howtogeek.com/117435/htg-explains-the-linux-directory-structure-explained/

Namespaces on Windows

From JobObject to Silos

File System: UnionFS vs NTFS

A.txt B.txt A.txtB.txt A.txt[Link]

B.txt[Link]A.txtB.txt

File System: UnionFS vs NTFS

A.txt B.txt A.txtB.txt A.txt

B.txt[Link]A.txtB.txt

When container is running

Windows Kernel

Session Manager

Security Manager

Other

Docker Engine

ComputeService

Host User Mode

SystemProcesses

ContainerManagement

Job Object Network Storage

SystemProcesses

ApplicationProcesses

Windows Container

Hyper-V isolation mode

Windows Kernel

Session Manager

Security Manager

Other

Docker Engine

ComputeService

Host User Mode

SystemProcesses

ContainerManagement

Job Object Network Storage

SystemProcesses

ApplicationProcesses

Windows Container

Windows Kernel

System Processes

GuestComputeService

Virtual Machine

Windows Server – which one to use?

Windows Server

Windows Server Nano

Windows Server Core

In summary

Should I learn it? Yes

In summary

Should I learn it? Yes Should I use it in production? Not really

In summary

Should I learn it? Yes Should I use it in production? Not really

Links https://msdn.microsoft.com/en-us/virtualization/windowscontainers/about/about_overview https://hub.docker.com https://github.com/MSledzinski/FDDDemo

Marek Śledziński

Microsoft Windows Containers

[email protected]