我在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

我该如何解决这个问题?


当前回答

更新为Windows 10 20H2

转到Docker配置 进入Docker Engine选项卡 将行“experimental”:false更改为“experimental”:true 使用应用&重启按钮重新启动Docker


你也可以手动修改配置文件,用你最喜欢的代码编辑器打开它(可视代码,notepad++…),例如:

# BACKUP Your file with PowerShell
Copy-Item -Path C:\ProgramData\Docker\config\daemon.json -Destination C:\ProgramData\Docker\config\daemon.json.backup

# Open the file with Visual Code
code C:\ProgramData\Docker\config\daemon.json

或者直接用Powershell更改字符串

# Set Path in variable
$FILE = "C:\ProgramData\Docker\config\daemon.json"

# Replace '"experimental": false' to '"experimental": true'
(Get-Content -Path $FILE) -replace '"experimental": false','"experimental": true' | Set-Content -Path $FILE

# Check the file content
type $FILE

输出示例

PS C:\WINDOWS\system32> type $FILE
{
  "registry-mirrors": [],
  "insecure-registries": [],
  "debug": false,
  "experimental": true
}

在您需要重新启动Docker守护进程后

PS C:\WINDOWS\system32> Restart-Service docker

检查服务状态

PS C:\WINDOWS\system32> Get-Service docker
Status   Name               DisplayName
------   ----               -----------
Running  docker             Docker Engine

其他回答

造成这个错误的原因可能有很多。但是导致这个错误最明显的原因是在Linux容器模式下使用Windows容器,反之亦然。

单击上下文菜单中的系统托盘中的Docker图标 点击“切换到Window/Linux容器” 选项单击“切换对话框”中的“切换按钮” 这可能花不了多少时间 确保Docker现在处于运行状态

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

右键单击Windows系统托盘中的Docker图标 进入设置 守护进程 先进的 设置“experimental”:true 重启码头工人

在我的情况下,我必须先更新窗口,然后问题就消失了。

另一种可能的方法是:

在系统托盘中,右键单击docker图标,然后单击切换到Linux容器。

(Docker for Windows, Community Edition, version 18.03.1)

以我为例,我使用的Windows操作系统版本不支持我试图拉出的标签。利用一个旧的标签让我可以让它工作。

具体地说:

Docker pull McR.microsoft.com/windows/nanoserver:1903错误

Docker拉McR.microsoft.com/windows/nanoserver:1803-amd64工作