Windows Containers
Why should I care?
ALEXEY BORODENKO,
LEAD SOFTWARE ENGINEER
N-IX, UKRAINE
Agenda
• Modernize options
• Docker onWindows
• Windows Containers types
• Base images
• Networking
• CI/CD
• Cloud
Use Case 1
• .NET Framework 4.5.2
• C++
• Will CoreCLR support C++/CLI crossplat?
• vc_redist.x64
Docker for Windows
/var/run/docker.sock vs //./pipe/docker_engine
containerd.io (CNCF)
OCI members
Docker for WindowsDocker on Windows
Runtime Architecture
Demo(linuxizms)
• moby/moby
• daemon_windows.go
• hcsshim -> HCS
• libnetwork -> hcsshim -> HNS
• kernel_windows.go
• client_daemon_windows.go
• containerd -> runhcs -> hcsshim
Container types
Hyper-V containers
HYPER-V
• not open source
• kernel cloning
• security (CVE-2018-8115)
• conteinerization != virtualization
DOCKER CLI
• hot copy of files(not supported)
• network hot-add
Microsoft Ignite 2016
Microsoft Ignite 2016
Windows Container Version Compatibility
Status reason CannotPullContainerError: a Windows version 10.0.17134-based image is incompatible with
a 10.0.14393 host
Base images
Optimized size of Windows containers base images
Use Case 2 (base images)
• microsoft/dotnet-framework:4.7.1-sdk
• microsoft/dotnet-framework:4.7.1-runtime (app)
• microsoft/dotnet:2.1.500-sdk-nanoserver-sac2016 (test)
• mongo:4.0.4-windowsservercore-1709
Windows Container Networking
Demo(Windows Containers Networking)
Network topologies and Drivers
Windows Use cases
Local Service
Discovery
Global Service
Discovery
nat dev YES N/A
transparent
dev/small
deployments
NO NO
overlay
Docker Swarm YES YES
l2bridge Kubernetes /
Microsoft SDN
NO Kube-DNS
l2tunnel Azure only
Use Case 3 (CI/CD)
• Jenkins (Windows slave)
• dockerized tools, SDK, chocolatey(apt)
• multistage builds
• unit/integration tests(quality gate)
• layers caching
• NuGet packages(BaGet)
Logging/Monitoring/Metrics
• Datadog (not supported yet)
• Dynatrace (Beta with support onlyWindows Server Containers)
• New Relic (Windows Server Containers + .NET)
• open source
• Grafana Dashboard
• application metrics (Prometheus)
• Telegraf plugin (win_perf_counters)
• GrafanaAlerts
Use Case 4 (Cloud)
• Terraform
• Amazon ECS using Fargate
• Windows Server 2016 Optimized AMI
• TI(P)G Stack
Summary
• drive a changes with containerization of existing .NET applications
• native Docker support onWindows
• wide range of Docker base images
• Windows Containers support by main Cloud providers AWS, Azure
Bonus!!!
• Windows Server 2019 built in support SSH server!
• Optimized AMIs (2016, 2019 for ECS)
• UI tests supported as well
• Linux andWindows Containers side by side without the Moby LinuxVM!!!
• Awesome-WSL (DevOps=console)
• Docker onWSL natively

JS Fest 2019. Алексей Бороденко. Windows Containers. Why should I care?