นักเทียบท่า:“ ไม่มีรายการที่ตรงกันสำหรับ 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 แก้ไขปัญหาได้
John MacIntyre

คำตอบ:


215

ฉันมีปัญหาเดียวกันนี้ใน Windows 10 ฉันข้ามมันโดยการเรียกใช้ Docker daemon ในโหมดทดลอง:

  1. คลิกขวาที่ไอคอน Docker ใน Windows System Tray
  2. ไปที่การตั้งค่า
  3. ภูต
  4. สูง
  5. ตั้งค่า "experimental": true
  6. รีสตาร์ท Docker

6
คุณคลิกขวาที่อินสแตนซ์ Docker ได้อย่างไร? เป็นไอคอน Docker ในทาสก์บาร์ของ Windows หรือไม่
Peter Mortensen

2
@PeterMortensen ว่าสิทธิของมันเทียบท่าที่ไอคอนในแถบงาน
benscabbia

นอกจากคำตอบก่อนหน้านี้ฉันยังต้องลบแอตทริบิวต์ "อ่านอย่างเดียว" ของ C: \ WINDOWS \ System32 \ drivers \ etc \ hosts.etc
Thiago Custodio

3
บน Windows คุณสามารถค้นหาไฟล์ปรับแต่งได้โดยตรงที่ '% programdata% \ docker \ config \ daemon.json' และตั้งค่าคุณสมบัติที่นั่น
NemyaNation

1
หากคุณกำลังใช้งาน Docked (daemon) จาก--experimentalคุณลักษณะการใช้ไบนารีแบบสแตนด์อโลน
Anwar

91

อาจมีสาเหตุหลายประการสำหรับข้อผิดพลาดนี้ แต่เหตุผลที่ชัดเจนที่สุดสำหรับข้อผิดพลาดนี้คือการใช้ Windows Container ใน Linux Container Mode หรือในทางกลับกัน

  1. คลิกที่ไอคอน Docker ใน System Tray ในเมนูบริบท
  2. คลิก "เปลี่ยนเป็นหน้าต่าง / คอนเทนเนอร์ Linux"
  3. ตัวเลือกคลิกปุ่ม Switch ใน Switch Dialog
  4. อาจใช้เวลาเล็กน้อย
  5. ตรวจสอบให้แน่ใจว่า Docker กำลังทำงานอยู่ในขณะนี้

สลับไดอะล็อกโหมดคอนเทนเนอร์


3
มันแก้ไขปัญหาของฉันเกี่ยวกับ "ไม่มีรายการที่ตรงกันสำหรับ windows / amd64"
winlinux

1
คุณควรตอบคำถามนี้stackoverflow.com/questions/56005151/ …
xpto

1
มันทำงานสำหรับฉันกับปัญหา 'ไม่มีรายการที่ตรงกันสำหรับ windows / amd64 10.0.17134 ในรายการรายการรายการ'
Amna

86

คุณอยู่ในโหมดคอนเทนเนอร์ของ Windows ดังนั้นหากคุณไม่แน่ใจว่าภาพที่คุณต้องการดึงนั้นสร้างขึ้นสำหรับสถาปัตยกรรม Windowsคุณต้องเปลี่ยนเป็นคอนเทนเนอร์ Linux


1
ทางเลือก (ที่ฉันยังพบว่ากำลังทำงาน) อยู่ในคำตอบของชัค
Peter Mortensen

3
วิธีนี้แก้ไขปัญหาได้ ฉันใช้แพลตฟอร์ม Windows 10
Somnathchakrabarti

เมื่อสวิตช์ล้มเหลว มันเป็นการหลีกเลี่ยงวิธี
Tiago Medici

1
หากคุณเปลี่ยนไปใช้ Linux Containers คุณจะสามารถโฮสต์แอปพลิเคชัน Windows ภายใน Docker ได้หรือไม่ ตัวอย่างเช่นการใช้ IIS และ MySQL ในอินสแตนซ์ Docker เดียวกัน
webworm

@webworm เนื่องจากมี MySQL สำหรับ Windows ด้วยเหตุใดจึงต้องใช้รุ่น Linux เมื่อคุณต้องการผสมกับ IIS และไม่ใช่แค่ใช้รุ่น Windows
George Birbilis

35

อีกวิธีที่เป็นไปได้ในการทำเช่นนี้:

Switch to Linux containersในถาดระบบคลิกขวาที่ไอคอนนักเทียบท่าแล้วคลิกที่

(Docker สำหรับ Windows, Community Edition รุ่น 18.03.1)


30

ในกรณีของฉันมันเป็นเวอร์ชัน Windows OS ที่ฉันเปิดอยู่ไม่รองรับแท็กที่ฉันพยายามดึง การใช้แท็กที่เก่ากว่านี้ทำให้ฉันสามารถใช้งานได้

