Docker: "tidak ada manifes yang cocok untuk windows / amd64 di entri daftar manifes"

151

Saya menggunakan Docker di Windows, dan ketika saya mencoba menarik gambar PHP dengan perintah ini

$ docker pull php

Saya mendapat pesan ini:

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

Bagaimana saya bisa memperbaiki masalah ini?

Mohammad.Trabelsi
sumber
5
Untuk membantu orang lain, saya masuk ke kesalahan ini saat membuat gambar untuk linux sebagai OS dasar .... Alasan untuk kesalahan ini adalah itu ditetapkan untuk wadah windows jadi kemudian saya beralih ke wadah Linux kemudian mulai bekerja ...
Abhishek Jain
Juga, untuk anak cucu: Saya mendapat ini membangun wadah Windows. Meskipun saya beralih ke Windows, tampaknya telah beralih kembali ke Linux. Mengubahnya kembali ke Windows memperbaiki masalahnya.
John MacIntyre

Jawaban:

214

Saya memiliki masalah yang sama pada Windows 10. Saya memintasinya dengan menjalankan daemon Docker dalam mode eksperimental:

  1. Klik kanan ikon Docker di Baki Sistem Windows
  2. Buka Pengaturan
  3. Daemon
  4. Maju
  5. Mengatur "experimental": true
  6. Mulai ulang Docker
benscabbia
sumber
6
Bagaimana Anda mengklik kanan contoh Docker? Apakah itu ikon Docker di bilah tugas Windows?
Peter Mortensen
2
@PeterMortensen itu benar, itu adalah ikon Docker di bilah tugas
benscabbia
Selain jawaban sebelumnya, saya juga harus menghapus atribut "read only" dari C saya: \ WINDOWS \ System32 \ drivers \ etc \ hosts.etc
Thiago Custodio
3
Di Windows, Anda dapat menemukan file config secara langsung di '% programdata% \ docker \ config \ daemon.json' dan mengatur atribut di sana.
NemyaNation
1
Jika Anda menjalankan docked (daemon) dari --experimentalfitur penggunaan biner mandiri
Anwar
91

Mungkin ada banyak alasan untuk kesalahan ini. Tetapi alasan paling jelas untuk kesalahan ini adalah menggunakan Windows Container di Linux Container Mode atau sebaliknya.

  1. Klik Ikon Docker di Baki Sistem di Menu Konteks
  2. Klik "Alihkan ke Jendela / Wadah Linux"
  3. Opsi Klik Beralih Tombol di Switch Dialog
  4. Mungkin butuh sedikit waktu
  5. Pastikan Docker Berlari Sekarang

Ganti Dialog Mode Kontainer

Imran Javed
sumber
3
Ini memecahkan masalah saya tentang "tidak ada manifes yang cocok untuk windows / amd64"
winlinux
1
Anda harus menjawab pertanyaan ini stackoverflow.com/questions/56005151/…
xpto
1
Ini bekerja untuk saya dengan masalah 'tidak ada manifes yang cocok untuk windows / amd64 10.0.17134 di entri daftar manifes'
Amna
86

Anda berada dalam mode wadah Windows. Jadi, jika Anda tidak yakin bahwa gambar yang ingin Anda tarik dibuat untuk arsitektur Windows , Anda perlu beralih ke wadah Linux.

Ahmad Hassan
sumber
1
Alternatif (yang saya temukan juga berfungsi) ada dalam jawaban chuck
Peter Mortensen
3
Ini memecahkan masalah. Saya menggunakan platform Windows 10.
somnathchakrabarti
setelah gagal beralih? ini adalah pekerjaan di sekitar jalan
Tiago Medici
1
Jika Anda beralih ke Linux Containers, apakah Anda dapat meng-host aplikasi Windows di dalam Docker? Misalnya menggunakan IIS dan MySQL pada contoh Docker yang sama.
webworm
@webworm karena ada juga MySQL untuk Windows, mengapa menggunakan versi Linux ketika Anda ingin mencampurnya dengan IIS dan tidak hanya menggunakan versi Windows-nya?
George Birbilis
35

Cara lain yang memungkinkan untuk melakukan ini:

Di baki sistem, klik kanan pada ikon buruh pelabuhan, lalu klik Switch to Linux containers.

(Docker untuk Windows, Edisi Komunitas, versi 18.03.1)

