Docker: "Kein übereinstimmendes Manifest für Windows / AMD64 in den Manifestlisteneinträgen"


150

Ich verwende Docker unter Windows und als ich versuchte, ein PHP-Image mit diesem Befehl abzurufen

$ docker pull php

Ich habe diese Nachricht erhalten:

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

Wie kann ich dieses Problem beheben?


5
Um anderen zu helfen, bin ich auf diesen Fehler gestoßen, als ich ein Image für Linux als Basisbetriebssystem erstellt habe. Der Grund für diesen Fehler war, dass er für Windows-Container festgelegt wurde. Also habe ich zu Linux-Containern gewechselt und es hat angefangen zu funktionieren ...
Abhishek Jain

Auch für die Nachwelt: Ich habe dieses Gebäude einen Windows-Container bauen lassen. Obwohl ich zu Windows gewechselt bin, scheint es wieder zu Linux gewechselt zu sein. Durch Zurücksetzen auf Windows wurde das Problem behoben.
John MacIntyre

Antworten:


213

Ich hatte das gleiche Problem unter Windows 10. Ich habe es umgangen, indem ich den Docker-Dämon im experimentellen Modus ausgeführt habe:

  1. Klicken Sie mit der rechten Maustaste auf das Docker-Symbol in der Windows-Taskleiste
  2. Gehen Sie zu Einstellungen
  3. Daemon
  4. Fortgeschrittene
  5. Stellen Sie die "experimental": true
  6. Starten Sie Docker neu

6
Wie klickt man mit der rechten Maustaste auf die Docker-Instanz? Ist es das Docker-Symbol in der Windows-Taskleiste?
Peter Mortensen

2
@ PeterMortensen das ist richtig, es ist das Docker-Symbol in der
Taskleiste

Neben den vorherigen Antworten musste ich auch das "schreibgeschützte" Attribut meines C: \ WINDOWS \ System32 \ drivers \ etc \ hosts.etc
Thiago Custodio

2
Unter Windows können Sie die Konfigurationsdatei direkt unter '% programdata% \ docker \ config \ daemon.json' suchen und dort die Attribute festlegen.
NemyaNation

1
Wenn Sie angedockt (Daemon) von der eigenständigen Binärfunktion --experimentalausführen
Anwar

91

Es kann viele Gründe für diesen Fehler geben. Der offensichtlichste Grund für diesen Fehler ist jedoch die Verwendung von Windows Container im Linux Container-Modus oder umgekehrt.

  1. Klicken Sie im Kontextmenü in der Taskleiste auf das Docker-Symbol
  2. Klicken Sie auf "Zu Windows / Linux-Container wechseln".
  3. Option Klicken Sie im Schaltdialog auf die Schaltfläche "Wechseln"
  4. Es kann wenig Zeit dauern
  5. Stellen Sie sicher, dass Docker jetzt ausgeführt wird

Dialogfeld "Container-Modus wechseln"


3
Es löste mein Problem über "kein passendes Manifest für Windows / AMD64"
Winlinux

1
Sie sollten diese Frage beantworten stackoverflow.com/questions/56005151/…
xpto

1
Es funktionierte für mich mit dem Problem 'kein übereinstimmendes Manifest für Windows / AMD64 10.0.17134 in den Manifestlisteneinträgen'
Amna

85

Sie befinden sich im Windows-Containermodus. Wenn Sie also nicht sicher sind, ob das Image, das Sie abrufen möchten, für die Windows-Architektur erstellt wurde , müssen Sie zu Linux-Containern wechseln.


1
Die Alternative (die ich auch gefunden habe, um zu arbeiten) ist in Chuck Antwort
Peter Mortensen

3
Dies löste das Problem. Ich habe die Windows 10-Plattform verwendet.
Somnathchakrabarti

einmal scheitert es zu wechseln? Es ist eine Umgehungsstraße
Tiago Medici

1
Wenn Sie zu Linux Containers wechseln, können Sie dann Windows-Anwendungen in Docker hosten? Verwenden Sie beispielsweise IIS und MySQL auf derselben Docker-Instanz.
Webworm