โดยเฉพาะ:

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

docker pull mcr.microsoft.com/windows/nanoserver:1803-amd64 ทำงาน


นี้! Microsoft มีการเปลี่ยนแปลงบางอย่างเมื่อเทียบกับภาพเก่า ตอนนี้คุณต้องค้นหารุ่น windows ของระบบที่คุณกำลังปรับใช้และเลือกอิมเมจพื้นฐานตาม
JustCoding

1
ขอบคุณ Joedragons มาก ๆ !

คำตอบที่ดี! นี้ทำงานให้ฉันบน Windows 10 ดังต่อไปนี้การกวดวิชาdocs.microsoft.com/en-us/virtualization/windowscontainers/...
user1299379

มันทำงานได้ดีสำหรับฉัน แต่มันหมายความว่าฉันต้องมีวิธีการนี้เมื่อฉันดึงทุกภาพเช่นสวัสดีโลก?
Mandroid

@android ฉันจะสนใจในสิ่งที่คุณค้นพบ แต่บางภาพดูเหมือนจะทำงานและบางอย่างไม่ได้อยู่ในกรณีของฉันดังนั้นฉันเดาว่ามันเป็นเซ็ตอัพที่เฉพาะเจาะจงมาก เช่นถ้าคุณมีแพทช์ Windows หนึ่งอาจแตกต่างจากที่อื่น
joedragons

21

เวอร์ชัน: Windows 10

ขั้นตอนที่ 1: คลิกขวาที่อินสแตนซ์นักเทียบท่าแล้วไปที่การตั้งค่า
ป้อนคำอธิบายรูปภาพที่นี่

ขั้นตอนที่ 2: พื้นฐานถึงขั้นสูงและการตั้งค่า "ทดลอง": จริง ป้อนคำอธิบายรูปภาพที่นี่

ขั้นตอนที่ 3: รีสตาร์ท Docker
ป้อนคำอธิบายรูปภาพที่นี่

ขั้นตอนที่ 4: ในการติดตั้ง dockerfile ก็ประสบความสำเร็จ (เช่น: docker build -t williehao / cheers2019) ป้อนคำอธิบายรูปภาพที่นี่


11

คุณต้องดึงด้วยแพลตฟอร์ม Linux ก่อนจากนั้นคุณสามารถเรียกใช้บน Windows:

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

ดูโพสต์บล็อกหางสำหรับ Windows Desktop 18.02 กับ Windows 10 ฤดูใบไม้ร่วงผู้สร้างปรับปรุง


ใช่--platformธงใช้ได้เช่นกัน แม้ว่ามันอาจดาวน์โหลดสิ่งต่าง ๆ
Peter Mortensen

"- แพลตฟอร์ม" รองรับเฉพาะใน Docker daemon ที่เปิดใช้งานคุณลักษณะทดลองอยู่
Michal Špondr

6

ฉันแก้ไขมันใน Windows 10 โดยทำงานใน admin Powershell:

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

แล้ว:

./DockerCli.exe -SwitchDaemon

3

พิจารณาแอพพลิเคชั่นที่คุณใช้งานอยู่ - เป็น Windows หรือไม่ ถ้าไม่คุณต้องเปิดใช้งาน Linux container

หากไม่ใช้โหมดทดลองคุณสามารถใช้นักเทียบท่าในคอนเทนเนอร์หนึ่งรูปแบบเทียบกับอีกโหมดหนึ่งเท่านั้น หากคุณเปิดใช้งานโหมดทดลองตามที่กล่าวไว้ข้างต้นคุณสามารถใช้คอนเทนเนอร์ Windows และ Linux ได้ตามที่แอปพลิเคชันที่คุณต้องการดึงในไฟล์เขียน

หมายเหตุสำคัญ: การทดลอง - ยังอยู่ระหว่างการพัฒนาโดย Docker


3

สิ่งนี้อาจไม่เพียงเกิดขึ้นเนื่องจากหน้าต่างคอนเทนเนอร์!

ทุกวันนี้รูปภาพนักเทียบท่า Node.Js ทั้งหมดไม่สามารถดึงได้ ตรวจสอบภาพที่คุณพยายามจะดึงมาก่อนเสมอ

Github-Issue ที่เกี่ยวข้อง


3

ดูเหมือนว่า"ตัวดึงนักเทียบท่า" ล้มเหลวใน windows 10 # 1100

ถ้าเพิ่ม--experimentalไม่ทำงานพิจารณานักเทียบท่าติดตั้งใหม่สำหรับ Windows


