Докер: «нет соответствующего манифеста для windows / amd64 в записях списка манифестов»


152

Я использую Docker в Windows, и когда я попытался получить изображение PHP с помощью этой команды

$ docker pull php

Я получил это сообщение:

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

Как я могу решить эту проблему?


5
Чтобы помочь другим, я попал в эту ошибку при создании образа для linux в качестве базовой ОС .... Причиной этой ошибки было то, что он был установлен для контейнеров Windows, поэтому я переключился на контейнеры Linux, после чего он начал работать ...
Abhishek Jain

Кроме того, для потомков: я получил это здание контейнера Windows. Несмотря на то, что я переключился на Windows, похоже, он снова переключился на Linux. Изменение его обратно на Windows решило проблему.
Джон Макинтайр

Ответы:


217

У меня была такая же проблема в Windows 10. Я обошел ее, запустив демон Docker в экспериментальном режиме:

  1. Щелкните правой кнопкой мыши значок Docker на панели задач Windows.
  2. Перейти в настройки
  3. демон
  4. продвинутый
  5. Установить "experimental": true
  6. Перезапустите Docker

6
Как вы щелкаете правой кнопкой мыши по экземпляру Docker? Это значок Docker на панели задач Windows?
Питер Мортенсен

2
@PeterMortensen это верно, это значок Docker на панели задач
benscabbia

Помимо предыдущих ответов, мне также пришлось удалить атрибут «только для чтения» из моего C: \ WINDOWS \ System32 \ drivers \ etc \ hosts.etc
Thiago Custodio

3
В Windows вы можете найти файл конфигурации непосредственно в «% programdata% \ docker \ config \ daemon.json» и установить там атрибуты.
NemyaNation

1
Если вы работаете на стоянку (демон) от автономных двоичного использования --experimentalфункции
Анвар

92

Причин этой ошибки может быть много. Но наиболее очевидная причина этой ошибки - использование контейнера Windows в режиме контейнера Linux или наоборот.

  1. Нажмите значок Docker в системном трее в контекстном меню
  2. Нажмите «Переключиться на окно / контейнер Linux»
  3. Опция Нажмите кнопку переключения в диалоге переключения
  4. Это может занять немного времени
  5. Убедитесь, что Docker сейчас в рабочем состоянии

Диалоговое окно переключения контейнера


3
Это решило мою проблему с «не соответствующим манифестом для windows / amd64»
winlinux

1
Вы должны ответить на этот вопрос stackoverflow.com/questions/56005151/…
xpto

1
Он работал для меня с вопросом «нет соответствия манифеста для окон / amd64 10.0.17134 в манифесте записей списка»
Amna

Этот ответ не имеет отношения к контейнеру Windows. Это работает только в том случае, если ваш контейнер требует Linux Container. Пожалуйста, обратитесь к ответу @ benscabbia.
Junnyea

86

Вы находитесь в режиме контейнера Windows. Поэтому, если вы не уверены, что образ, который вы хотите получить, создан для архитектуры Windows , вам нужно переключиться на контейнеры Linux.


1
Альтернатива (которую я также нашел, чтобы работать) находится в ответе Чака
Питер Мортенсен

3
Это решило проблему. Я использовал платформу Windows 10.
Сомнатхакрабарти

как только он не переключается? это
Тиаго Медичи

1
Если вы переключитесь на Linux Containers, сможете ли вы размещать приложения Windows в Docker? Например, используя IIS и MySQL в одном экземпляре Docker.
веб-червь

@webworm, поскольку есть также MySQL для Windows, зачем использовать версию для Linux, если вы хотите смешать ее с IIS, а не просто использовать ее версию для Windows?
Джордж Бирбилис

35

Еще один возможный способ сделать это:

В системном трее щелкните правой кнопкой мыши значок докера, затем нажмите Switch to Linux containers .

(Docker для Windows, Community Edition, версия 18.03.1)


30

В моем случае это была версия ОС Windows, на которой я работал, не поддерживала тег, который я пытался извлечь. Использование старого тега позволило мне заставить это работать.

В частности:

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

docker pull mcr.microsoft.com/windows/nanoserver:1803-amd64 работал


Это! Microsoft изменила там кое-что по сравнению со старыми изображениями (servercore / nanoserver). Теперь вам нужно найти версию системы Windows, для которой вы развертываете, и выбрать соответствующий базовый образ.
JustCoding

1
Большое спасибо Joedragons!
Риши Джайн

Хороший ответ! Это работало для меня в Windows 10, следуя этому руководству docs.microsoft.com/en-us/virtualization/windowscontainers/…
user1299379

Это также сработало для меня. Но значит ли это, что мне нужен такой подход, когда я вынимаю каждое изображение, например, hello-world?
Mandroid

@Mandroid Я бы заинтересовался вашими результатами, но некоторые изображения, похоже, работали, а некоторые - не в моем случае, поэтому я думаю, это очень специфично для конкретной установки. Например, если у вас есть один патч Windows может отличаться от другого.
Joedragons

21

Версия: Windows 10

Шаг 1: Щелкните правой кнопкой мыши экземпляр Docker и перейдите в Настройки
введите описание изображения здесь

Шаг 2: от базового до расширенного и установка «экспериментального»: правда введите описание изображения здесь

Шаг 3: Перезапустите Docker
введите описание изображения здесь

Шаг 4: Установка dockerfile прошла успешно (например, сборка docker -t williehao / cheers2019.) введите описание изображения здесь


