Docker: "немає відповідного маніфесту для Windows / amd64 у записах списку маніфестів"


151

Я використовую 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 усунуло проблему.
Джон Макінтайр

Відповіді:


215

У мене була така сама проблема в Windows 10. Я обійшов її, запустивши демон Докера в експериментальному режимі:

  1. Клацніть правою кнопкою миші піктограму Docker у системній панелі Windows
  2. Перейдіть у Налаштування
  3. Демон
  4. Розширений
  5. Встановіть "experimental": true
  6. Перезавантажте Докер

6
Як ви клацніть правою кнопкою миші екземпляр Docker? Це значок Docker на панелі завдань Windows?
Пітер Мортенсен

2
@PeterMortensen це правильно, це значок
Докера на

Окрім попередніх відповідей, мені також довелося видалити атрибут "тільки для читання" мого C: \ WINDOWS \ System32 \ driver \ etc \ hosts.etc
Thiago Custodio

3
У Windows можна знайти конфігураційний файл безпосередньо за адресою "% programdata% \ docker \ config \ daemon.json" і встановити там атрибути.
NemyaNation

1
Якщо ви працюєте на стоянку (демон) від автономних довічного використання --experimentalфункції
Анвар

91

Причин цієї помилки може бути багато. Але найбільш очевидною причиною цієї помилки є використання контейнера Windows у режимі Linux Container або навпаки.

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

Діалог переключення режиму контейнера


3
Це вирішило мою проблему щодо "невідповідного маніфесту для windows / amd64"
winlinux

1
Ви повинні відповісти на це питання stackoverflow.com/questions/56005151 / ...
xpto

1
Він працював для мене з питанням «немає відповідності маніфесту для вікон / amd64 10.0.17134 в маніфесті записів списку»
Amna

86

Ви перебуваєте в контейнерному режимі Windows. Тож якщо ви не впевнені, що зображення, яке ви хочете витягнути , створене для архітектури Windows , вам потрібно перейти до контейнерів Linux.


1
Альтернатива (що я також виявила, що працює) - у відповіді Чак
Пітер Мортенсен

3
Це вирішило питання. Я використовував платформу Windows 10.
somnathchakrabarti

як тільки не вдалося переключитися? це робота навколо дороги
Tiago Medici

1
Якщо ви перейдете на Linux Containers, чи зможете ви розміщувати програми Windows у Docker? Наприклад, використовуючи IIS та MySQL в одному екземплярі Docker.
webworm

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

35

Ще один можливий спосіб зробити це:

У системній панелі клацніть правою кнопкою миші на значку докера, а потім натисніть на Switch to Linux containers.

(Докер для Windows, Community Edition, версія 18.03.1)


30

У моєму випадку так, що версія ОС Windows, на якій я був, не підтримувала тег, який я намагався витягнути. Використання старшого тегу дозволило мені змусити це працювати.

Конкретно:

docker pull mcr.microsoft.com/windows/nanoserver:1903 помилявся

docker pull mcr.microsoft.com/windows/nanoserver:1803-amd64 працювали


Це! Microsoft там щось змінив порівняно зі старими зображеннями (servercore / nanoserver). Тепер вам потрібно знайти версію Windows в системі, для якої ви розгортаєтесь, і вибрати базове зображення відповідно.
JustCoding

1
Велике спасибі Джоедрагонам!
rishi jain

Гарна відповідь! Це працювало для мене в Windows 10 за цим підручником docs.microsoft.com/en-us/virtualization/windowscontainers/…
користувач1299379

Це також працювало для мене. Але чи означає це, що мені потрібно мати такий підхід, коли я малюю кожен образ, наприклад, привіт-світ?
Mandroid

@Mandroid Мені було б цікаво у ваших висновках, але деякі образи, здається, спрацювали, а деякі не в моєму випадку, тому я думаю, що це дуже налаштовано на налаштування. наприклад, якщо у вас є один патч Windows, може відрізнятися від іншого.
joedragons

21

Версія: Windows 10

Крок 1: Клацніть правою кнопкою миші екземпляр Docker і перейдіть до налаштувань
введіть тут опис зображення

Крок 2: Основні для розширених та встановлення "експериментального": вірно введіть тут опис зображення

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

Крок 4: Установка dockerfile успішна (наприклад: docker build -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" підтримується лише на демон
Докера

6

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

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

І потім:

./DockerCli.exe -SwitchDaemon

3

Розгляньте програми, які ви тягнете - вони базуються на Windows? Якщо ні, потрібно запустити контейнер Linux.

Без використання експериментального режиму ви можете використовувати Docker лише в одному стилі контейнера проти іншого. Якщо ви активуєте експериментальний режим, як було зазначено вище, ви можете використовувати контейнери Windows та Linux, як того вимагають додатки, які ви перетягуєте у файл складання.

Ключова примітка: Експериментальна - ще в розробці Докер.


3

Це може статися не лише через контейнери для вікон!

Сьогодні всі зображення докера Node.Js не можна знімати. Завжди перевіряйте зображення, яке ви намагаєтеся витягнути раніше.

Супутні Github-Issue


3

Це схоже на те, що "витягнути докер" не вдається в Windows 10 # 1100

Якщо додавання --experimentalне працює, спробуйте перевстановити докер для Windows .


Додавання "експериментального: істинного" не спрацювало для мене, тому я подумав, що спробую перейти до контейнера Linux перед повторною установкою докера, і він спрацював.
yogescicak

У середовищі Windows також перевірте, чи працює служба Hyper-V Virtual Machine Management, після встановлення докера переключіть його в режим контейнерів Linux.
Молодший Мейхе

Додавання experimentalтворів, спасибі ... Чому так?
Ангшуман Агарвал

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

Бачу, дякую за це. Але я все ще бачу проблеми з Windows 10. Док каже, що Докер працює на самоті, але, здається, це не так. Мені довелося перейти на "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

Проблема полягала в тому, що я вибрав розміщений VS2017 замість розміщеного Ubuntu . Змінивши те саме, що було описано нижче, збірка була успішною.

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

Сподіваюся, це допомагає.


2

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

спробуйте вказану вище команду. те, що ви тягнете, має бути сумісним з базовою версією Windows, в якій ви перебуваєте. Вище буде працювати, якщо ви перебуваєте на Windows Server 2016.

Дотримуйтесь цієї теми для отримання додаткової інформації

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


2

Клацніть правою кнопкою миші екземпляр Docker. Перейдіть у меню Налаштування Daemon Advanced. Встановіть "експериментальний": справжній перезапуск 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 за допомогою докера для Windows. Читаючи відповідь Мохаммада Трабелсі вище, я зрозумів, що для вирішення проблеми мені потрібно переключити свої контейнери (на докер) для контейнерів Windows.

Зробити це:

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

1

У Windows потрібно відредагувати файл daemon.json або windows-daemon-options.json, за замовчуванням файл конфігурації у Windows -% programdata% \ docker \ config \ daemon.json або% programdata% \ docker \ ресурси \ 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.