我在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的吗? 如果不是,则需要运行Linux容器。

如果不使用实验模式,你只能在一种容器风格中使用Docker。 如果您像上面提到的那样激活实验模式,那么您可以根据在撰写文件中拉入的应用程序的需要使用Windows和Linux容器。

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

其他回答

在我升级Docker Desktop(之前配置了WSL2集成)后,我就遇到了这种情况。

如果你在升级后遇到这种情况,仅供参考,我必须做以下工作:

以管理员(提升)模式运行PowerShell,执行如下命令:

cd "C:\Program Files\Docker\Docker"
./DockerCli.exe -SwitchDaemon

如果你不这样做,你可能无法打开Docker Desktop上的Settings选项卡。

然后,您需要在设置中切换到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

从那里,如果您正在运行WSL2集成,只需返回到Settings屏幕并撤消我们在第2步中所做的选择(这将重新启动docker)。

此时,您将看到升级之前的所有映像和停止的容器。

对我来说,这是因为C:\ProgramData\Docker\config\daemon.json被拒绝访问 我把它修好了,现在可以用了。 您可以尝试切换到Linux容器,然后再切换回来。如果切换没有问题,那么它与访问权限一起工作。

版本:Windows 10

步骤1:右键单击Docker实例并进入设置

步骤2:基本到高级,并设置“实验”:true

步骤3:重启Docker

步骤4:安装dockerfile成功(例如:docker build -t williehao/cheers2019)

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

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

然后:

./DockerCli.exe -SwitchDaemon

我有同样的问题运行Windows IIS映像使用docker for Windows。读了上面Mohammad Trabelsi的回复,我意识到要解决我的问题,我需要把我的容器(在docker上)切换到Windows容器。

这样做:

右击Docker实例 选择“切换到Windows容器…”