tomab
sumber
30

Dalam kasus saya, versi OS Windows yang saya gunakan tidak mendukung tag yang saya coba tarik. Memanfaatkan tag yang lebih lama memungkinkan saya membuatnya berfungsi.

Secara khusus:

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

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

joedragons
sumber
Ini! Microsoft mengubah sesuatu di sana dibandingkan dengan gambar lama (servercore / nanoserver). Sekarang, Anda perlu mencari versi windows dari sistem yang Anda gunakan dan memilih gambar dasar yang sesuai.
JustCoding
1
Joedragons terima kasih banyak!
rishi jain
Jawaban bagus! Ini bekerja untuk saya di Windows 10 setelah tutorial ini docs.microsoft.com/en-us/virtualization/windowscontainers/…
user1299379
Itu juga berhasil untuk saya. Tetapi apakah itu berarti bahwa saya harus memiliki pendekatan ini ketika saya menarik setiap gambar, misalnya halo-dunia?
Mandroid
@ Mandroid Saya akan tertarik pada temuan Anda tetapi beberapa gambar tampaknya berfungsi dan beberapa tidak dalam kasus saya, jadi saya kira ini sangat spesifik untuk pengaturan. mis. jika Anda memiliki satu tambalan Windows dapat berbeda dari yang lain.
joedragons
21

Versi: Windows 10

Langkah 1: Klik kanan instance Docker dan Buka Pengaturan
masukkan deskripsi gambar di sini

Langkah 2: Dasar ke Lanjutan dan mengatur "eksperimental": true masukkan deskripsi gambar di sini

Langkah 3: Mulai Ulang Docker
masukkan deskripsi gambar di sini

Langkah 4: Untuk menginstal dockerfile berhasil (mis: membangun docker -t williehao / cheers2019). masukkan deskripsi gambar di sini

Willie Cheng
sumber
11

Anda harus menarik dengan platform Linux terlebih dahulu, kemudian Anda dapat berjalan di Windows:

docker pull --platform linux php
docker run -it php

Lihat posting blog Docker untuk Windows Desktop 18.02 dengan Pembaruan Windows 10 Fall Creators .

membuang
sumber
Ya, --platformbenderanya juga berfungsi. Meskipun mungkin mengunduh ulang barang.
Peter Mortensen
"--platform" hanya didukung di daemon Docker dengan fitur eksperimental diaktifkan
Michal Špondr
6

Saya memecahkan ini di Windows 10 dengan menjalankan admin Powershell:

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

Lalu:

./DockerCli.exe -SwitchDaemon
Jared Zena
sumber
3

Pertimbangkan aplikasi yang Anda tarik - apakah itu berbasis Windows? Jika tidak, Anda harus menjalankan wadah Linux.

Tanpa menggunakan mode eksperimental, Anda hanya dapat menggunakan Docker dalam satu gaya wadah vs yang lain. Jika Anda mengaktifkan mode eksperimental seperti yang disebutkan di atas, Anda dapat menggunakan wadah Windows dan Linux seperti yang diperlukan oleh aplikasi yang Anda tarik dalam file penulisan.

Catatan kunci: Eksperimental - masih dalam pengembangan oleh Docker.

Connor
sumber
3

Ini mungkin tidak hanya terjadi karena wadah windows!

Hari ini semua gambar docker Node.Js tidak dapat ditarik. Selalu periksa gambar yang ingin Anda tarik sebelumnya.

Github-Issue terkait

FabianTe
sumber
3

Ini seperti "docker pull" gagal di windows 10 # 1100

Jika menambahkan --experimentaltidak berhasil, pertimbangkan untuk menginstal ulang buruh pelabuhan untuk windows .

