Docker: "no hay manifiesto coincidente para windows / amd64 en las entradas de la lista de manifiestos"

151

Uso Docker en Windows, y cuando intenté extraer una imagen PHP con este comando

$ docker pull php

Recibí este mensaje:

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

¿Como puedo solucionar este problema?

Mohammad.Trabelsi
fuente
55
Para ayudar a otros, me metí en este error al crear una imagen para Linux como sistema operativo base ... La razón de este error fue que se configuró para contenedores de Windows, así que cambié a contenedores de Linux y comenzó a funcionar ...
Abhishek Jain
Además, para la posteridad: obtuve esto construyendo un contenedor de Windows. Aunque cambié a Windows, parece haber vuelto a Linux. Cambiarlo de nuevo a Windows solucionó el problema.
John MacIntyre

Respuestas:

214

Tuve este mismo problema en Windows 10. Lo evité ejecutando el demonio Docker en modo experimental:

  1. Haga clic con el botón derecho en el icono de Docker en la bandeja del sistema de Windows
  2. Ir a Configuraciones
  3. Demonio
  4. Avanzado
  5. Selecciona el "experimental": true
  6. Reiniciar Docker
benscabbia
fuente
66
¿Cómo haces clic derecho en la instancia de Docker? ¿Es el icono de Docker en la barra de tareas de Windows?
Peter Mortensen
2
@PeterMortensen es cierto, es el icono de Docker en la barra de tareas
benscabbia
Además de las respuestas anteriores, también tuve que eliminar el atributo "solo lectura" de mi C: \ WINDOWS \ System32 \ drivers \ etc \ hosts.etc
Thiago Custodio
3
En Windows, puede ubicar el archivo de configuración directamente en '% programdata% \ docker \ config \ daemon.json' y establecer los atributos allí.
NemyaNation
1
Si está ejecutando acoplado (daemon) desde la --experimentalfunción de uso binario independiente
Anwar
91

Podría haber muchas razones para este error. Pero la razón más obvia para este error es usar el Contenedor de Windows en el Modo Contenedor de Linux o viceversa.

  1. Haga clic en el icono de Docker en la bandeja del sistema en el menú contextual
  2. Haga clic en "Cambiar a Windows / Contenedor de Linux"
  3. Opción Haga clic en el botón Cambiar en el cuadro de diálogo Cambiar
  4. Puede tomar poco tiempo
  5. Asegúrese de que Docker esté ejecutando el estado ahora

Cuadro de diálogo Cambiar modo de contenedor

Imran Javed
fuente
3
Resolvió mi problema sobre "no hay manifiesto de coincidencia para windows / amd64"
winlinux
1
debe responder esta pregunta stackoverflow.com/questions/56005151/…
xpto
1
Me funcionó con el problema 'no hay manifiesto coincidente para windows / amd64 10.0.17134 en las entradas de la lista de manifiestos'
Amna
86

Estás en modo contenedor de Windows. Por lo tanto, si no está seguro de que la imagen que desea extraer está construida para la arquitectura de Windows , debe cambiar a contenedores Linux.

Ahmad Hassan
fuente
1
La alternativa (que también descubrí que funciona) está en la respuesta de Chuck
Peter Mortensen el
3
Esto resolvió el problema. Estaba usando la plataforma Windows 10.
somnathchakrabarti
una vez que falla al cambiar? es un trabajo
alternativo
1
Si cambia a Contenedores Linux, ¿podrá alojar aplicaciones de Windows en Docker? Por ejemplo, usando IIS y MySQL en la misma instancia de Docker.
gusano web
@webworm ya que también hay MySQL para Windows, ¿por qué usar una versión de Linux cuando quieres mezclarla con IIS y no solo usar su versión de Windows?
George Birbilis
35

Otra posible forma de hacer esto:

En la bandeja del sistema, haga clic derecho en el icono de la ventana acoplable, luego haga clic en Switch to Linux containers.

