Files
container.training/slides/containers/Windows_Containers.md
Jerome Petazzoni 80d6b57697 Intro to containers, January 2019 update
This is a bunch of changes that I had staged, + a few
typo fixes after going through the deck to check its readiness.

There are no deep changes; just a few extra slides
(e.g. about Kata containers and gVisor, and about
services meshes) and typo fixes.
2019-01-03 11:06:06 -06:00

4.3 KiB

class: title

Windows Containers

Container with Windows


Objectives

At the end of this section, you will be able to:

  • Understand Windows Container vs. Linux Container.

  • Know about the features of Docker for Windows for choosing architecture.

  • Run other container architectures via QEMU emulation.


Are containers just for Linux?

Remember that a container must run on the kernel of the OS it's on.

  • This is both a benefit and a limitation.

    (It makes containers lightweight, but limits them to a specific kernel.)

  • At its launch in 2013, Docker did only support Linux, and only on amd64 CPUs.

  • Since then, many platforms and OS have been added.

    (Windows, ARM, i386, IBM mainframes ... But no macOS or iOS yet!)

--


History of Windows containers

  • Early 2016, Windows 10 gained support for running Windows binaries in containers.

    • These are known as "Windows Containers"

    • Win 10 expects Docker for Windows to be installed for full features

    • These must run in Hyper-V mini-VM's with a Windows Server x64 kernel

    • No "scratch" containers, so use "Core" and "Nano" Server OS base layers

    • Since Hyper-V is required, Windows 10 Home won't work (yet...)

--

  • Late 2016, Windows Server 2016 ships with native Docker support

    • Installed via PowerShell, doesn't need Docker for Windows

    • Can run native (without VM), or with Hyper-V Isolation


LCOW (Linux Containers On Windows)

While Docker on Windows is largely playing catch up with Docker on Linux, it's moving fast; and this is one thing that you cannot do on Linux!

  • LCOW came with the 2017 Fall Creators Update.

  • It can run Linux and Windows containers side-by-side on Win 10.

  • It is no longer necessary to switch the Engine to "Linux Containers".

    (In fact, if you want to run both Linux and Windows containers at the same time, make sure that your Engine is set to "Windows Containers" mode!)

--

If you are a Docker for Windows user, start your engine and try this:

docker pull microsoft/nanoserver:1803

(Make sure to switch to "Windows Containers mode" if necessary.)


Run Both Windows and Linux containers

  • Run a Windows Nano Server (minimal CLI-only server)

    docker run --rm -it microsoft/nanoserver:1803 powershell
    Get-Process
    exit
    
  • Run busybox on Linux in LCOW

    docker run --rm --platform linux busybox echo hello
    

(Although you will not be able to see them, this will create hidden Nano and LinuxKit VMs in Hyper-V!)


Did We Say Things Move Fast

  • Things keep improving.

  • Now --platform defaults to windows, some images support both:

    • golang, mongo, python, redis, hello-world ... and more being added

    • you should still use --plaform with multi-os images to be certain

  • Windows Containers now support localhost accessable containers (July 2018)

  • Microsoft (April 2018) added Hyper-V support to Windows 10 Home ...

    ... so stay tuned for Docker support, maybe?!?


Other Windows container options

Most "official" Docker images don't run on Windows yet.

Places to Look:


SQL Server? Choice of Linux or Windows


Windows Tools and Tips