Docker: „Brak pasującego manifestu dla windows / amd64 we wpisach listy manifestu”

151

Używam Dockera w systemie Windows i kiedy próbowałem pobrać obraz PHP za pomocą tego polecenia

$ docker pull php

Otrzymałem wiadomość:

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

Jak mogę rozwiązać ten problem?

Mohammad.Trabelsi
źródło
5
Aby pomóc innym, wpadłem w ten błąd podczas tworzenia obrazu dla Linuksa jako podstawowego systemu operacyjnego ... Przyczyną tego błędu było to, że został ustawiony dla kontenerów systemu Windows, więc potem przełączyłem się na kontenery Linuksa i zaczęło działać ...
Abhishek Jain
Również dla potomnych: mam to budowanie kontenera Windows. Mimo że przełączyłem się na Windows, wydaje się, że wróciłem do Linuksa. Zmiana z powrotem na Windows rozwiązała problem.
John MacIntyre,

Odpowiedzi:

215

Miałem ten sam problem w systemie Windows 10. Pominąłem go, uruchamiając demona Dockera w trybie eksperymentalnym:

  1. Kliknij prawym przyciskiem myszy ikonę Dockera na pasku zadań systemu Windows
  2. Przejdź do Ustawień
  3. Daemon
  4. zaawansowane
  5. Ustaw "experimental": true
  6. Uruchom ponownie platformę Docker
benscabbia
źródło
6
Jak kliknąć prawym przyciskiem instancję Dockera? Czy jest to ikona Dockera na pasku zadań systemu Windows?
Peter Mortensen
2
@PeterMortensen zgadza się, to ikona
Dockera na
Oprócz poprzednich odpowiedzi musiałem również usunąć atrybut „tylko do odczytu” mojego C: \ WINDOWS \ System32 \ drivers \ etc \ hosts.etc
Thiago Custodio
3
W systemie Windows możesz zlokalizować plik konfiguracyjny bezpośrednio w „% programdata% \ docker \ config \ daemon.json” i ustawić tam atrybuty.
NemyaNation
1
Jeśli używasz zadokowanego (demona) z samodzielnej --experimentalfunkcji binarnej
Anwar
91

Przyczyn tego błędu może być wiele. Ale najbardziej oczywistym powodem tego błędu jest użycie kontenera systemu Windows w trybie kontenera systemu Linux lub odwrotnie.

  1. Kliknij ikonę platformy Docker w zasobniku systemowym w menu kontekstowym
  2. Kliknij „Przełącz na kontener Windows / Linux”
  3. Opcja Kliknij przycisk Przełącz w oknie dialogowym przełączania
  4. To może zająć trochę czasu
  5. Upewnij się, że platforma Docker jest teraz uruchomiona

Okno dialogowe przełączania trybu kontenera

Imran Javed
źródło
3
To rozwiązało mój problem dotyczący „braku pasującego
pliku
1
powinieneś odpowiedzieć na to pytanie stackoverflow.com/questions/56005151/ ...
xpto
1
Udało mi się rozwiązać problem „brak pasującego manifestu dla systemu Windows / amd64 10.0.17134 we wpisach listy manifestu”
Amna
86

Jesteś w trybie kontenera systemu Windows. Jeśli więc nie masz pewności, czy obraz, który chcesz pobrać, jest zbudowany dla architektury Windows , musisz przejść na kontenery Linuksa.

Ahmad Hassan
źródło
1
Alternatywą (którą również okazałem się działać) jest odpowiedź
Chucka
3
To rozwiązało problem. Korzystałem z platformy Windows 10.
somnathchakrabarti
gdy nie uda się przełączyć? to obejście
Tiago Medici
1
Jeśli przełączysz się na kontenery Linuksa, czy będziesz mógł hostować aplikacje Windows w Dockerze? Na przykład przy użyciu usług IIS i MySQL w tym samym wystąpieniu platformy Docker.
robak internetowy
@webworm, skoro istnieje również MySQL dla Windows, po co używać wersji Linuksa, skoro chcesz mieszać ją z IIS, a nie tylko używać jej wersji dla Windows?
George Birbilis
35

Inny możliwy sposób:

W zasobniku systemowym kliknij prawym przyciskiem myszy ikonę Dockera, a następnie kliknij Switch to Linux containers.

