Docker: "nenhum manifesto correspondente para windows / amd64 nas entradas da lista de manifestos"

151

Eu uso o Docker no Windows e quando tentei extrair uma imagem PHP com este comando

$ docker pull php

Eu recebi esta mensagem:

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

Como posso resolver este problema?

Mohammad.Trabelsi
fonte
5
Para ajudar outras pessoas, entrei nesse erro ao criar uma imagem para linux como sistema operacional base .... O motivo desse erro foi que ele foi definido para contêineres do Windows, então mudei para contêineres do Linux e comecei a trabalhar ...
Abhishek Jain
Além disso, para a posteridade: consegui construir um contêiner do Windows. Mesmo que eu tenha mudado para o Windows, ele parece ter voltado para o Linux. Mudar de volta para o Windows corrigiu o problema.
John MacIntyre

Respostas:

214

Eu tive esse mesmo problema no Windows 10. Eu o ignorei executando o daemon do Docker no modo experimental:

  1. Clique com o botão direito do mouse no ícone do Docker na bandeja do sistema do Windows
  2. Vá para Configurações
  3. Daemon
  4. Avançado
  5. Colocou o "experimental": true
  6. Reinicie o Docker
benscabbia
fonte
6
Como você clica com o botão direito do mouse na instância do Docker? É o ícone do Docker na barra de tarefas do Windows?
Peter Mortensen
2
@PeterMortensen É isso mesmo, é o ícone Docker na barra de tarefas
benscabbia
Além das respostas anteriores, também tive que remover o atributo "somente leitura" do meu C: \ WINDOWS \ System32 \ drivers \ etc \ hosts.etc #
Thiago Custodio
3
No Windows, você pode localizar o arquivo de configuração diretamente em '% programdata% \ docker \ config \ daemon.json' e definir os atributos lá.
NemyaNation
1
Se você estiver executando encaixado (daemon) do uso autônomo binário --experimentalrecurso
Anwar
91

Pode haver muitos motivos para esse erro. Mas a razão mais óbvia para esse erro é usar o Windows Container no Linux Container Mode ou vice-versa.

  1. Clique no ícone do Docker na bandeja do sistema no menu de contexto
  2. Clique em "Alternar para o contêiner do Windows / Linux"
  3. Opção Clique no botão Alternar na caixa de diálogo Alternar
  4. Pode demorar um pouco
  5. Verifique se o Docker está executando o estado agora

Caixa de diálogo Alternar modo de contêiner

Imran Javed
fonte
3
Ele resolveu o meu problema sobre "nenhum manifesto correspondente para Windows / amd64"
winlinux
1
você deve responder a esta pergunta stackoverflow.com/questions/56005151/…
xpto 14/10/1919
1
Funcionou para mim com o problema 'nenhum manifesto correspondente para windows / amd64 10.0.17134 nas entradas da lista de manifestos'
Amna
86

Você está no modo de contêiner do Windows. Portanto, se você não tiver certeza de que a imagem que deseja extrair foi criada para a arquitetura do Windows , precisará mudar para os contêineres do Linux.

Ahmad Hassan
fonte
1
A alternativa (que eu também encontrado para ser de trabalho) está na resposta de Chuck
Peter Mortensen
3
Isso resolveu o problema. Eu estava usando a plataforma Windows 10.
somnathchakrabarti
uma vez que falha ao mudar? é uma maneira de contornar o caminho
Tiago Medici
1
Se você mudar para o Linux Containers, poderá hospedar aplicativos do Windows no Docker? Por exemplo, usando o IIS e o MySQL na mesma instância do Docker.
webworm
@webworm, já que também existe o MySQL para Windows, por que usar uma versão Linux quando você deseja misturá-la com o IIS e não apenas usar sua versão do Windows?
George Birbilis
35

Outra maneira possível de fazer isso:

Na bandeja do sistema, clique com o botão direito do mouse no ícone do docker e clique em Switch to Linux containers.

(Docker para Windows, Community Edition, versão 18.03.1)

tomab
fonte
30

No meu caso, a versão do sistema operacional Windows em que eu estava não suportava a tag que eu estava tentando usar. A utilização de uma tag mais antiga permitiu que eu funcionasse.

Especificamente:

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

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

joedragons
fonte
Este! A Microsoft mudou algo em comparação com as imagens antigas (servercore / nanoserver). Agora, você precisa procurar a versão do sistema Windows para a qual está implantando e escolher a imagem base de acordo.
JustCoding
1
Muito obrigado Joedragons!
precisa
Boa resposta! Isso funcionou para mim no Windows 10, seguindo este tutorial docs.microsoft.com/en-us/virtualization/windowscontainers/…
user1299379
Também funcionou para mim. Mas isso significa que eu preciso ter essa abordagem ao extrair todas as imagens, por exemplo, olá, mundo?
Mandroid
@ Mandroid Eu estaria interessado em suas descobertas, mas algumas imagens pareciam funcionar e outras não no meu caso, então acho que é muito específico para a instalação. por exemplo, se você possui um patch do Windows, pode variar de outro.
joedragons 21/04
21

Versão: Windows 10

Etapa 1: Clique com o botão direito do mouse na instância do Docker e vá para Configurações
insira a descrição da imagem aqui

Etapa 2: Básico a Avançado e definindo o "experimental": true insira a descrição da imagem aqui

Etapa 3: reiniciar o Docker
insira a descrição da imagem aqui

Etapa 4: instalar o dockerfile com êxito (ex: docker build -t williehao / cheers2019.) insira a descrição da imagem aqui

Willie Cheng
fonte
11

Você precisa usar a plataforma Linux primeiro e executar no Windows:

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

