[docker] Docker: "no matching manifest for windows/amd64 in the manifest list entries"

I use Docker on Windows, and when I tried to pull a PHP image with this command

$ docker pull php

I got this message:

Using default tag: latest
latest: Pulling from library/php no matching manifest for windows/amd64 
        in the manifest list entries

How can I fix this problem?

This question is related to docker

The answer is


I had this same issue on Windows 10. I bypassed it by running the Docker daemon in experimental mode:

  1. Right click Docker icon in the Windows System Tray
  2. Go to Settings
  3. Daemon
  4. Advanced
  5. Set the "experimental": true
  6. Restart Docker

There could be many reasons for this error. But most obvious reason for this error is using Windows Container in Linux Container Mode or vise versa.

  1. Click Docker Icon in System Tray In Context Menu
  2. Click "Switch to Window/Linux Container"
  3. Option Click Switch Button in Switch Dialog
  4. It may take little time
  5. Make Sure Docker is Running State Now

Switch Container Mode Dialog


You are in Windows container mode. So if you're not sure that the image you want to pull is built for the Windows architecture, you need to switch to Linux containers.


In my case it was that the Windows OS version I was on did not support the tag I was trying to pull. Utilizing an older tag allowed me to get this to work.

Specifically:

docker pull mcr.microsoft.com/windows/nanoserver:1903 errored

docker pull mcr.microsoft.com/windows/nanoserver:1803-amd64 worked


Another possible way to do this:

In system tray, right click on docker icon, then click on Switch to Linux containers.

(Docker for Windows, Community Edition, version 18.03.1)


Version: Windows 10

Step 1: Right click Docker instance and Go to Settings
enter image description here

Step 2: Basic to Advanced and setting the "experimental": true enter image description here

Step 3: Restart Docker
enter image description here

Step 4: To install dockerfile is successful( ex: docker build -t williehao/cheers2019 . ) enter image description here


I solved this in Windows 10 by running in admin Powershell:

cd "C:\Program Files\Docker\Docker"

And then:

./DockerCli.exe -SwitchDaemon

You need to pull with the Linux platform first, then you can run on Windows:

docker pull --platform linux php
docker run -it php

See blog post Docker for Windows Desktop 18.02 with Windows 10 Fall Creators Update.


This looks like "docker pull" fails in windows 10 #1100

If adding --experimental does not work, consider re-installing docker for windows.


This may not only happen due to windows containers!

Today all Node.Js docker images are not pullable. Always check the image you are trying to pull before.

Related Github-Issue


I was getting this error in my Azure DevOps pipeline.

Step 1/7 : FROM nginx:alpine
alpine: Pulling from library/nginx
no matching manifest for windows/amd64 10.0.14393 in the manifest list entries
##[error]C:\Program Files\Docker\docker.exe failed with return code: 1
##[section]Finishing: Build an image

The problem was I had selected the Hosted VS2017 instead of the Hosted Ubuntu. After changing the same as follows, the build was successful.

enter image description here

Hope it helps.


Right click Docker instance Go to Settings Daemon Advanced Set the "experimental": true Restart Docker

 {
      "registry-mirrors": [],
      "insecure-registries": [],
      "debug": true,
      "experimental": true
    }

Deprecating the ‘latest’ tag

We are deprecating the ‘latest’ tag across all our Windows base images to encourage better container practices. At the beginning of the 2019 calendar year, we will no longer publish the tag ; We’ll yank it from the available tags list.

We strongly encourage you to instead declare the specific container tag you’d like to run in production. The ‘latest’ tag is the opposite of specific; it doesn’t tell the user anything about what version the container actually is apart from the image name. You can read more about version compatibility and selecting the appropriate tag on our container docs .

https://techcommunity.microsoft.com/t5/containers/windows-server-2019-now-available/ba-p/382430#


Consider the applications that you are pulling - are they Windows based? If not, you need to run a Linux container.

Without using the experimental mode, you can only use Docker in one style of container vs the other. If you activate the experimental mode as mentioned above, you can use Windows and Linux containers as required by the applications you are pulling in the compose file.

