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?


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

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


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.


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)


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ó


¡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í



6

Resolví esto en Windows 10 ejecutando en admin Powershell:

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

Y entonces:

./DockerCli.exe -SwitchDaemon

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.


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


3

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

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


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.



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
    }

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#


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 ..."

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.


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.


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.


0

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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.