(Docker dla Windows, Community Edition, wersja 18.03.1)

tomab
źródło
30

W moim przypadku chodziło o to, że wersja systemu operacyjnego Windows, na którym pracowałem, nie obsługiwała tagu, który próbowałem wyciągnąć. Wykorzystanie starszego tagu pozwoliło mi to zadziałać.

Konkretnie:

docker pull mcr.microsoft.com/windows/nanoserver:1903 błędnie

docker pull mcr.microsoft.com/windows/nanoserver:1803-amd64 pracował

joedragons
źródło
To! Microsoft zmienił tam coś w porównaniu do starych obrazów (servercore / nanoserver). Teraz musisz sprawdzić wersję systemu Windows, dla którego wdrażasz, i odpowiednio wybrać obraz podstawowy.
JustCoding,
1
Wielkie dzięki Joedragons!
rishi jain
Niezła odpowiedź! To zadziałało dla mnie w systemie Windows 10 po tym samouczku docs.microsoft.com/en-us/virtualization/windowscontainers/ ...
user1299379
U mnie też się udało. Ale czy to oznacza, że ​​muszę mieć takie podejście, kiedy wyciągam każdy obraz, np. Hello-world?
Mandroid
@Mandroid Byłbym zainteresowany twoimi odkryciami, ale niektóre obrazy wydawały się działać, a niektóre nie w moim przypadku, więc myślę, że jest to bardzo specyficzne dla konfiguracji. np. jeśli masz jedną poprawkę systemu Windows, może się ona różnić od innej.
joedragons
21

Wersja: Windows 10

Krok 1: Kliknij prawym przyciskiem myszy wystąpienie Dockera i przejdź do Ustawień
wprowadź opis obrazu tutaj

Krok 2: Podstawowy na zaawansowany i ustawienie „eksperymentalnej”: prawda wprowadź opis obrazu tutaj

Krok 3: Uruchom ponownie Docker
wprowadź opis obrazu tutaj

Krok 4: Instalacja pliku dockerfile powiodła się (np. Kompilacja docker -t williehao / cheers2019.) wprowadź opis obrazu tutaj

Willie Cheng
źródło
6

Rozwiązałem to w Windows 10, uruchamiając w Admin Powershell:

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

I wtedy:

./DockerCli.exe -SwitchDaemon
Jared Zena
źródło
3

Rozważ aplikacje, które pobierasz - czy są one oparte na systemie Windows? Jeśli nie, musisz uruchomić kontener Linux.

Bez korzystania z trybu eksperymentalnego możesz używać Dockera tylko w jednym stylu kontenera w porównaniu z drugim. Jeśli aktywujesz tryb eksperymentalny, jak wspomniano powyżej, możesz używać kontenerów Windows i Linux zgodnie z wymaganiami aplikacji, które pobierasz w pliku redagowania.

Kluczowa uwaga: eksperymentalna - wciąż w fazie rozwoju przez Docker.

Connor
źródło
3

Może się to zdarzyć nie tylko z powodu kontenerów okiennych!

Obecnie wszystkie obrazy dockera Node.Js nie są rozwijane. Zawsze sprawdzaj obraz, który próbujesz wyciągnąć wcześniej.

Powiązany problem z Githubem

FabianTe
źródło
3

Wygląda na to, że „docker pull” nie działa w systemie Windows 10 # 1100

Jeśli dodanie --experimentalnie zadziała, rozważ ponowną instalację dockera dla systemu Windows .

