Докер: «нет соответствующего манифеста для 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

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

Mohammad.Trabelsi
источник
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
benscabbia
источник
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)

tomab
источник
30

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

В частности:

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

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

joedragons
источник
Это! 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

FabianTe
источник
3

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

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

VonC
источник
Добавление «экспериментальный: истина» у меня не сработало, поэтому я решил попробовать перейти на контейнер 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#

Eltomon
источник
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 и вернуться обратно. Если с переключением проблем нет, то он работает с правами доступа.

GoYun.Info
источник
0

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

Легенды
источник