Докер: "нет соответствующего манифеста для 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.
Вот недостающая ссылка сверху цитата: здесь
решение:
-
Щелкните правой кнопкой мыши экземпляр Docker
-
Элемент списка
-
Перейдите в настройки
-
демон
-
продвинутый
-
Установите "экспериментальный": правда
Перезапустите Docker
Ответ 2
У меня была такая же проблема в Windows 10. Я обошел ее, запустив демон Docker в экспериментальном режиме:
- Щелкните правой кнопкой мыши экземпляр Docker
- Перейдите в настройки
- демон
- продвинутый
- Установите
"experimental": true
- Перезапустите Docker
Ответ 3
Вы находитесь в режиме контейнера Windows. Поэтому, если вы не уверены, что образ, который вы хотите получить, создан для архитектуры Windows, вам нужно переключиться на контейнеры Linux.
Ответ 4
Другой возможный способ сделать это:
В системном трее щелкните правой кнопкой мыши на значке докера, затем выберите " Switch to Linux containers
.
(Docker для Windows, Community Edition, версия 18.03.1)
Ответ 5
Причин этой ошибки может быть много. Но наиболее очевидная причина этой ошибки - использование контейнера Windows в режиме контейнера Linux или наоборот.
- Нажмите значок Docker в системном трее в контекстном меню
- Нажмите "Переключиться на окно/контейнер Linux"
- Опция Нажмите кнопку переключения в диалоге переключения
- Это может занять немного времени
- Убедитесь, что Docker сейчас в рабочем состоянии
![Switch Container Mode Dialog]()
Ответ 6
Сначала вам нужно использовать платформу Linux, а затем запускать в Windows:
docker pull --platform linux php
docker run -it php
См. сообщение в блоге Docker для Windows Desktop 18.02 с обновлением Windows 10 Fall Creators.
Ответ 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
Ответ 10
Это выглядит как https://github.com/docker/for-win/issues/1100
Если добавление --experimental
не работает, рассмотрите возможность переустановки Docker для Windows.
Ответ 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.
Сделать это:
- Щелкните правой кнопкой мыши экземпляр Docker
- Выберите "Переключиться на контейнеры 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-контейнеры, прежде чем запускать его.