Docker: "aucun manifeste correspondant pour Windows / amd64 dans les entrées de la liste des manifestes"

152

J'utilise Docker sous Windows, et quand j'ai essayé de tirer une image PHP avec cette commande

$ docker pull php

J'ai reçu ce message:

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

Comment puis-je résoudre ce problème?

Mohammad.Trabelsi
la source
5
Pour aider les autres, je me suis retrouvé dans cette erreur lors de la création d'une image pour Linux en tant que système d'exploitation de base .... La raison de cette erreur était qu'elle avait été définie pour les conteneurs Windows, alors je suis passé aux conteneurs Linux puis cela a commencé à fonctionner ...
Abhishek Jain
Aussi, pour la postérité: j'ai construit un conteneur Windows. Même si je suis passé à Windows, il semble être revenu à Linux. Le retour à Windows a résolu le problème.
John MacIntyre

Réponses:

217

J'ai eu ce même problème sous Windows 10. Je l'ai contourné en exécutant le démon Docker en mode expérimental:

  1. Cliquez avec le bouton droit sur l'icône Docker dans la barre d'état système de Windows
  2. Allez dans les paramètres
  3. Démon
  4. Avancée
  5. Met le "experimental": true
  6. Redémarrez Docker
benscabbia
la source
6
Comment faire un clic droit sur l'instance Docker? Est-ce l'icône Docker dans la barre des tâches de Windows?
Peter Mortensen
2
@PeterMortensen c'est vrai, c'est l'icône Docker dans la barre des tâches
benscabbia
Outre les réponses précédentes, j'ai également dû supprimer l'attribut "lecture seule" de mon C: \ WINDOWS \ System32 \ drivers \ etc \ hosts.etc
Thiago Custodio
3
Sous Windows, vous pouvez localiser le fichier de configuration directement dans '% programdata% \ docker \ config \ daemon.json' et y définir les attributs.
NemyaNation
1
Si vous exécutez ancré (démon) à partir de la --experimentalfonctionnalité d' utilisation binaire autonome
Anwar
92

Il peut y avoir plusieurs raisons à cette erreur. Mais la raison la plus évidente de cette erreur est l'utilisation du conteneur Windows en mode conteneur Linux ou vice versa.

  1. Cliquez sur l'icône Docker dans la barre d'état système dans le menu contextuel
  2. Cliquez sur "Passer à la fenêtre / conteneur Linux"
  3. Option Cliquez sur le bouton Switch dans la boîte de dialogue Switch
  4. Cela peut prendre peu de temps
  5. Assurez-vous que Docker est en cours d'exécution maintenant

Boîte de dialogue Changer de mode conteneur

Imran Javed
la source
3
Il a résolu mon problème concernant "aucun manifeste correspondant pour windows / amd64"
winlinux
1
vous devriez répondre à cette question stackoverflow.com/questions/56005151/…
xpto
1
Cela a fonctionné pour moi avec le problème `` pas de manifeste correspondant pour windows / amd64 10.0.17134 dans les entrées de la liste du manifeste ''
Amna
Cette réponse n'est pas pertinente pour Windows Container. Cela ne fonctionne que si votre exigence de conteneur est Linux Container. Veuillez vous référer à la réponse de @ benscabbia.
junnyea il y a
86

Vous êtes en mode conteneur Windows. Donc, si vous n'êtes pas sûr que l'image que vous souhaitez extraire soit conçue pour l'architecture Windows , vous devez passer aux conteneurs Linux.

Ahmad Hassan
la source
1
L'alternative (que j'ai également trouvée fonctionner) est dans la réponse de Chuck
Peter Mortensen
3
Cela a résolu le problème. J'utilisais la plate-forme Windows 10.
somnathchakrabarti
une fois qu'il ne parvient pas à changer? c'est un moyen de contourner
Tiago Medici
1
Si vous passez aux conteneurs Linux, pourrez-vous alors héberger des applications Windows dans Docker? Par exemple, en utilisant IIS et MySQL sur la même instance Docker.
webworm
@webworm puisqu'il y a aussi MySQL pour Windows, pourquoi utiliser une version Linux quand on veut la mélanger avec IIS et pas seulement utiliser sa version Windows?
George Birbilis le
35

Une autre façon possible de faire ceci:

Dans la barre d'état système, faites un clic droit sur l'icône du docker, puis cliquez sur Switch to Linux containers.

(Docker pour Windows, Community Edition, version 18.03.1)

Tomab
la source
30

Dans mon cas, c'était que la version du système d'exploitation Windows sur laquelle j'étais ne supportait pas la balise que j'essayais d'extraire. L'utilisation d'une ancienne balise m'a permis de faire fonctionner cela.

Plus précisément:

docker pull mcr.microsoft.com/windows/nanoserver:1903 erroné

docker pull mcr.microsoft.com/windows/nanoserver:1803-amd64 travaillé

joedragons
la source
Ce! Microsoft y a changé quelque chose par rapport aux anciennes images (servercore / nanoserver). Maintenant, vous devez rechercher la version Windows du système pour lequel vous déployez et choisir l'image de base en conséquence.
JustCoding
1
Merci beaucoup Joedragons!
rishi jain
Bonne réponse! Cela a fonctionné pour moi sur Windows 10 en suivant ce didacticiel docs.microsoft.com/en-us/virtualization/windowscontainers
...
Cela a également fonctionné pour moi. Mais cela signifie-t-il que j'ai besoin d'avoir cette approche lorsque je tire chaque image, par exemple bonjour-monde?
Mandroid
@Mandroid Je serais intéressé par vos résultats, mais certaines images semblaient fonctionner et d'autres pas dans mon cas, alors je suppose que c'est très spécifique à la configuration. par exemple, si vous avez un correctif Windows peut être différent d'un autre.
joedragons le
21

Version: Windows 10

Étape 1: Faites un clic droit sur l'instance Docker et accédez aux paramètres
entrez la description de l'image ici

Étape 2: De base à avancé et définition de "expérimental": true entrez la description de l'image ici

Étape 3: Redémarrez Docker
entrez la description de l'image ici

Étape 4: L'installation du fichier dockerfile est réussie (ex: docker build -t williehao / cheers2019.) entrez la description de l'image ici

Willie Cheng
la source
11

Vous devez d'abord tirer avec la plate-forme Linux, puis vous pouvez exécuter sur Windows:

docker pull --platform linux php
docker run -it php

Voir l'article de blog Docker pour Windows Desktop 18.02 avec Windows 10 Fall Creators Update .

mandrin
la source
Oui, le --platformdrapeau fonctionne aussi. Bien qu'il puisse retélécharger des choses.
Peter Mortensen
"--platform" n'est pris en charge que sur un démon Docker avec des fonctionnalités expérimentales activées
Michal Špondr
6

J'ai résolu cela dans Windows 10 en exécutant dans admin Powershell:

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

Puis:

./DockerCli.exe -SwitchDaemon
Jared Zena
la source
3

Considérez les applications que vous tirez - sont-elles basées sur Windows? Sinon, vous devez exécuter un conteneur Linux.

Sans utiliser le mode expérimental, vous ne pouvez utiliser Docker que dans un style de conteneur par rapport à l'autre. Si vous activez le mode expérimental comme mentionné ci-dessus, vous pouvez utiliser les conteneurs Windows et Linux comme requis par les applications que vous extrayez dans le fichier de composition.

Note clé: expérimental - toujours en développement par Docker.

Connor
la source
3

Cela peut ne pas se produire uniquement à cause des conteneurs Windows!

Aujourd'hui, toutes les images du docker Node.Js ne peuvent pas être extraites. Vérifiez toujours l'image que vous essayez de tirer avant.

Problème Github associé

FabianTe
la source
3

Cela ressemble à un échec de "l'extraction de docker" dans Windows 10 # 1100

Si l'ajout --experimentalne fonctionne pas, envisagez de réinstaller Docker pour Windows .