VonC
źródło
Dodanie „eksperymentalny: prawda” nie zadziałało, więc pomyślałem, że spróbuję przełączyć się na kontener Linuksa przed ponowną instalacją dockera i zadziałało.
yogescicak
W środowisku Windows sprawdź również, czy usługa Hyper-V Virtual Machine Management jest uruchomiona, a następnie po zainstalowaniu dockera przełącz ją na tryb kontenerów Linux.
Junior Mayhé
Dodawanie experimentaldziała, dzięki ... Dlaczego tak jest?
Angshuman Agarwal
@AngshumanAgarwal Korzystanie z funkcji eksperymentalnych ( docs.docker.com/docker-for-windows/#command-line ) dodaje sterowniki ( github.com/docker/cli/blob/master/experimental/ ... ), które mogą być potrzebne do korzystania z Dockera dla Windows.
VonC
Rozumiem, dziękuję za to. Ale nadal widzę problemy z systemem Windows 10. Doc mówi, że Docker działa natywnie, ale tak nie jest. Musiałem przejść na „kontenery Linuksa” w systemie Windows 10, aby wszystko działało.
Angshuman Agarwal
2

Otrzymuję ten błąd w moim potoku 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

Problem polegał na tym, że wybrałem hostowany VS2017 zamiast hostowanego Ubuntu . Po zmianie tego samego, co poniżej, kompilacja zakończyła się sukcesem.

wprowadź opis obrazu tutaj

Mam nadzieję, że to pomoże.

Sibeesh Venu
źródło
2

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

wypróbuj powyższe polecenie. to, co pobierasz, powinno być zgodne z podstawową wersją systemu Windows, w której się znajdujesz. Powyższe będzie działać, jeśli jesteś w systemie Windows Server 2016.

śledź ten wątek, aby uzyskać więcej informacji

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

Sithija Piyuman Thewa Hettige
źródło
2

Kliknij prawym przyciskiem myszy instancję Dockera Idź do Ustawienia Demon Zaawansowane Ustaw opcję „Experimental”: true Restart Docker

 {
      "registry-mirrors": [],
      "insecure-registries": [],
      "debug": true,
      "experimental": true
    }
harun ugur
źródło
2

Wycofanie tagu „najnowsze”

Wycofujemy tag „najnowsze” we wszystkich naszych podstawowych obrazach systemu Windows, aby zachęcić do lepszych praktyk dotyczących kontenerów. Na początku roku kalendarzowego 2019 nie będziemy już publikować tagu  ; Wyciągniemy go z listy dostępnych tagów.

Zdecydowanie zachęcamy do zadeklarowania konkretnego tagu kontenera, który chcesz uruchomić w środowisku produkcyjnym. Znacznik „najnowsze” jest przeciwieństwem określonego; nie mówi użytkownikowi niczego o wersji kontenera, poza nazwą obrazu. Możesz przeczytać więcej o zgodności wersji i wyborze odpowiedniego tagu w naszych dokumentach kontenerów .

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

Eltomon
źródło
1

Miałem ten sam problem, aby uruchomić obraz Windows IIS za pomocą dockera dla Windows. Czytając powyższą odpowiedź Mohammada Trabelsiego zdałem sobie sprawę, że aby rozwiązać mój problem, musiałem zmienić moje kontenery (na docker) na kontenery Windows.

Aby to zrobić:

  1. Kliknij prawym przyciskiem myszy wystąpienie platformy Docker
  2. Wybierz „Przełącz na kontenery systemu Windows ...”
Filipe Luchini
źródło
1

W systemie Windows należy edytować plik daemon.json lub windows-daemon-options.json, domyślna lokalizacja pliku konfiguracyjnego w systemie Windows to% programdata% \ docker \ config \ daemon.json lub% programdata% \ docker \ resources \ windows -daemon-options.json

wprowadź opis obrazu tutaj wprowadź opis obrazu tutaj

wprowadź opis obrazu tutaj

wprowadź opis obrazu tutaj

Opcjonalne funkcje pól w pliku json umożliwiają użytkownikom włączanie lub wyłączanie określonych funkcji demona. Przykład: {"features": {"buildkit": true}} włącza buildkit jako domyślny kreator obrazów dockera.

Tiago Medici
źródło
0

Powód, dla którego wyświetla ten komunikat, ponieważ nie może znaleźć uruchomionych kontenerów Linuksa. Dlatego przed uruchomieniem upewnij się, że przełączasz się z systemu Windows na kontenery systemu Linux.

Udit Gandhi
źródło
0

Dla mnie to z powodu odmowy dostępu do C: \ ProgramData \ Docker \ config \ daemon.json Po naprawieniu to teraz działa. Możesz spróbować przełączyć się na kontenery Linuksa i wrócić. Jeśli nie ma problemu z przełączaniem, to działa z uprawnieniem dostępu.

GoYun.Info
źródło
0

W moim przypadku musiałem najpierw zaktualizować system Windows , po czym problem zniknął.

Legendy
źródło