Key note: Experimental - still in development by Docker.


I had the same problem to run Windows IIS image using docker for Windows. Reading the Mohammad Trabelsi response above I realised that to solve my problem I needed to switch my containers (on docker) for Windows containers.

To do this:

  1. Right click Docker instance
  2. Select "Switch to Windows containers..."

docker run mcr.microsoft.com/windows/servercore:ltsc2016

try the above command. what you are pulling should be compatible with the underlying windows version you are in. above will work if you are in windows server 2016.

follow this thread for more info

https://github.com/docker/for-win/issues/3761


For me, it is because of access denied to C:\ProgramData\Docker\config\daemon.json After I fixed it now it works. You can try to switch to Linux containers and switch back. If there is no problem with the switching, then it works with the access permission.


On Windows you must edit the file daemon.json or windows-daemon-options.json, the default location of the configuration file on Windows is %programdata%\docker\config\daemon.json or %programdata%\docker\resources\windows-daemon-options.json

enter image description here enter image description here

enter image description here

enter image description here

The optional field features on the json file, allows users to enable or disable specific daemon features. Example: {"features":{"buildkit": true}} enables buildkit as the default docker image builder.


In my case I had to update windows first, after that the problem has gone.


In Docker:

  1. go to Settings
  2. go to Docker Engine
  3. change experimental to true
  4. press Apply and Restart

.


The reason it is showing this message because it is unable to find Linux containers as running. So, make sure you switch from windows to linux containers before running it.


Questions with docker tag:

standard_init_linux.go:190: exec user process caused "no such file or directory" - Docker What is the point of WORKDIR on Dockerfile? E: gnupg, gnupg2 and gnupg1 do not seem to be installed, but one of them is required for this operation How do I add a user when I'm using Alpine as a base image? docker: Error response from daemon: Get https://registry-1.docker.io/v2/: Service Unavailable. IN DOCKER , MAC How to fix docker: Got permission denied issue pull access denied repository does not exist or may require docker login Docker error: invalid reference format: repository name must be lowercase Docker: "no matching manifest for windows/amd64 in the manifest list entries" OCI runtime exec failed: exec failed: (...) executable file not found in $PATH": unknown Docker: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock Can't create a docker image for COPY failed: stat /var/lib/docker/tmp/docker-builder error Is it safe to clean docker/overlay2/ Docker - Bind for 0.0.0.0:4000 failed: port is already allocated docker : invalid reference format Docker CE on RHEL - Requires: container-selinux >= 2.9 /bin/sh: apt-get: not found Docker: How to delete all local Docker images How to see docker image contents How to remove docker completely from ubuntu 14.04 Kubernetes Pod fails with CrashLoopBackOff Cannot connect to the Docker daemon at unix:/var/run/docker.sock. Is the docker daemon running? How to assign more memory to docker container Cannot connect to the Docker daemon on macOS Import data.sql MySQL Docker Container COPY with docker but with exclusion How to check if the docker engine and a docker container are running? Docker "ERROR: could not find an available, non-overlapping IPv4 address pool among the defaults to assign to the network" How to get IP address of running docker container How to run docker-compose up -d at system start up? Dockerfile if else condition with external arguments What does --net=host option in Docker command really do? Docker build gives "unable to prepare context: context must be a directory: /Users/tempUser/git/docker/Dockerfile" Error "The input device is not a TTY" How to create a DB for MongoDB container on start up? How to install "ifconfig" command in my ubuntu docker image? How to use local docker images with Minikube? How to clear the logs properly for a Docker container? accessing a docker container from another container How to stop docker under Linux How to specify Memory & CPU limit in docker compose version 3 docker build with --build-arg with multiple arguments How to mount a single file in a volume Add Insecure Registry to Docker Settings to Windows Firewall to allow Docker for Windows to share drive Can Windows Containers be hosted on linux? denied: requested access to the resource is denied : docker Understanding "VOLUME" instruction in DockerFile ARG or ENV, which one to use in this case? How to persist data in a dockerized postgres database using volumes