Docker:“清单列表条目中没有适用于Windows / amd64的清单”


151

我在Windows上使用Docker,当我尝试使用此命令提取PHP映像时

$ docker pull php

我收到此消息:

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

我该如何解决这个问题?


5
为了帮助其他人,我在为作为基本OS的Linux创建映像时遇到了此错误...。此错误的原因是它是为Windows容器设置的,所以我切换到Linux容器,然后开始工作...
Abhishek Jain

同样,为了后人:我得到了这个构建Windows容器的方法。即使我切换到Windows,它似乎也已经切换回Linux。将其更改回Windows可解决此问题。
John MacIntyre

Answers:


214

我在Windows 10上也有同样的问题。我通过在实验模式下运行Docker守护程序来绕过它:

  1. 右键单击Windows系统任务栏中的Docker图标
  2. 转到设置
  3. 守护进程
  4. 高级
  5. 设置 "experimental": true
  6. 重新启动Docker

6
您如何右键单击Docker实例?是Windows任务栏中的Docker图标吗?
彼得·莫滕森

2
@PeterMortensen没错,这是任务栏中的Docker图标
benscabbia

除了先前的答案,我还必须删除C:\ WINDOWS \ System32 \ drivers \ etc \ hosts.etc的“只读”属性
Thiago Custodio

3
在Windows上,您可以直接在'%programdata%\ docker \ config \ daemon.json'中找到配置文件,并在那里设置属性。
NemyaNation

1
如果您从独立的二进制使用--experimental功能运行停靠(守护程序)
Anwar

91

该错误可能有很多原因。但是,此错误的最明显原因是在Linux容器模式下使用Windows容器,反之亦然。

  1. 单击上下文菜单中系统托盘中的Docker图标
  2. 单击“切换到Windows / Linux容器”
  3. 选项单击“切换”对话框中的“切换”按钮
  4. 可能需要一点时间
  5. 确保Docker现在处于运行状态

切换容器模式对话框


3
它解决了我的“关于Windows / amd64没有匹配的清单”的问题
Winlinux


1
它的工作对我来说这个问题“不匹配清单适用于Windows / AMD64 10.0.17134在清单列表中的条目”
阿姆娜

86

您处于Windows容器模式。因此,如果不确定要提取的映像是否针对Windows体系结构构建的,则需要切换到Linux容器。



3
这解决了问题。我正在使用Windows 10平台。
somnathchakrabarti

一旦切换失败?这是一种解决方法
Tiago Medici,

1
如果您切换到Linux容器,那么您将能够在Docker中托管Windows应用程序吗?例如,在同一Docker实例上使用IIS和MySQL。
webworm

@webworm,因为还有用于Windows的MySQL,为什么要将Linux与IIS混合使用而不是仅使用Windows版本,为什么还要使用Linux版本?
George Birbilis

35

另一种可能的方法是:

在系统任务栏中,右键单击docker图标,然后单击Switch to Linux containers

(适用于Windows的Docker,Community Edition版本18.03.1)


30

就我而言,原因是我所在的Windows操作系统版本不支持我尝试提取的标签。使用较旧的标签使我可以使用它。

特别:

docker pull mcr.microsoft.com/windows/nanoserver:1903 错误的

docker pull mcr.microsoft.com/windows/nanoserver:1803-amd64 工作了


这个!与旧映像(servercore / nanoserver)相比,Microsoft在此处进行了更改。现在,您需要查找要部署到的系统的Windows版本,并相应地选择基本映像。
JustCoding

1
非常感谢Joedragons!
里希·ja那(Rishi Jain)


它也为我工作。但这是否意味着我在提取每个图像(例如,hello-world)时需要采用这种方法?
Mandroid

@Mandroid我会对您的发现感兴趣,但是有些图像似乎可以工作,而有些图像在我的情况下却不起作用,所以我想它是特定于设置的。例如,如果您有一个Windows修补程序,则可能与另一个有所不同。
joedragons

20