(Docker para Windows, Community Edition, versión 18.03.1)

tomab
fuente
30

En mi caso, era que la versión del sistema operativo Windows en la que estaba no era compatible con la etiqueta que estaba tratando de extraer. El uso de una etiqueta anterior me permitió hacer que esto funcionara.

Específicamente:

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

docker pull mcr.microsoft.com/windows/nanoserver:1803-amd64 trabajó

joedragons
fuente
¡Esta! Microsoft cambió allí algo en comparación con las imágenes antiguas (servercore / nanoserver). Ahora, debe buscar la versión de Windows del sistema para el que se está implementando y elegir la imagen base en consecuencia.
JustCoding
1
Muchas gracias Joedragons!
Rishi Jain
¡Buena respuesta! Esto funcionó para mí en Windows 10 después de este tutorial docs.microsoft.com/en-us/virtualization/windowscontainers/…
user1299379
También me funcionó. Pero, ¿significa que necesito tener este enfoque cuando saco todas las imágenes, por ejemplo, hello-world?
Mandroid
@Mandroid Me interesarían sus hallazgos, pero algunas imágenes parecían funcionar y otras no en mi caso, por lo que supongo que es muy específico de la configuración. por ejemplo, si tiene un parche de Windows puede variar de otro.
joedragons
21

Versión: Windows 10

Paso 1: haga clic con el botón derecho en la instancia de Docker y vaya a Configuración
ingrese la descripción de la imagen aquí

Paso 2: Básico a Avanzado y establecer el "experimental": verdadero ingrese la descripción de la imagen aquí

Paso 3: reinicia Docker
ingrese la descripción de la imagen aquí

Paso 4: la instalación de dockerfile se realizó correctamente (por ejemplo, docker build -t williehao / cheers2019). ingrese la descripción de la imagen aquí

Willie Cheng
fuente
11

Primero debe usar la plataforma Linux, luego puede ejecutar en Windows:

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

Consulte la publicación de blog Docker para Windows Desktop 18.02 con Windows 10 Fall Creators Update .

arrojar
fuente
Sí, la --platformbandera también funciona. Aunque puede volver a descargar cosas.
Peter Mortensen
"--platform" solo se admite en un demonio Docker con funciones experimentales habilitadas
Michal Špondr
6

Resolví esto en Windows 10 ejecutando en admin Powershell:

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

Y entonces:

./DockerCli.exe -SwitchDaemon
Jared Zena
fuente
3

Considere las aplicaciones que está utilizando: ¿están basadas en Windows? Si no, necesita ejecutar un contenedor de Linux.

Sin usar el modo experimental, solo puede usar Docker en un estilo de contenedor frente al otro. Si activa el modo experimental como se mencionó anteriormente, puede usar contenedores de Windows y Linux según lo requieran las aplicaciones que está extrayendo en el archivo de redacción.

Nota clave: Experimental, todavía en desarrollo por Docker.

Connor
fuente
3

¡Esto puede no solo suceder debido a los contenedores de Windows!

Hoy en día, todas las imágenes del acoplador de Node.Js no son extraíbles. Siempre verifique la imagen que está intentando obtener antes.

Github-Issue relacionado

FabianTe
fuente
3

Esto parece que "docker pull" falla en Windows 10 # 1100

Si agregar --experimentalno funciona, considere reinstalar la ventana acoplable para Windows .

