Guy
Guy

Reputation: 820

docker-compose: failed to register layer: Error processing tar file - cannot find Windows DLL MUI file

Docker desktop is using Linux containers.

(Yes, I tried this: Docker Error: failed to register layer: Error processing tar file(exit status 1): "...msader15.dll.mui: no such file or directory", but using Docker Desktop with Windows containers caused the docker-compose command to fail with the response Error response from daemon: operating system is not supported)

Structure

- engine-load-tests
|- Dockerfile
|- docker-compose.yml
|- engine_load_tester_locust\
   |- main.py 
|- WinPerfCounters\ [I know - the casing is inconsistent]
   |- main.py
   |- Dockerfile
|- environment config files, README, other files

Dockerfile

FROM python:3.9.6-windowsservercore-1809
COPY . ./WinPerfCounters/
RUN pip install --no-cache-dir -r ./WinPerfCounters/requirements.txt
CMD [ "python", "WinPerfCounters/main.py", "WinPerfCounters/load_test.conf" ]

Docker-Compose

version: "3.3"
services:
  win_perf_counters:
    container_name: win_perf_counters
    platform: windows
    image: python:3.9.6-windowsservercore-1809
    build: ./WinPerfCounters
    depends_on:
      - influxdb
    links:
      - influxdb
Then other containers for locust, influx, and grafana...

Output - Snippets

------
> [python:3.9.6-windowsservercore-1809 1/3] FROM docker.io/library/python:3.9.6-windowsservercore-1809@sha256:54b7eadfbbc3a983bf6ea80eb7478b68d46267bbbcc710569972c140247ccd5e:
-----
failed to solve: rpc error: code = Unknown desc = failed to register layer: Error processing tar file(exit status 1): link /Files/Program Files/common files/Microsoft Shared/Ink/en-US/micaut.dll.mui /Files/Program Files (x86)/common fi
les/Microsoft Shared/ink/en-US/micaut.dll.mui: no such file or directory

Upvotes: 2

Views: 2063

Answers (3)

Hillary
Hillary

Reputation: 11

I ran into this exact same issue and here are the first things I tried that didn't work:

  • reinstalling docker
  • clearing docker cache

I also saw a comment that it's necessary to upgrade to Docker Pro, and that is not true.

The following are also necessary but aren't what 'fixed' it for me:

  • setting the default builder to the 'non-linux' builder
  • adding the tags in my .csproj file (my error was the same but in C#) <PropertyGroup> <DockerDefaultTargetOS>Windows</DockerDefaultTargetOS> <EnableSdkContainerDebugging> True </EnableSdkContainerDebugging> </PropertyGroup>
  • Having a license for the operating system that you plan to build

The missing piece to my puzzle was configuring Docker Desktop to Windows, which is done in the taskbar at the bottom of the screen, to the left of the clock, sound, and network configuration. Click the ^ arrow, then right click the small Docker symbol. You can see that mine now says 'switch to linux containers' because it is currently set to windows.

the taskbar expanded to show Docker options in order to switch target OS

Upvotes: 0

Kumar Shishir
Kumar Shishir

Reputation: 235

You need to run Docker in the windows container. Right-click on the Docker icon in the system tray and select "Switch to Windows containers" from the context menu.

Upvotes: 0

Matt Chambers
Matt Chambers

Reputation: 2346

You can't run Windows containers (i.e. derived from some Windows base image like windowsservercore-1809) when Docker Desktop is set to Linux containers.

Upvotes: 3

Related Questions