@webworm Da es auch MySQL für Windows gibt, warum sollte man eine Linux-Version verwenden, wenn man sie mit IIS mischen möchte und nicht nur die Windows-Version?
George Birbilis

34

Ein anderer möglicher Weg, dies zu tun:

Klicken Sie in der Taskleiste mit der rechten Maustaste auf das Docker-Symbol und dann auf Switch to Linux containers.

(Docker für Windows, Community Edition, Version 18.03.1)


30

In meinem Fall unterstützte die Windows-Version, auf der ich mich befand, das Tag, das ich abrufen wollte, nicht. Durch die Verwendung eines älteren Tags konnte ich dies zum Laufen bringen.

Speziell:

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

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


Dies! Microsoft hat dort etwas im Vergleich zu den alten Images (Servercore / Nanoserver) geändert. Jetzt müssen Sie die Windows-Version des Systems suchen, für das Sie bereitstellen, und das Basisimage entsprechend auswählen.
JustCoding

1
Vielen Dank Joedragons!
Rishi Jain

Gute Antwort! Dies funktionierte für mich unter Windows 10 nach diesem Tutorial docs.microsoft.com/en-us/virtualization/windowscontainers/…
user1299379

Es hat auch bei mir funktioniert. Aber bedeutet das, dass ich diesen Ansatz haben muss, wenn ich jedes Bild ziehe, zum Beispiel Hallo-Welt?
Mandroid

@Mandroid Ich würde mich für Ihre Ergebnisse interessieren, aber einige Bilder schienen zu funktionieren und andere nicht in meinem Fall, daher würde ich vermuten, dass es sehr einrichtungsspezifisch ist. Wenn Sie beispielsweise einen Windows-Patch haben, kann dieser von einem anderen abweichen.
Joedragons

20

Version: Windows 10

Schritt 1: Klicken Sie mit der rechten Maustaste auf die Docker-Instanz und gehen Sie zu Einstellungen
Geben Sie hier die Bildbeschreibung ein

Schritt 2: Basic bis Advanced und Setzen des "experimentellen": true Geben Sie hier die Bildbeschreibung ein

Schritt 3: Starten Sie Docker neu
Geben Sie hier die Bildbeschreibung ein

Schritt 4: Die Installation der Docker-Datei ist erfolgreich (Beispiel: Docker-Build -t Williehao / Cheers2019). Geben Sie hier die Bildbeschreibung ein



6

Ich habe dies in Windows 10 gelöst, indem ich in Admin Powershell ausgeführt habe:

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

Und dann:

./DockerCli.exe -SwitchDaemon

3

Betrachten Sie die Anwendungen, die Sie abrufen - sind sie Windows-basiert? Wenn nicht, müssen Sie einen Linux-Container ausführen.

Ohne den experimentellen Modus können Sie Docker nur in einem Containerstil im Vergleich zum anderen verwenden. Wenn Sie den experimentellen Modus wie oben erwähnt aktivieren, können Sie Windows- und Linux-Container verwenden, wie dies für die Anwendungen erforderlich ist, die Sie in der Erstellungsdatei abrufen.

Key Note: Experimentell - noch in der Entwicklung von Docker.


3

Dies kann nicht nur durch Windows-Container geschehen!

Heute sind nicht alle Docker-Bilder von Node.J abrufbar. Überprüfen Sie immer das Bild, das Sie ziehen möchten.

Verwandte Github-Ausgabe


3

Das sieht so aus "Docker Pull" in Windows 10 # 1100 fehlschlägt

Wenn das Hinzufügen --experimentalnicht funktioniert, sollten Sie Docker für Windows neu installieren .


Das Hinzufügen von "experimentell: wahr" hat bei mir nicht funktioniert, daher dachte ich, ich würde versuchen, zum Linux-Container zu wechseln, bevor ich Docker neu installiere, und es hat funktioniert.
Yogescicak

Überprüfen Sie unter Windows auch, ob der Hyper-V-Verwaltungsdienst für virtuelle Maschinen ausgeführt wird, und wechseln Sie nach der Installation von Docker in den Linux-Containermodus.
Junior Mayhé

Hinzufügen von experimentalWerken, danke ... Warum ist das so?
Angshuman Agarwal