การเพิ่ม "แบบทดลอง: จริง" ไม่ได้ผลสำหรับฉันดังนั้นฉันคิดว่าฉันลองเปลี่ยนเป็นคอนเทนเนอร์ Linux ก่อนที่จะติดตั้งตัวเทียบท่าใหม่อีกครั้งและใช้งานได้
yogescicak

บนสภาพแวดล้อม Windows ตรวจสอบว่าบริการการจัดการเครื่องเสมือน Hyper-V กำลังทำงานอยู่หรือไม่จากนั้นหลังจากติดตั้งตัวเชื่อมต่อให้สลับเป็นโหมดคอนเทนเนอร์ของ Linux
Junior Mayhé

กำลังเพิ่มexperimentalงานขอบคุณ ... ทำไมจึงเป็นเช่นนั้น
Angshuman Agarwal

@AngshumanAgarwal การใช้คุณสมบัติทดลอง ( docs.docker.com/docker-for-windows/#command-line ) เพิ่มไดรเวอร์ ( github.com/docker/cli/blob/master/experimental/ ...... ) ซึ่งอาจจำเป็นสำหรับการใช้ Docker สำหรับ ของ windows
VonC

ฉันเห็นขอบคุณสำหรับสิ่งนั้น แต่ฉันยังคงเห็นปัญหาเกี่ยวกับ Windows 10 Doc บอกว่า Docker ทำงานได้ตามปกติ ฉันต้องเปลี่ยนไปใช้ "ตู้คอนเทนเนอร์ Linux" บน Windows 10 เพื่อให้ทุกอย่างทำงานได้
Angshuman Agarwal

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 HostedแทนHosted อูบุนตู หลังจากเปลี่ยนแบบเดียวกันดังต่อไปนี้บิลด์ก็สำเร็จ

ป้อนคำอธิบายรูปภาพที่นี่

หวังว่ามันจะช่วย


2

นักเทียบท่าเรียกใช้ mcr.microsoft.com/windows/servercore:ltsc2016

ลองคำสั่งดังกล่าว สิ่งที่คุณกำลังดึงควรเข้ากันได้กับ Windows รุ่นพื้นฐานที่คุณอยู่ด้านบนจะทำงานได้ถ้าคุณอยู่ใน Windows Server 2016

ติดตามกระทู้นี้สำหรับข้อมูลเพิ่มเติม

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


2

คลิกขวาที่อินสแตนซ์นักเทียบท่าไปที่การตั้งค่า Daemon ขั้นสูงตั้งค่า "การทดลอง": รีสตาร์ทนักเทียบท่าที่แท้จริง

 {
      "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 โดยใช้ docker สำหรับ Windows การอ่านคำตอบของโมฮัมหมัดทราเบลซีฉันรู้ว่าการแก้ปัญหาของฉันฉันต้องเปลี่ยนคอนเทนเนอร์ (บนตัวเทียบท่า) สำหรับคอนเทนเนอร์ Windows

เพื่อทำสิ่งนี้:

  1. คลิกขวาที่อินสแตนซ์นักเทียบท่า
  2. เลือก"เปลี่ยนเป็นคอนเทนเนอร์ Windows ... "

1

บน Windows คุณต้องแก้ไขไฟล์ daemon.json หรือ windows-daemon-options.json ตำแหน่งเริ่มต้นของไฟล์กำหนดค่าใน Windows คือ% programdata% \ docker \ config \ daemon.json หรือ% programdata% \ docker \ resources \ windows -daemon-options.json

ป้อนคำอธิบายรูปภาพที่นี่ ป้อนคำอธิบายรูปภาพที่นี่

ป้อนคำอธิบายรูปภาพที่นี่

ป้อนคำอธิบายรูปภาพที่นี่

คุณลักษณะฟิลด์เผื่อเลือกบนไฟล์ json อนุญาตให้ผู้ใช้เปิดใช้งานหรือปิดใช้งานคุณลักษณะ daemon เฉพาะ ตัวอย่าง: {"features": {"buildkit": true}} เปิดใช้งาน buildkit เป็นเครื่องมือสร้างรูปภาพ docker เริ่มต้น


0

เหตุผลที่แสดงข้อความนี้เนื่องจากไม่สามารถค้นหาคอนเทนเนอร์ Linux ว่าทำงานอยู่ ดังนั้นให้แน่ใจว่าคุณเปลี่ยนจาก windows เป็น linux container ก่อนเรียกใช้


0

สำหรับฉันมันเป็นเพราะการเข้าถึงถูกปฏิเสธไปยัง C: \ ProgramData \ Docker \ config \ daemon.json หลังจากที่ฉันแก้ไขตอนนี้มันใช้งานได้ คุณสามารถลองเปลี่ยนเป็นคอนเทนเนอร์ Linux และสลับกลับ หากไม่มีปัญหากับการสลับก็จะทำงานกับสิทธิ์การเข้าถึง


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.