VONC
sumber
Menambahkan "eksperimental: true" tidak berfungsi untuk saya, jadi saya pikir saya akan mencoba beralih ke wadah Linux sebelum menginstal ulang buruh pelabuhan dan itu berhasil.
yogescicak
Pada lingkungan Windows, periksa juga apakah layanan Hyper-V Virtual Machine Management berjalan, kemudian setelah menginstal docker, alihkan ke mode wadah Linux.
Junior Mayhé
Menambahkan experimentalkarya, terima kasih ... Kenapa begitu?
Angshuman Agarwal
@AngshumanAgarwal Menggunakan fitur eksperimental ( docs.docker.com/docker-for-windows/#command-line ) menambahkan driver ( github.com/docker/cli/blob/master/experimental/… ) yang mungkin diperlukan untuk menggunakan Docker untuk Windows.
VonC
Begitu ya, terima kasih untuk itu. Tapi, saya masih melihat masalah dengan Windows 10. Doc mengatakan Docker berjalan secara native, tapi, sepertinya tidak begitu. Saya harus beralih ke "wadah Linux" di Windows 10 untuk membuat semuanya berfungsi.
Angshuman Agarwal
2

Saya mendapatkan kesalahan ini dalam pipa Azure DevOps saya.

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

Masalahnya adalah saya telah memilih Hosted VS2017, bukan Ubuntu Hosted . Setelah mengubah sama seperti berikut, build itu berhasil.

masukkan deskripsi gambar di sini

Semoga ini bisa membantu.

Sibeesh Venu
sumber
2

buruh pelabuhan menjalankan mcr.microsoft.com/windows/servercore:ltsc2016

coba perintah di atas. apa yang Anda tarik harus kompatibel dengan versi windows yang mendasari Anda masuk. di atas akan berfungsi jika Anda berada di windows server 2016.

ikuti utas ini untuk info lebih lanjut

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

Sithija Piyuman Thewa Hettige
sumber
2

Klik kanan Docker instance. Buka Pengaturan Daemon Advanced. Atur "eksperimental": true Restart Docker

 {
      "registry-mirrors": [],
      "insecure-registries": [],
      "debug": true,
      "experimental": true
    }
harun ugur
sumber
2

Mengecewakan tag 'terbaru'

Kami mencabut tag 'terbaru' di semua gambar dasar Windows kami untuk mendorong praktik wadah yang lebih baik. Di awal tahun kalender 2019, kami tidak akan lagi menerbitkan tag  ; Kami akan menariknya dari daftar tag yang tersedia.

Kami sangat menyarankan Anda untuk mendeklarasikan tag wadah khusus yang ingin Anda jalankan dalam produksi. Tag 'terbaru' adalah kebalikan dari spesifik; itu tidak memberi tahu pengguna apa pun tentang versi wadah yang sebenarnya terpisah dari nama gambar. Anda dapat membaca lebih lanjut tentang kompatibilitas versi dan memilih tag yang sesuai pada dokumen kontainer kami .

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

Eltomon
sumber
1

Saya memiliki masalah yang sama untuk menjalankan gambar Windows IIS menggunakan buruh pelabuhan untuk Windows. Membaca respons Mohammad Trabelsi di atas, saya menyadari bahwa untuk menyelesaikan masalah, saya harus mengganti wadah (pada buruh pelabuhan) untuk wadah Windows.

Untuk melakukan ini:

  1. Klik kanan contoh Docker
  2. Pilih "Alihkan ke wadah Windows ..."
Filipe Luchini
sumber
1

Pada Windows Anda harus mengedit file daemon.json atau windows-daemon-options.json, lokasi default file konfigurasi pada Windows adalah% programdata% \ docker \ config \ daemon.json atau% programdata% \ docker \ resources \ windows -daemon-options.json

masukkan deskripsi gambar di sini masukkan deskripsi gambar di sini

masukkan deskripsi gambar di sini

masukkan deskripsi gambar di sini

Fitur bidang opsional pada file json, memungkinkan pengguna untuk mengaktifkan atau menonaktifkan fitur daemon tertentu. Contoh: {"fitur": {"buildkit": true}} memungkinkan buildkit sebagai pembuat gambar buruh pelabuhan default.

Tiago Medici
sumber
0

Alasannya menampilkan pesan ini karena tidak dapat menemukan wadah Linux berjalan. Jadi, pastikan Anda beralih dari windows ke wadah linux sebelum menjalankannya.

Udit Gandhi
sumber
0

Bagi saya, itu karena akses ditolak ke C: \ ProgramData \ Docker \ config \ daemon.json Setelah saya memperbaikinya sekarang berfungsi. Anda dapat mencoba beralih ke wadah Linux dan beralih kembali. Jika tidak ada masalah dengan peralihan, maka itu berfungsi dengan izin akses.

GoYun.Info
sumber
0

Dalam kasus saya, saya harus memperbarui windows terlebih dahulu, setelah itu masalahnya hilang.

Legenda
sumber