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

Я использую 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

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

Ответ 1

Из этой статьи:

Контейнеры Linux и Windows: в чем разница?

С поддержкой контейнеров Docker, которая теперь доступна для Windows Server 2016, администраторы должны задаться вопросом, в чем разница между контейнерами Windows и Linux. Вот обзор.

Для простоты давайте разберем их на сходства и различия. Они выглядят так:

сходства

Контейнеры Docker в Linux и Windows похожи в следующих отношениях: Они предназначены для работы в качестве контейнеров приложений. Они работают изначально, то есть они не зависят от гипервизоров или виртуальных машин. Их можно администрировать через Docker (хотя вы также можете использовать PowerShell для управления контейнерами в Windows). Они ограничены содержанием приложений, которые изначально поддерживаются операционной системой хоста. Другими словами, Docker для Windows может размещать приложения Windows только внутри контейнеров Docker, а Docker в Linux поддерживает только приложения Linux. Они обеспечивают одинаковые возможности переносимости и модульности в обеих операционных системах.

Различия

И вот что отличает Docker от Windows:

Docker поддерживает только определенные версии Windows (а именно, Windows Server 2016 и Windows 10). Напротив, Docker может работать на любом типе современной операционной системы на основе Linux. Даже в версиях Windows, поддерживаемых Docker, Windows предъявляет более строгие требования к совместимости образов. Узнайте больше о тех [здесь *]). Некоторые сетевые функции Docker для контейнеров еще не поддерживаются в Windows. Они подробно описаны в нижней части этой страницы. Большинство систем оркестровки контейнеров, которые используются для Docker в Linux, не поддерживаются в Windows. Исключением является Docker Swarm, который поддерживается. (Однако, если вы хотите использовать другой оркестратор в Windows, не беспокойтесь; поддержка Windows для таких оркестраторов, как Kubernetes и Apache Mesos, находится в стадии разработки.)

Контейнеры и окна без докера

Стоит также упомянуть, что Docker является единственной крупной контейнерной платформой, которая в настоящее время совместима с Windows. Другие типы контейнерных движков, такие как OpenVZ и LXD, все еще доступны только для Linux и, вероятно, останутся таковыми в обозримом будущем.

Поскольку эти контейнерные платформы обслуживают различные типы сценариев использования, отличные от Docker, отсутствие поддержки Windows может не иметь значения для администраторов, решающих, запускать ли Docker в Windows или Linux. Тем не менее, тот факт, что Docker является единственным контейнерным вариантом, доступным в Windows, важен, потому что он подчеркивает тот факт, что экосистема контейнеров Windows на данный момент намного меньше, чем мир контейнеров Linux.

Вот недостающая ссылка сверху цитата: здесь

решение:

  1. Щелкните правой кнопкой мыши экземпляр Docker

  2. Элемент списка

  3. Перейдите в настройки

  4. демон

  5. продвинутый

  6. Установите "экспериментальный": правда

Перезапустите Docker

Ответ 2

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

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

Ответ 3

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

Ответ 4

Другой возможный способ сделать это:

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

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

Ответ 5

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

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

Switch Container Mode Dialog

Ответ 7

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

В частности:

docker pull mcr.microsoft.com/windows/nanoserver:1903 допустил ошибку

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

Ответ 8

Спасибо за @benscabbia, у меня работает в win10

enter image description here

Ответ 9

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

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

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

Ответ 11

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

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

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

Ответ 12

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

enter image description here

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

Ответ 13

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

Сделать это:

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

Ответ 14

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

Ответ 15

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

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

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

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

Ответ 16

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

Ответ 17

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