11

Сначала вам нужно использовать платформу Linux, а затем запустить на Windows:

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

Смотрите сообщение в блоге Docker для Windows Desktop 18.02 с обновлением Windows 10 Fall Creators .


Да, --platformфлаг тоже работает. Хотя это может перезагружать вещи.
Питер Мортенсен

«--platform» поддерживается только в демоне Docker с включенными экспериментальными функциями
Михал Шпондр

6

Я решил это в Windows 10, запустив администратор Powershell:

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

А потом:

./DockerCli.exe -SwitchDaemon

3

Рассмотрим приложения, которые вы тянете - они основаны на Windows? Если нет, вам нужно запустить контейнер Linux.

Без использования экспериментального режима, вы можете использовать Docker только в одном стиле контейнера против другого. Если вы активируете экспериментальный режим, как упомянуто выше, вы можете использовать контейнеры Windows и Linux, как того требуют приложения, которые вы загружаете в файл compose.

Ключевое примечание: экспериментальный - все еще в разработке Docker.


3

Это может произойти не только из-за контейнеров с окнами!

Сегодня все образы док-станции Node.Js не обрабатываются. Всегда проверяйте изображение, которое вы пытаетесь нарисовать раньше.

Связанный Github-Issue


3

Это выглядит как «тянуть докер» не в Windows 10 # 1100

Если добавление --experimentalне работает, рассмотрите переустановки Docker для Windows .


Добавление «экспериментальный: истина» у меня не сработало, поэтому я решил попробовать перейти на контейнер Linux перед переустановкой докера, и это сработало.
yogescicak

В среде Windows также проверьте, запущена ли служба управления виртуальными машинами Hyper-V, после установки докера переключите ее в режим контейнеров Linux.
Младший Mayhé

Добавление experimentalработает, спасибо ... Почему это так?
Ангшуман Агарвал

@AngshumanAgarwal Использование экспериментальных функций ( docs.docker.com/docker-for-windows/#command-line ) добавляет драйверы ( github.com/docker/cli/blob/master/experimental/… ), которые могут понадобиться для использования Docker для Окна.
VonC

Понятно, спасибо тебе за это. Но я все еще вижу проблемы с Windows 10. Док говорит, что Docker работает изначально, но это не так. Мне пришлось переключиться на «контейнеры Linux» в Windows 10, чтобы все заработало.
Ангшуман Агарвал

2

Я получал эту ошибку в своем конвейере 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

Проблема была в том, что я выбрал Hosted VS2017 вместо Hosted Ubuntu . После изменения так же, как показано ниже, сборка прошла успешно.

введите описание изображения здесь

Надеюсь, поможет.


2

Докер запуска mcr.microsoft.com/windows/servercore:ltsc2016

попробуйте приведенную выше команду. то, что вы тянете, должно быть совместимо с базовой версией Windows, в которой вы находитесь. выше будет работать, если вы находитесь в Windows Server 2016.

следуйте этой теме для получения дополнительной информации

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


2

Щелкните правой кнопкой мыши на экземпляре Docker. Перейдите в раздел «Настройки». Демон «Дополнительно». Установите «экспериментальный»: true. Перезапустите Docker.

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

2

Устаревший тег «последний»

Мы осуждаем тег «последний» во всех наших базовых образах Windows, чтобы способствовать улучшению практики работы с контейнерами. В начале 2019 календарного года мы больше не будем публиковать тег  ; Мы выдернем его из списка доступных тегов.

Мы настоятельно рекомендуем вместо этого объявить конкретный тег контейнера, который вы хотели бы запустить в производстве. Тег «последний» является противоположностью конкретного; он ничего не говорит пользователю о том, какая версия контейнера на самом деле отличается от имени изображения. Вы можете узнать больше о совместимости версий и выбрать соответствующий тег в нашей документации по контейнерам .

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


1

У меня была такая же проблема, чтобы запустить образ Windows IIS с помощью Docker для Windows. Читая ответ Мохаммеда Трабелси выше, я понял, что для решения моей проблемы мне нужно было переключить свои контейнеры (в докере) на контейнеры Windows.

Сделать это:

  1. Щелкните правой кнопкой мыши экземпляр Docker
  2. Выберите «Переключиться на контейнеры Windows ...»

1

В Windows вы должны отредактировать файл daemon.json или windows-daemon-options.json, расположение файла конфигурации по умолчанию в Windows:% programdata% \ docker \ config \ daemon.json или% programdata% \ docker \ resources \ windows -daemon-options.json

введите описание изображения здесь введите описание изображения здесь

введите описание изображения здесь

введите описание изображения здесь

Необязательные параметры поля в файле json позволяют пользователям включать или отключать определенные функции демона. Пример: {"features": {"buildkit": true}} включает buildkit в качестве сборщика образов докера по умолчанию.


0

Причина, по которой он показывает это сообщение, потому что он не может найти контейнеры Linux как работающие. Поэтому перед запуском убедитесь, что вы переключаетесь с Windows на контейнеры Linux.


0

Для меня это из-за отказа в доступе к C: \ ProgramData \ Docker \ config \ daemon.json После того, как я это исправил, теперь он работает. Вы можете попробовать переключиться на контейнеры Linux и вернуться обратно. Если с переключением проблем нет, то он работает с правами доступа.


0

В моем случае мне пришлось сначала обновить Windows , после этого проблема ушла.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.