我在Windows上使用Docker,当我尝试使用此命令拉取PHP图像时
$ docker pull php
Run Code Online (Sandbox Code Playgroud)
我收到了这条消息:
Using default tag: latest
latest: Pulling from library/php no matching manifest for windows/amd64
in the manifest list entries
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题?
ben*_*bia 118
我在Windows 10上遇到了同样的问题.我通过在实验模式下运行Docker守护程序来绕过它:
"experimental": truetom*_*mab 28
另一种可能的方法:
在系统托盘中,右键单击docker图标,然后单击Switch to Linux containers.
(Docker for Windows,Community Edition,版本18.03.1)
Imr*_*ved 27
可能有许多原因导致此错误。但是,此错误的最明显原因是在Linux容器模式下使用Windows容器,反之亦然。
小智 19
我通过在管理员 Powershell 中运行在 Windows 10 中解决了这个问题:
cd "C:\Program Files\Docker\Docker"
Run Code Online (Sandbox Code Playgroud)
进而:
./DockerCli.exe -SwitchDaemon
Run Code Online (Sandbox Code Playgroud)
joe*_*ons 17
就我而言,原因是我所在的Windows操作系统版本不支持我尝试提取的标签。使用较旧的标签使我可以使用它。
特别:
docker pull mcr.microsoft.com/windows/nanoserver:1903 错误的
docker pull mcr.microsoft.com/windows/nanoserver:1803-amd64 工作了
您需要先使用Linux平台,然后才能在Windows上运行:
docker pull --platform linux php
docker run -it php
Run Code Online (Sandbox Code Playgroud)
请参阅博客文章Docker for Windows Desktop 18.02 with Windows 10 Fall Creators Update.
我升级 Docker Desktop(之前配置了 WSL2 集成)后就发生了这种情况。
如果您在升级后遇到此问题,仅供参考,我必须执行以下操作:
在管理员(提升)模式下运行 PowerShell 并执行以下命令:
cd "C:\Program Files\Docker\Docker"
./DockerCli.exe -SwitchDaemon
Run Code Online (Sandbox Code Playgroud)
如果不这样做,您可能无法打开 Docker Desktop 上的“设置”选项卡。
然后,您需要在“设置”中切换到 Linux 容器(通过取消选中“使用基于 WSL2 的引擎”),然后重新启动。
此时,只需运行一个快速测试,下载一个映像并在其上运行一个容器,看看是否可以解决问题:
docker run --rm -ti alpine:latest uname -a
Linux 2b08b155a042 5.4.72-microsoft-standard-WSL2 #1 SMP Wed Oct 28 23:40:43 UTC 2020 x86_64 Linux
Run Code Online (Sandbox Code Playgroud)
从那里,如果您正在运行 WSL2 集成,只需返回到“设置”屏幕并撤消我们在第二步中所做的选择(这将重新启动 docker。)
此时,您将看到升级之前拥有的所有映像和已停止的容器。
小智 5
docker run mcr.microsoft.com/windows/servercore:ltsc2016
Run Code Online (Sandbox Code Playgroud)
尝试上面的命令。您所提取的内容应该与您所在的底层 Windows 版本兼容。如果您使用的是 Windows Server 2016,则上述内容将有效。
请关注此主题以获取更多信息
小智 5
右键单击 Docker 实例 转到 Settings Daemon Advanced 设置“experimental”: true 重新启动 Docker
{
"registry-mirrors": [],
"insecure-registries": [],
"debug": true,
"experimental": true
}
Run Code Online (Sandbox Code Playgroud)
"experimental": false为"experimental": trueApply & Restart按钮重新启动 Docker您还可以通过使用您喜欢的代码编辑器(Visual code, 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 Copy-Item -Path C:\ProgramData\Docker\config\daemon.json
Run Code Online (Sandbox Code Playgroud)
或者直接用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
Run Code Online (Sandbox Code Playgroud)
输出示例
PS C:\WINDOWS\system32> type $FILE
{
"registry-mirrors": [],
"insecure-registries": [],
"debug": false,
"experimental": true
}
Run Code Online (Sandbox Code Playgroud)
在您需要重新启动 Docker 守护进程后
PS C:\WINDOWS\system32> Restart-Service docker
Run Code Online (Sandbox Code Playgroud)
检查服务状态
PS C:\WINDOWS\system32> Get-Service docker
Status Name DisplayName
------ ---- -----------
Running docker Docker Engine
Run Code Online (Sandbox Code Playgroud)
小智 5
我在开始学习docker的时候就遇到过这个错误,我对这个场景的理解如下:
为什么你遇到这个问题: 因为你指的是基于Linux的镜像,并且你当前正在使用Windows基础平台来运行/构建docker镜像。
解决方案:简短的回答:要么将当前平台切换到 Linux 模式,要么提取基于 Windows 的映像。以下是可能的选项列表:
| 归档时间: |
|
| 查看次数: |
97495 次 |
| 最近记录: |