VonC
la source
L'ajout de "experimental: true" n'a pas fonctionné pour moi, alors j'ai pensé que j'essaierais de passer au conteneur Linux avant de réinstaller docker et cela a fonctionné.
yogescicak
Dans l'environnement Windows, vérifiez également si le service de gestion de la machine virtuelle Hyper-V est en cours d'exécution, puis après l'installation du docker, basculez-le en mode conteneurs Linux.
Junior Mayhé
Ajout d' experimentalœuvres, merci ... Pourquoi en est-il ainsi?
Angshuman Agarwal le
@AngshumanAgarwal L'utilisation de fonctionnalités expérimentales ( docs.docker.com/docker-for-windows/#command-line ) ajoute des pilotes ( github.com/docker/cli/blob/master/experimental/… ) qui peuvent être nécessaires pour utiliser Docker pour Les fenêtres.
VonC le
Je vois, merci pour cela. Mais, je vois toujours des problèmes avec Windows 10. Doc dit que Docker fonctionne de manière native, mais cela ne semble pas. J'ai dû passer aux "conteneurs Linux" sur Windows 10 pour que les choses fonctionnent.
Angshuman Agarwal le
2

J'obtenais cette erreur dans mon pipeline 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

Le problème était que j'avais sélectionné Hosted VS2017 au lieu de Hosted Ubuntu . Après avoir changé la même chose comme suit, la génération a réussi.

entrez la description de l'image ici

J'espère que ça aide.

Sibeesh Venu
la source
2

docker exécuter mcr.microsoft.com/windows/servercore:ltsc2016

essayez la commande ci-dessus. ce que vous tirez doit être compatible avec la version de Windows sous-jacente dans laquelle vous vous trouvez. ci-dessus fonctionnera si vous êtes dans Windows Server 2016.

suivez ce fil pour plus d'informations

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

Sithija Piyuman Thewa Hettige
la source
2

Faites un clic droit sur l'instance Docker Allez dans Paramètres Daemon Avancé Définissez le paramètre "expérimental": true Redémarrez Docker

 {
      "registry-mirrors": [],
      "insecure-registries": [],
      "debug": true,
      "experimental": true
    }
harun ugur
la source
2

Abandon de la balise "la plus récente"

Nous abandonnons la balise «la plus récente» dans toutes nos images de base Windows pour encourager de meilleures pratiques de conteneur. Au début de l'année civile 2019, nous ne publierons plus le tag  ; Nous allons le retirer de la liste des balises disponibles.

Nous vous encourageons vivement à plutôt déclarer la balise conteneur spécifique que vous souhaitez exécuter en production. La balise «dernière» est l'opposé de spécifique; il ne dit rien à l'utilisateur sur la version du conteneur en dehors du nom de l'image. Vous pouvez en savoir plus sur la compatibilité des versions et la sélection de la balise appropriée dans nos documents sur les conteneurs .

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

Eltomon
la source
1

J'ai eu le même problème pour exécuter l'image Windows IIS à l'aide de docker pour Windows. En lisant la réponse de Mohammad Trabelsi ci-dessus, j'ai réalisé que pour résoudre mon problème, je devais changer mes conteneurs (sur docker) pour des conteneurs Windows.

Pour faire ça:

  1. Cliquez avec le bouton droit sur l'instance Docker
  2. Sélectionnez "Passer aux conteneurs Windows ..."
Filipe Luchini
la source
1

Sous Windows, vous devez éditer le fichier daemon.json ou windows-daemon-options.json, l'emplacement par défaut du fichier de configuration sous Windows est% programdata% \ docker \ config \ daemon.json ou% programdata% \ docker \ resources \ windows -daemon-options.json

entrez la description de l'image ici entrez la description de l'image ici

entrez la description de l'image ici

entrez la description de l'image ici

Les fonctionnalités de champ facultatives du fichier json permettent aux utilisateurs d'activer ou de désactiver des fonctionnalités de démon spécifiques. Exemple: {"features": {"buildkit": true}} active le buildkit en tant que générateur d'image Docker par défaut.

Tiago Medici
la source
0

La raison pour laquelle il affiche ce message parce qu'il ne parvient pas à trouver les conteneurs Linux en cours d'exécution. Alors, assurez-vous de passer de Windows aux conteneurs Linux avant de l'exécuter.

Udit Gandhi
la source
0

Pour moi, c'est à cause de l'accès refusé à C: \ ProgramData \ Docker \ config \ daemon.json Après avoir corrigé cela, cela fonctionne. Vous pouvez essayer de basculer vers des conteneurs Linux et revenir en arrière. S'il n'y a pas de problème avec la commutation, cela fonctionne avec l'autorisation d'accès.

GoYun.Info
la source
0

Dans mon cas, j'ai d'abord dû mettre à jour Windows , après quoi le problème a disparu.

Légendes
la source