Configuration

Configuring Windows Server

Windows Server provides an optimal experience when running Windows containers, but only when process isolation mode is used. Using Hyper-V isolation mode will result in a sub-optimal experience due to several issues that impact performance and stability. Process isolation mode is the default isolation mode under Windows Server.

Requirements

  • Windows Server 2016 or newer
  • Minimum 8GB of RAM
  • Minimum 600GiB available disk space for building container images

Step 1: Install Docker EE

As per the instructions provided by the Install Docker Engine - Enterprise on Windows Servers page of the Docker Documentation, run the following commands from an elevated PowerShell prompt:

# Add the Docker provider to the PowerShell package manager
Install-Module DockerMsftProvider -Force

# Install Docker EE
Install-Package Docker -ProviderName DockerMsftProvider -Force

# Restart the computer to enable the containers feature
Restart-Computer

Step 2: Install Python 3 via Chocolatey

The simplest way to install Python and pip under Windows is to use the Chocolatey package manager. To do so, run the following command from an elevated PowerShell prompt:

Set-ExecutionPolicy Bypass -Scope Process -Force;
iex ((New-Object System.Net.WebClient).DownloadString(
	'https://chocolatey.org/install.ps1'
))

You may need to restart the system for your shell to recognise the updates that the Chocolatey installer makes to the system PATH environment variable. Once these changes are recognised, you can install Python by running the following command from either an elevated PowerShell prompt or an elevated Command Prompt:

choco install -y python

Step 3: Install ue4-docker

Install the ue4-docker Python package by running the following command from an elevated Command Prompt:

pip install ue4-docker

Step 4: Use ue4-docker to automatically configure Docker and Windows Firewall

To automatically configure the required system settings, run the ue4-docker setup command from an elevated Command Prompt:

ue4-docker setup

This will configure the Docker daemon to set the maximum image size to 400GB, create a Windows Firewall rule to allow Docker containers to communicate with the host system (which is required during the build of the ue4-source image), and download any required DLL files under Windows Server version 1809 and newer.

Step 5: Copy required DLL files (Windows Server Core version 1803 and older only)

This step is only required under when building the ue4-build-prerequisites image locally under older versions of Windows Server.

Starting from Windows Server version 1809 (base image tag ltsc2019), the ue4-docker setup command will automatically extract the required DLL files from the full Windows base image. Manual configuration is only required under Windows Server version 1803 and older when you are building the ue4-build-prerequisites image locally rather than pulling the prebuilt version.

Under Windows Server Core, you will need to copy a number of DLL files from a copy of Windows 10 (or Windows Server with the Desktop Experience feature) and place them in the C:\Windows\System32 directory. Note that these DLL files must be copied from the same version of Windows as the Windows Server Core host system (e.g. Windows Server 1709 needs DLLs from Windows 10 1709, Windows Server 1803 needs DLLs from Windows 10 1803, etc.) Although DLLs from an older system version may potentially work, Windows containers will refuse to load these DLL files if they have been copied from a version of Windows that is newer than the container.

The required DLL files for each version of Windows Server Core are listed in the tables below, along with the minimum and maximum versions of these DLLs that have been tested and are known to work.

Windows Server 2016 (base image tag ltsc2016)

Version-specific dependency:

The file ddraw.dll is only required under Windows Server 2016 because it is a dependency of the relevant version of opengl32.dll. Under later versions of Windows, this dependency is replaced with the API set ext-ms-win-dx-ddraw-l1-1-0.dll, and so only the remaining three DLL files are required.

DLL File Min Version Max Version
ddraw.dll 10.0.14393.0 10.0.14393.953
dsound.dll 10.0.14393.0 10.0.14393.0
glu32.dll 10.0.14393.0 10.0.14393.0
opengl32.dll 10.0.14393.0 10.0.14393.0

Windows Server, version 1709 (base image tag 1709)

DLL File Min Version Max Version
dsound.dll 10.0.16299.15 10.0.16299.15
glu32.dll 10.0.16299.15 10.0.16299.15
opengl32.dll 10.0.16299.15 10.0.16299.15

Windows Server, version 1803 (base image tag 1803)

DLL File Min Version Max Version
dsound.dll 10.0.17134.1 10.0.17134.1
glu32.dll 10.0.17134.1 10.0.17134.1
opengl32.dll 10.0.17134.1 10.0.17134.1