Tag: Container Host

How to Install a Windows Server Container Host

How to Install a Windows Server Container Host

In this blog post, I want to quickly guide you through how you can install a Windows Server Container Host running Docker. This guide will help you set up, install, and run Windows Containers on Windows Server. In my example, I will install a container host on a Windows Server, version 2004, which is a Semi-Annual Channel (SAC) release. Windows Server SAC releases are released twice a year and are optimized for containers. In the Windows Server, version 2004 release, the team continued improving fundamentals for the core container platform such as performance and reliability.

If you want to learn more about the differences of Windows Server Semi-Annual Channel (SAC) vs. Long-Term Servicing Channel (LTSC), check out my blog post.

Requirements

  • A virtual or physical server running Windows Server 2016 or higher (Also including Semi-Annual Channel (SAC) releases. In my blog post, I will use the latest available releases and run the latest Windows Server SAC release, which offers the latest enhancements on the container host.
  • You can also use the Windows Server 2019 LTSC version

Set up and install the Windows Server Container Host

Since I am using the latest SAC release of Windows Server, the server is available as Windows Server Core only. This means I am going to use a tool called “sconfig” to set up my server for the first time. Of course, you can also use existing methods like unattend.xml files or PowerShell scripts to set up your server.

Windows Server Core

Windows Server Core

With sconfig, you can run all the simple configuration tasks to configure your Windows Server.

Windows Server SCONFIG

Windows Server SCONFIG

After the Windows Server is configured and patched, we can now install Docker, which is required to work with Windows containers. Docker consists of the Docker Engine and the Docker client. You can simply install Docker on Windows Server using the following commands.

Install-Module -Name DockerMsftProvider -Repository PSGallery -Force
Install-Package -Name docker -ProviderName DockerMsftProvider
Install Docker on Windows Server

Install Docker on Windows Server

After these commands, you will need to restart the server.

Restart-Computer -Force

If you want to learn more about installing Docker on Windows Server, check out Microsoft Docs.

Run Windows Container Docker Images on Windows Server

Run Windows Container Docker Images on Windows Server

Now you can start pulling your docker container images to your Windows Server. I will use the latest Windows Container images, which came with Windows Server, version 2004. You can read more about the improved container images here.

docker pull mcr.microsoft.com/windows/servercore:2004 
docker pull mcr.microsoft.com/windows/nanoserver:2004 
docker pull mcr.microsoft.com/windows:2004

You can now use the docker client to manage your containers on your Windows Server, or you can also use the new Windows Admin Center Container extension, which was released a couple of weeks ago.

Manage Windows Server Containers with Windows Admin Center

Manage Windows Server Containers with Windows Admin Center

And yes, if you have a standalone Windows Server Core, you can also directly install Windows Admin Center on your Windows Server Core.

Conclusion

I hope this blog post gives you a great overview of how to install and set up a Windows Server container host. If you have any questions, feel free to leave a comment.



Configure Nano Server Container Host

Setup Windows Containers on Nano Server

With the release of Windows Server 2016 Technical Preview 4 Microsoft allows you to use Windows Server Containers and Hyper-V Containers on Nano Server. In this blog post I will cover how you can setup a Nano Server on Hyper-V and let it use as a Container Host for your Windows Server and Hyper-V Containers inside this Nano Server VM. I already described how you can create a Nano Server VHDX file and how you can manage your Nano Server using PowerShell or PowerShell Direct so you can use this quick guide to set this up.

Create Nano Server Container Host VM

Create a new Nano Server Container Host VHDX file using the following features:

  • GuestDrivers (VM Drivers for Hyper-V)
  • Containers
  • Compute (Hyper-V role, if you want to run Hyper-V Containers)
  • ReverseForwarders

Create Nano Server Container Host VM PowerShell

# Change Working Directory
cd C:\NanoServer
 
# Import Module
Import-Module .\NanoServerImageGenerator.psm1
 
# Create Nano Server Image
New-NanoServerImage -MediaPath D:\ -BasePath .\Base -TargetPath '.\NanoImage\NanoConHost.vhd' -EnableRemoteManagementPort -GuestDrivers  -ComputerName NanoConHost -Containers -Compute -MaxSize 60GB -ReverseForwarders

Create Nano Server VM

This will create a new VHDX and you can create a new Virtual Machine. The Virtual Machine you create has to have at least 2 vCPUs.

If you want to use Hyper-V Containers inside this Virtual Machine, you have to setup the Virtual Machine to use Nested Virtualization. For this you can use this PowerShell command:

Set-VMProcessor -VMName "NanoConHost01" -ExposeVirtualizationExtensions $true

Configure Nano Server Container Host

Startup your Nano Server Virtual Machine and use PowerShell remoting to connect to it:

Enter-PSSession -ComputerName 192.168.1.34 -Credential (Get-Credential)

Configure Nano Server Container Host

You have to configure networking for your container host, you can create a External Switch or a new NAT Switch. If you use a new NAT Switch you can use the following commands:

# Create Virtual Switch for your Containers
New-VMSwitch -Name "Virtual Switch" -SwitchType NAT -NATSubnetAddress 172.16.0.0/12
 
# Set NAT Configuration
New-NetNat -Name ContainerNat -InternalIPInterfaceAddressPrefix "172.16.0.0/12"

Now you can download the Nano Server Container Image to your Container Host, so you can create new Containers based on this Image.

# Download and Install Nano Server Image
Install-PackageProvider ContainerProvider -Force
 
Find-ContainerImage
 
Install-ContainerImage -Name NanoServer -Version 10.0.10586.0 # Get Container Image should list the Nano Server Image
 
Get-ContainerImage

Now you can start using Containers inside your Nano Server Container Host.First thing you may notice is how fast and light weight everything is. For example, on my Surface Book it takes 7-8 seconds for the first initial boot of my Nano Server VM and new containers are created and started in less than a second. I really think that the concept of Nano Server and Container will bring a lot of benefits which will make both solutions a great success. When you deploy new servers today it takes several minutes until they are ready, with Nano Server it only takes seconds. If you copy for example a Windows Server Full Installation VHD you copy around 12GB, with Nano Server you copy around 400-500MB.