版本:Windows 10

步骤1:右键单击Docker实例并转到设置
在此处输入图片说明

步骤2:从基础到高级,并设置“实验性”:true 在此处输入图片说明

第三步:重启Docker
在此处输入图片说明

步骤4:成功安装dockerfile(例如:docker build -t williehao / cheers2019。) 在此处输入图片说明



6

我在Windows 10中通过在admin Powershell中运行来解决了这个问题:

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

然后:

./DockerCli.exe -SwitchDaemon

3

考虑您要拉的应用程序-它们是否基于Windows?如果不是,则需要运行Linux容器。

如果不使用实验模式,则只能在一种容器样式中使用Docker,而在另一种容器样式中使用。如果您如上所述激活实验模式,则可以根据要放入撰写文件中的应用程序的需要使用Windows和Linux容器。

重点说明:实验性-仍由Docker开发。



3

在Windows 10#1100中看起来像“ docker pull”失败

如果添加--experimental不起作用,请考虑为Windows重新安装docker


添加“ experimental:true”对我不起作用,因此我认为我会在重新安装docker之前尝试切换到Linux容器,并且它可以正常工作。
yogescicak

在Windows环境中,还要检查Hyper-V虚拟机管理服务是否正在运行,然后在安装docker之后将其切换到Linux容器模式。
少年梅耶

添加experimental作品,谢谢...为什么会这样呢?
Angshuman Agarwal

@AngshumanAgarwal使用实验性功能(docs.docker.com/docker-for-windows/#command-line)添加驱动程序(github.com/docker/cli/blob/master/experimental/…),可能需要使用Docker视窗。
VonC

我明白了,谢谢你。但是,我仍然看到Windows 10的问题。Doc说Docker本机运行,但是似乎并非如此。我必须在Windows 10上切换到“ Linux容器”才能正常工作。
Angshuman Agarwal

2

我在Azure DevOps管道中遇到此错误。

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

问题是我选择了Hosted VS2017而不是Hosted Ubuntu。进行如下更改后,构建成功。

在此处输入图片说明

希望能帮助到你。



2

右键单击Docker实例,转到Settings Daemon Advanced设置“实验”:true重新启动Docker

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

2

弃用“最新”标签

我们不建议在所有Windows基本映像中使用“最新”标签,以鼓励更好的容器实践。 在2019日历年开始时,我们将不再发布代码  ;我们将从可用的标签列表中提取它。

我们强烈建议您声明要在生产中运行的特定容器标签。“最新”标签与specific相反。它没有告诉用户有关容器实际使用的版本(映像名称除外)的任何信息。您可以在容器文档中阅读有关版本兼容性和选择适当标签的更多信息。

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


1

我在使用适用于Windows的docker运行Windows IIS映像时遇到了相同的问题。阅读上面的Mohammad Trabelsi响应后,我意识到要解决我的问题,我需要在Windows容器上切换我的容器(在docker上)。

去做这个:

  1. 右键单击Docker实例
  2. 选择“切换到Windows容器...”

1

在Windows上,您必须编辑daemon.json或Windows-daemon-options.json文件,Windows上配置文件的默认位置为%programdata%\ docker \ config \ daemon.json或%programdata%\ docker \ resources \ windows -daemon-options.json

在此处输入图片说明 在此处输入图片说明

在此处输入图片说明

在此处输入图片说明

json文件上的可选字段功能允许用户启用或禁用特定的守护程序功能。示例:{“ features”:{“ buildkit”:true}}启用buildkit作为默认的Docker映像生成器。


0

之所以显示此消息,是因为它找不到正在运行的Linux容器。因此,在运行它之前,请确保从Windows切换到linux容器。


0

对我而言,这是因为拒绝访问C:\ ProgramData \ Docker \ config \ daemon.json。您可以尝试切换到Linux容器,然后再切换回。如果切换没有问题,则可以使用访问权限。


0

就我而言 ,此问题消失后,我必须先更新Windows

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.