VonC
fuente
Agregar "experimental: verdadero" no funcionó para mí, así que pensé en intentar cambiar al contenedor de Linux antes de volver a instalar la ventana acoplable y funcionó.
yogescicak
En el entorno de Windows, compruebe también si se está ejecutando el servicio Hyper-V Virtual Machine Management, luego, después de instalar la ventana acoplable, cámbielo al modo de contenedores de Linux.
Junior Mayhé
Añadiendo experimentalobras, gracias ... ¿Por qué es así?
Angshuman Agarwal
@AngshumanAgarwal El uso de funciones experimentales ( docs.docker.com/docker-for-windows/#command-line ) agrega controladores ( github.com/docker/cli/blob/master/experimental/… ) que podrían ser necesarios para usar Docker para Windows
VonC
Ya veo, gracias por eso. Pero, todavía veo problemas con Windows 10. Doc dice que Docker se ejecuta de forma nativa, pero no lo parece. Tuve que cambiar a "contenedores de Linux" en Windows 10 para que las cosas funcionen.
Angshuman Agarwal
2

Recibía este error en mi canalización de 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

El problema era que había seleccionado el Hosted VS2017 en lugar del Hosted Ubuntu . Después de cambiar lo mismo de la siguiente manera, la compilación fue exitosa.

ingrese la descripción de la imagen aquí

Espero eso ayude.

Sibeesh Venu
fuente
2

Docker ejecute mcr.microsoft.com/windows/servercore:ltsc2016

Pruebe el comando anterior. lo que está tirando debe ser compatible con la versión subyacente de Windows en la que se encuentra. Lo anterior funcionará si está en Windows Server 2016.

sigue este hilo para más información

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

Sithija Piyuman Thewa Hettige
fuente
2

Haga clic con el botón derecho en la instancia de Docker. Vaya a Configuración Daemon Advanced. Configure "experimental": verdadero. Reinicie Docker.

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

Despreciando la etiqueta 'más reciente'

Estamos desaprobando la etiqueta 'más reciente' en todas nuestras imágenes base de Windows para fomentar mejores prácticas de contenedor. Al comienzo del año calendario 2019, ya no publicaremos la etiqueta  ; Lo sacaremos de la lista de etiquetas disponibles.

Estamos firmemente animamos a que declare en su lugar la etiqueta de contenedor específico desea ejecutar en la producción. La etiqueta 'más reciente' es lo opuesto a específica; no le dice nada al usuario sobre qué versión es el contenedor realmente aparte del nombre de la imagen. Puede leer más sobre la compatibilidad de versiones y seleccionar la etiqueta adecuada en nuestros documentos de contenedor .

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

Eltomon
fuente
1

Tuve el mismo problema para ejecutar la imagen de Windows IIS con Docker para Windows. Al leer la respuesta de Mohammad Trabelsi anterior, me di cuenta de que para resolver mi problema necesitaba cambiar mis contenedores (en la ventana acoplable) por contenedores de Windows.

Para hacer esto:

  1. Haga clic derecho en la instancia de Docker
  2. Seleccione "Cambiar a contenedores de Windows ..."
Filipe Luchini
fuente
1

En Windows debe editar el archivo daemon.json o windows-daemon-options.json, la ubicación predeterminada del archivo de configuración en Windows es% programdata% \ docker \ config \ daemon.json o% programdata% \ docker \ resources \ windows -daemon-options.json

ingrese la descripción de la imagen aquí ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

Las características de campo opcionales en el archivo json permiten a los usuarios habilitar o deshabilitar características específicas del demonio. Ejemplo: {"features": {"buildkit": true}} habilita buildkit como el generador de imágenes de acoplador predeterminado.

Tiago Medici
fuente
0

La razón por la que muestra este mensaje es porque no puede encontrar contenedores de Linux como en ejecución. Por lo tanto, asegúrese de cambiar de Windows a contenedores de Linux antes de ejecutarlo.

Udit Gandhi
fuente
0

Para mí, es debido al acceso denegado a C: \ ProgramData \ Docker \ config \ daemon.json Después de que lo arreglé ahora funciona. Puede intentar cambiar a contenedores Linux y volver a cambiar. Si no hay ningún problema con el cambio, entonces funciona con el permiso de acceso.

GoYun.Info
fuente
0

En mi caso , primero tuve que actualizar Windows , después de eso el problema desapareció.

Leyendas
fuente