Will's UK ISV Corner

Building software, services and solutions on the Microsoft Cloud platform, with whatever stack and toolchain you choose.

Crib Sheet: Get Started with Windows Containers and Docker

A few people have been asking about where to start with containers on Windows 10 and Windows server, and with deployment to Azure (thinking about ACS and ACIs).

Before you even worry about how you host and deploy containers in Azure, it’s probably best to start with a quick 101 list of reading and video resources on Containers in general and Docker, once you’ve read these – you can progress onto how / where to host them in Azure (our preferred platform for Windows Container orchestration in Azure is Service Fabric)

Here we go.. This is roughly the learning path that I followed to learn about Containers.

My Colleague David Gristwood also has a nicely crafted blog post that you should read as a primer before you start along this path which is more Azure Focused, I’m focusing on the container platform itself in Windows and Docker here.

Level 100 : Start Here

QuickStart Container 101

https://docs.microsoft.com/en-us/virtualization/windowscontainers/quick-start/index

Build 2015 – Containers what why and how

https://channel9.msdn.com/Events/Build/2015/2-704

Windows 10 Containers

https://docs.microsoft.com/en-us/virtualization/windowscontainers/quick-start/quick-start-windows-10

What is Docker?

https://www.docker.com/what-docker

 

Level 200 : More advanced containers / docker

Linux vs Windows Containers

http://containerjournal.com/2016/10/28/linux-vs-windows-containers-whats-difference/

Hyper-V vs Windows Containers

http://windowsitpro.com/windows-server-2016/differences-between-windows-containers-and-hyper-v-containers-windows-server-201

Docker for Windows

https://docs.docker.com/docker-for-windows/

Docker Tutorial

https://docs.docker.com/get-started/

 

Docker PowerShell Tools install

Open Powershell prompt with administrative credentials and execute

Register-PSRepository Name DockerPSDev SourceLocation https://ci.appveyor.com/nuget/dockerpowershelldev
Install-Module Docker Repository DockerPSDev

From https://github.com/artisticcheese/artisticcheesecontainer/wiki

Windows Server – Install Server Providers

InstallModuleName DockerMsftProvider -Repository PSGallery –Force
InstallPackageName docker -ProviderName DockerMsftProvider

From https://docs.microsoft.com/en-us/virtualization/windowscontainers/quick-start/quick-start-windows-server

 

Building Docker Images

https://docs.docker.com/engine/reference/builder/

https://docs.microsoft.com/en-gb/virtualization/windowscontainers/quick-start/quick-start-images

 

Service Fabric and Containers

https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-containers-overview

 

Ch9 Link Containers and Windows Server 2016

https://channel9.msdn.com/Blogs/windowsserver/Containers-in-Windows-Server-2016/

 

Connect – path to containerization

https://view.officeapps.live.com/op/view.aspx?src=https%3a%2f%2fsec.ch9.ms%2fsessions%2fignite%2f2016%2fBRK3319.pptx

 

Level 300: Nanoserver, technical deep dive and command crib sheet.

 

Repackaging apps to install headlessly on nanoserver

https://blogs.technet.microsoft.com/nanoserver/2015/11/19/hands-on-packaging-and-installing-your-first-windows-server-apps-on-nano-server/

 

Technical Deep Dive further reading, why AND how + history and architecture on Windows Containers.

https://msdn.microsoft.com/en-us/magazine/mt797649.aspx

 

Service Fabric Container applications

https://docs.microsoft.com/en-gb/azure/service-fabric/service-fabric-get-started-containers#create-the-containerized-service-in-visual-studio

 

+ Handy Docker Command List

Requirement Command Options Handy Values
Download a base container image docker pull <publisher/image>

 

microsoft/nanoserver

microsoft/iis

microsoft/windowsservercore

List downloaded images docker images
List running containers and ids docker ps
Commit a container to a new image docker commit <containeridfromdockerpscommand> <imagename>
Launch a command from a container docker run <imagename> <command> -rm Clean up container on exit, -it Run interactively (for command consoles will not run then exit)
Build a container from a dockerfile in the current path docker build