Windows Nanoserver images not working with Docker executor

Summary

The GitLab Runner documentation indicates that the Docker executor supports Windows Nanoserver but jobs using Nanoserver-based images don't seem to work with the Docker executor.

Steps to reproduce

Set up a Windows-based Docker runner and tag it.

Define a job that uses a Nanoserver-based image (for example mcr.microsoft.com/windows/nanoserver:1809 or mcr.microsoft.com/dotnet/sdk:5.0):

use-nanoserver-image:
  stage: test
  tags: [WINDOWS-DOCKER-1809]
  image: mcr.microsoft.com/windows/nanoserver:1809
  script:
    - echo Hi

Actual behavior

The job fails with a system error. See output below.

Expected behavior

The job succeeds.

Relevant logs and/or screenshots

Running with gitlab-runner 13.9.0 (2ebc4dc4)
  on REDACTED
  feature flags: FF_NETWORK_PER_BUILD:true
Preparing the "docker-windows" executor
00:03
Using Docker executor with image mcr.microsoft.com/windows/nanoserver:1809 ...
Pulling docker image mcr.microsoft.com/windows/nanoserver:1809 ...
Using docker image sha256:47284f980c64cbd4067b161e0e4615f20b7f5def84d5e09f1550e5f625dea9d3 for mcr.microsoft.com/windows/nanoserver:1809 with digest mcr.microsoft.com/windows/nanoserver@sha256:def85061f840b63c4e45019ba716a4b35649ecba2e273621d6e80c8640ceff4c ...
Preparing environment
00:12
Running on REDACTED via 
REDACTED...
Getting source from Git repository
00:10
Fetching changes with git depth set to 50...
Initialized empty Git repository in REDACTED/.git/
Created fresh repository.
Checking out cba150d5 as master...
git-lfs/2.11.0 (GitHub; windows amd64; go 1.14.2; git 48b28d97)
Skipping Git submodules setup
Executing "step_script" stage of the job script
00:01
Using docker image sha256:47284f980c64cbd4067b161e0e4615f20b7f5def84d5e09f1550e5f625dea9d3 for mcr.microsoft.com/windows/nanoserver:1809 with digest mcr.microsoft.com/windows/nanoserver@sha256:def85061f840b63c4e45019ba716a4b35649ecba2e273621d6e80c8640ceff4c ...
Cleaning up file based variables
00:06
ERROR: Job failed (system failure): Error response from daemon: container 1a6ce20fcfd316ba096ea9e7e649fe550b3d318ce4f2342f58ee437a6f05fd54 encountered an error during hcsshim::System::CreateProcess: failure in a Windows system call: The system cannot find the file specified. (0x2) extra info: {"CommandLine":"powershell -NoProfile -NoLogo -InputFormat text -OutputFormat text -NonInteractive -ExecutionPolicy Bypass -Command -"...

Environment description

Self-hosted runners, Docker executor on Windows.

config.toml contents
[[runners]]
  name = "${gitlab_ci_name}"
  url = "${gitlab_ci_url}"
  token = "${gitlab_ci_token}"
  executor = "docker-windows"
  environment = [
    "FF_NETWORK_PER_BUILD=true"
  ]

  [runners.docker]
    image = "mcr.microsoft.com/windows:${windows_kernel_version}"
    allowed_images = [
      "mcr.microsoft.com/windows:${windows_kernel_version}",
      "mcr.microsoft.com/windows/iotcore:${windows_kernel_version}",
      "mcr.microsoft.com/windows/servercore:${windows_kernel_version}",
      "mcr.microsoft.com/windows/nanoserver:${windows_kernel_version}",
      "mcr.microsoft.com/dotnet/framework/sdk:*",
      "mcr.microsoft.com/dotnet/framework/runtime:*",
      "mcr.microsoft.com/dotnet/framework/aspnet:*"
    ]
    tls_verify = true
    privileged = false
    pull_policy = "always"
    disable_cache = true

  [runners.cache]
    Type = "s3"
    Path = "cache"
    Shared = true
    [runners.cache.s3]
      ServerAddress = "s3.amazonaws.com"
      AccessKey = "${s3_access_key}"
      SecretKey = "${s3_secret_key}"
      BucketName = "runners-cache-s3"
      BucketLocation = "eu-central-1"
      Insecure = false

Used GitLab Runner version

Possible fixes

Edited by Florian Greinacher