Consulte a publicação no blog Docker para Windows Desktop 18.02 com a Atualização de criadores de queda do Windows 10 .

mandril
fonte
Sim, a --platformbandeira também funciona. Embora possa baixar novamente o material.
Peter Mortensen
"--platform" é suportado apenas em um daemon Docker com os recursos experimentais ativados
Michal Špondr
6

Resolvi isso no Windows 10 executando o admin Powershell:

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

E depois:

./DockerCli.exe -SwitchDaemon
Jared Zena
fonte
3

Considere os aplicativos que você está puxando - eles são baseados no Windows? Caso contrário, você precisará executar um contêiner Linux.

Sem usar o modo experimental, você pode usar o Docker apenas em um estilo de contêiner versus o outro. Se você ativar o modo experimental, conforme mencionado acima, poderá usar contêineres Windows e Linux conforme exigido pelos aplicativos que você está puxando no arquivo de composição.

Nota-chave: Experimental - ainda em desenvolvimento pela Docker.

Connor
fonte
3

Isso pode não só acontecer devido aos contêineres do Windows!

Hoje, todas as imagens do Docker do Node.Js não podem ser extraídas. Sempre verifique a imagem que você está tentando extrair antes.

Problema no Github relacionado

FabianTe
fonte
3

Parece que "docker pull" falha no windows 10 # 1100

Se a adição --experimentalnão funcionar, considere reinstalar o docker para Windows .

VonC
fonte
Adicionar "experimental: true" não funcionou para mim, então pensei em tentar mudar para o contêiner Linux antes de reinstalar o docker e funcionou.
Yogescicak
No ambiente Windows, verifique também se o serviço Gerenciamento de Máquina Virtual Hyper-V está em execução e depois de instalar a janela de encaixe, mude para o modo de contêineres do Linux.
Junior Mayhé 9/02/19
Adicionando experimentalobras, obrigado ... Por que é isso?
Angshuman Agarwal
@AngshumanAgarwal O uso de recursos experimentais ( docs.docker.com/docker-for-windows/#command-line ) adiciona drivers ( github.com/docker/cli/blob/master/experimental/… ) que podem ser necessários para usar o Docker para Janelas.
VonC 12/04
Entendo, obrigado por isso. Mas ainda vejo problemas no Windows 10. O Doc diz que o Docker é executado de forma nativa, mas parece que não. Eu tive que mudar para "contêineres Linux" no Windows 10 para fazer as coisas funcionarem.
Angshuman Agarwal
2

Eu estava recebendo esse erro no pipeline do 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

O problema foi que eu havia selecionado o VS2017 hospedado em vez do Ubuntu hospedado . Depois de alterar o mesmo a seguir, a compilação foi bem-sucedida.

insira a descrição da imagem aqui

Espero que ajude.

Sibeesh Venu
fonte
2

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

tente o comando acima. o que você está puxando deve ser compatível com a versão subjacente do Windows em que você está. acima funcionará se você estiver no Windows Server 2016.

siga este tópico para mais informações

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

Sithija Piyuman Thewa Hettige
fonte
2

Clique com o botão direito do mouse na instância do Docker Vá para Configurações Daemon Avançado Defina "experimental": true Reinicie o Docker

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

Descontinuando a tag 'latest'

Estamos descontinuando a tag 'latest' em todas as nossas imagens de base do Windows para incentivar melhores práticas de contêiner. No início do ano civil de 2019, não publicaremos mais a tag  ; Arrancaremos da lista de tags disponíveis.

Nós fortemente encorajamos você a vez declarar a tag recipiente específico que você gostaria de correr na produção. A tag 'latest' é o oposto de specific; não informa ao usuário nada sobre qual versão o contêiner realmente está separado do nome da imagem. Você pode ler mais sobre compatibilidade de versão e selecionar a tag apropriada em nossos documentos de contêiner .

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

Eltomon
fonte
1

Eu tive o mesmo problema para executar a imagem do Windows IIS usando o docker para Windows. Lendo a resposta de Mohammad Trabelsi acima, percebi que, para resolver meu problema, precisava trocar meus contêineres (na janela de encaixe) pelos contêineres do Windows.

Para fazer isso:

  1. Clique com o botão direito do mouse na instância do Docker
  2. Selecione "Alternar para contêineres do Windows ..."
Filipe Luchini
fonte
1

No Windows, você deve editar o arquivo daemon.json ou windows-daemon-options.json, o local padrão do arquivo de configuração no Windows é% programdata% \ docker \ config \ daemon.json ou% programdata% \ docker \ resources \ windows -daemon-options.json

insira a descrição da imagem aqui insira a descrição da imagem aqui

insira a descrição da imagem aqui

insira a descrição da imagem aqui

Os recursos de campo opcionais no arquivo json permitem que os usuários ativem ou desativem recursos específicos do daemon. Exemplo: {"features": {"buildkit": true}} ativa o buildkit como o construtor de imagens do docker padrão.

Tiago Medici
fonte
0

O motivo pelo qual está mostrando esta mensagem porque não é possível encontrar os contêineres Linux em execução. Portanto, certifique-se de alternar do Windows para o Linux antes de executá-lo.

Udit Gandhi
fonte
0

Para mim, é por causa do acesso negado a C: \ ProgramData \ Docker \ config \ daemon.json Depois de corrigi-lo agora, ele funciona. Você pode tentar mudar para contêineres Linux e voltar. Se não houver nenhum problema com a alternância, ele funcionará com a permissão de acesso.

GoYun.Info
fonte
0

No meu caso, eu tive que atualizar o Windows primeiro, depois que o problema desapareceu.

Legendas
fonte