@AngshumanAgarwal Durch die Verwendung experimenteller Funktionen ( docs.docker.com/docker-for-windows/#command-line ) werden Treiber ( github.com/docker/cli/blob/master/experimental/… ) hinzugefügt, die möglicherweise für die Verwendung von Docker für erforderlich sind Windows.
VonC

Ich verstehe, danke dafür. Ich sehe jedoch immer noch Probleme mit Windows 10. Doc sagt, dass Docker nativ ausgeführt wird, aber es scheint nicht so. Ich musste unter Windows 10 zu "Linux-Containern" wechseln, damit alles funktioniert.
Angshuman Agarwal

2

Ich habe diesen Fehler in meiner Azure DevOps-Pipeline erhalten.

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

Das Problem war, dass ich den gehosteten VS2017 anstelle des gehosteten Ubuntu ausgewählt hatte . Nach der folgenden Änderung war der Build erfolgreich.

Geben Sie hier die Bildbeschreibung ein

Ich hoffe es hilft.


2

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

Versuchen Sie den obigen Befehl. Was Sie abrufen, sollte mit der zugrunde liegenden Windows-Version kompatibel sein, in der Sie sich befinden. Die obige Version funktioniert, wenn Sie sich in Windows Server 2016 befinden.

Folgen Sie diesem Thread für weitere Informationen

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


2

Klicken Sie mit der rechten Maustaste auf die Docker-Instanz. Gehen Sie zu Einstellungen Daemon Advanced. Stellen Sie "experimentell" ein: true Starten Sie Docker neu

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

2

Veraltet das 'neueste' Tag

Wir verwerfen das "neueste" Tag in allen Windows-Basisimages, um bessere Container-Praktiken zu fördern. Zu Beginn des Kalenderjahres 2019 werden wir das Tag nicht mehr veröffentlichen  . Wir werden es aus der Liste der verfügbaren Tags ziehen.

Wir empfehlen Ihnen dringend , stattdessen das spezifische Container-Tag zu deklarieren, das Sie in der Produktion ausführen möchten. Das 'neueste' Tag ist das Gegenteil von spezifisch; Es sagt dem Benutzer nichts darüber aus, welche Version der Container tatsächlich ist, abgesehen vom Bildnamen. Weitere Informationen zur Versionskompatibilität und zur Auswahl des entsprechenden Tags finden Sie in unseren Container-Dokumenten .

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


1

Ich hatte das gleiche Problem beim Ausführen eines Windows IIS-Abbilds mit Docker für Windows. Als ich die Antwort von Mohammad Trabelsi oben las, wurde mir klar, dass ich zur Lösung meines Problems meine Container (auf Docker) gegen Windows-Container austauschen musste.

Um dies zu tun:

  1. Klicken Sie mit der rechten Maustaste auf die Docker-Instanz
  2. Wählen Sie "Zu Windows-Containern wechseln ..."

1

Unter Windows müssen Sie die Datei daemon.json oder windows-daemon-options.json bearbeiten. Der Standardspeicherort der Konfigurationsdatei unter Windows ist% programdata% \ docker \ config \ daemon.json oder% programdata% \ docker \ resources \ windows -daemon-options.json

Geben Sie hier die Bildbeschreibung ein Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

Mit den optionalen Feldfunktionen in der JSON-Datei können Benutzer bestimmte Dämonfunktionen aktivieren oder deaktivieren. Beispiel: {"features": {"buildkit": true}} aktiviert buildkit als Standard-Docker-Image-Builder.


0

Der Grund, warum diese Meldung angezeigt wird, weil Linux-Container nicht als ausgeführt gefunden werden können. Stellen Sie daher sicher, dass Sie von Windows zu Linux-Containern wechseln, bevor Sie es ausführen.


0

Für mich liegt es daran, dass der Zugriff auf C: \ ProgramData \ Docker \ config \ daemon.json verweigert wurde. Nachdem ich es jetzt behoben habe, funktioniert es. Sie können versuchen, zu Linux-Containern zu wechseln und zurückzuschalten. Wenn es kein Problem mit der Umschaltung gibt, funktioniert es mit der Zugriffsberechtigung.


0

In meinem Fall musste ich zuerst Windows aktualisieren , danach ist das Problem behoben .

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.