Docker: Không có bảng kê khai phù hợp cho windows / amd64 trong danh sách mục nhập tệp kê khai


151

Tôi sử dụng Docker trên Windows và khi tôi cố gắng kéo một hình ảnh PHP bằng lệnh này

$ docker pull php

Tôi nhận được tin nhắn này:

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

Làm thế nào tôi có thể khắc phục vấn đề này?


5
Để giúp đỡ người khác, tôi đã gặp phải lỗi này khi tạo hình ảnh cho linux làm HĐH cơ sở .... Lý do lỗi này là do nó được đặt cho các thùng chứa windows nên sau đó tôi chuyển sang các thùng chứa Linux sau đó nó bắt đầu hoạt động ...
Abhishek Jain

Ngoài ra, cho hậu thế: Tôi đã xây dựng một container Windows. Mặc dù tôi đã chuyển sang Windows, nhưng dường như nó đã chuyển trở lại Linux. Thay đổi nó trở lại Windows đã khắc phục vấn đề.
John MacIntyre

Câu trả lời:


214

Tôi gặp vấn đề tương tự trên Windows 10. Tôi đã bỏ qua nó bằng cách chạy trình nền Docker ở chế độ thử nghiệm:

  1. Nhấp chuột phải vào biểu tượng Docker trong Khay hệ thống Windows
  2. Chuyển đến Cài đặt
  3. Daemon
  4. Nâng cao
  5. Đặt "experimental": true
  6. Khởi động lại Docker

6
Làm thế nào để bạn nhấp chuột phải vào ví dụ Docker? Đây có phải là biểu tượng Docker trong thanh tác vụ của Windows không?
Peter Mortensen

2
@PeterMortensen đúng, đó là biểu tượng Docker trong thanh tác vụ
benscabbia

Bên cạnh các câu trả lời trước đó, tôi cũng phải xóa thuộc tính "chỉ đọc" của C: \ WINDOWS \ System32 \ driver \ etc \ hosts.etc
Thiago Custodio

3
Trên Windows, bạn có thể định vị tệp cấu hình trực tiếp tại '% chương trình% \ docker \ config \ daemon.json' và đặt các thuộc tính ở đó.
NemyaNation

1
Nếu bạn đang chạy neo (daemon) từ --experimentaltính năng sử dụng nhị phân độc lập
Anwar

91

Có thể có nhiều lý do cho lỗi này. Nhưng lý do rõ ràng nhất cho lỗi này là sử dụng Windows Container trong Chế độ chứa Linux hoặc ngược lại.

  1. Nhấp vào Biểu tượng Docker trong Khay hệ thống trong Menu ngữ cảnh
  2. Nhấp vào "Chuyển sang Window / Linux Container"
  3. Tùy chọn Nhấp vào nút chuyển đổi trong hộp thoại chuyển đổi
  4. Nó có thể mất ít thời gian
  5. Đảm bảo Docker đang chạy trạng thái ngay bây giờ

Chuyển hộp thoại chế độ vùng chứa


3
Nó đã giải quyết vấn đề của tôi về "không có bảng kê khai phù hợp cho windows / amd64"
winlinux

1
bạn nên trả lời câu hỏi này stackoverflow.com/questions/56005151/ từ
xpto

1
Nó hoạt động với tôi với vấn đề 'không có bảng kê khai phù hợp cho windows / amd64 10.0.17134 trong các mục trong danh sách kê khai'
Amna

86

Bạn đang ở chế độ Windows container. Vì vậy, nếu bạn không chắc chắn rằng hình ảnh bạn muốn kéo được xây dựng cho kiến ​​trúc Windows , bạn cần chuyển sang các thùng chứa Linux.


1
Giải pháp thay thế (mà tôi cũng thấy là đang hoạt động) nằm trong câu trả lời của chuck
Peter Mortensen

3
Điều này đã giải quyết vấn đề. Tôi đã sử dụng nền tảng Windows 10.
somnathchakrabarti

một khi nó thất bại để chuyển đổi? đó là một công việc xung quanh
Tiago Medici

1
Nếu bạn chuyển sang Container Linux thì bạn có thể lưu trữ các ứng dụng Windows trong Docker không? Ví dụ: sử dụng IIS và MySQL trên cùng một ví dụ Docker.
giun web

@webworm vì cũng có MySQL cho Windows, tại sao lại sử dụng phiên bản Linux khi bạn muốn trộn nó với IIS mà không chỉ sử dụng phiên bản Windows của nó?
George Birbilis

35

Một cách khác có thể để làm điều này:

Trong khay hệ thống, nhấp chuột phải vào biểu tượng docker, sau đó nhấp vào Switch to Linux containers.

(Docker cho Windows, Phiên bản cộng đồng, phiên bản 18.03.1)


30

Trong trường hợp của tôi, đó là phiên bản Windows OS mà tôi đã sử dụng không hỗ trợ thẻ tôi đang cố gắng kéo. Việc sử dụng một thẻ cũ hơn cho phép tôi làm việc này.

Đặc biệt:

docker pull mcr.microsoft.com/windows/nanoserver:1903 sai lầm

docker pull mcr.microsoft.com/windows/nanoserver:1803-amd64 đã làm việc


Điều này! Microsoft đã thay đổi một cái gì đó so với các hình ảnh cũ (servercore / nanoserver). Bây giờ, bạn cần tra cứu phiên bản windows của hệ thống mà bạn đang triển khai và chọn hình ảnh cơ sở phù hợp.
Mã hóa

1
Cảm ơn rất nhiều Joedragons!
rishi

Câu trả lời tốt đẹp! Điều này làm việc với tôi trên Windows 10 theo hướng dẫn này docs.microsoft.com/en-us/virtualization/windowscontainers/ Kẻ
user1299379

Nó cũng làm việc cho tôi. Nhưng điều đó có nghĩa là tôi cần có cách tiếp cận này khi tôi kéo mọi hình ảnh, ví dụ như hello-world?
Mandroid

@Mandroid Tôi sẽ quan tâm đến những phát hiện của bạn nhưng một số hình ảnh dường như hoạt động và một số không có trong trường hợp của tôi, vì vậy tôi đoán nó rất thiết lập cụ thể. ví dụ: nếu bạn có một bản vá Windows có thể khác nhau.
joedragons

21

Phiên bản: Windows 10

Bước 1: Nhấp chuột phải vào ví dụ Docker và vào Cài đặt
nhập mô tả hình ảnh ở đây

Bước 2: Cơ bản đến Nâng cao và đặt "thử nghiệm": true nhập mô tả hình ảnh ở đây

Bước 3: Khởi động lại Docker
nhập mô tả hình ảnh ở đây

Bước 4: Để cài đặt dockerfile thành công (ví dụ: docker build -t williehao / cheers2019.) nhập mô tả hình ảnh ở đây


11

Trước tiên, bạn cần sử dụng nền tảng Linux, sau đó bạn có thể chạy trên Windows:

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

Xem bài đăng trên blog Docker cho Windows Desktop 18.02 với Windows 10 Fall Creators Update .


Vâng, --platformcờ hoạt động quá. Mặc dù nó có thể tải lại công cụ.
Peter Mortensen

"- nền tảng" chỉ được hỗ trợ trên trình nền Docker với các tính năng thử nghiệm được bật
Michal pondr

6

Tôi đã giải quyết vấn đề này trong Windows 10 bằng cách chạy trong quản trị viên Powershell:

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

Và sau đó:

./DockerCli.exe -SwitchDaemon

3

Hãy xem xét các ứng dụng mà bạn đang kéo - chúng có dựa trên Windows không? Nếu không, bạn cần chạy một container Linux.

Không sử dụng chế độ thử nghiệm, bạn chỉ có thể sử dụng Docker theo một kiểu container so với kiểu khác. Nếu bạn kích hoạt chế độ thử nghiệm như đã đề cập ở trên, bạn có thể sử dụng các thùng chứa Windows và Linux theo yêu cầu của các ứng dụng bạn đang kéo trong tệp soạn thảo.

Lưu ý chính: Thử nghiệm - vẫn đang được Docker phát triển.


3

Điều này có thể không chỉ xảy ra do các cửa sổ container!

Ngày nay, tất cả các hình ảnh docker của Node.Js đều không thể kéo được. Luôn kiểm tra hình ảnh bạn đang cố gắng kéo trước đó.

Vấn đề liên quan đến Github


3

Điều này có vẻ như "docker pull" không thành công trong windows 10 # 1100

Nếu thêm --experimentalkhông hoạt động, hãy xem xét cài đặt lại docker cho windows .


Việc thêm "thử nghiệm: đúng" không hiệu quả với tôi, vì vậy tôi nghĩ tôi đã thử chuyển sang bộ chứa Linux trước khi cài đặt lại docker và nó đã hoạt động.
Yogescicak

Trên môi trường Windows, cũng kiểm tra xem dịch vụ quản lý máy ảo Hyper-V có chạy hay không, sau khi cài đặt docker, hãy chuyển nó sang chế độ chứa Linux.
Junior Mayhé

Thêm experimentaltác phẩm, cảm ơn ... Tại sao lại như vậy?
Angshuman Agarwal

@AngshumanAgarwal Sử dụng các tính năng thử nghiệm ( docs.docker.com/docker-for-windows/#command-line ) thêm trình điều khiển ( github.com/docker/cli/blob/master/experimental/ tựa ) có thể cần thiết để sử dụng Docker cho Các cửa sổ.
VonC

Tôi hiểu rồi, cảm ơn bạn vì điều đó. Nhưng, tôi vẫn thấy các vấn đề với Windows 10. Doc nói Docker chạy tự nhiên, nhưng, có vẻ như không phải vậy. Tôi đã phải chuyển sang "Linux container" trên Windows 10 để mọi thứ hoạt động.
Angshuman Agarwal

2

Tôi đã gặp lỗi này trong đường ống Azure DevOps của mình.

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

Vấn đề là tôi đã chọn VS2017 được lưu trữ thay vì Ubuntu được lưu trữ . Sau khi thay đổi tương tự như sau, việc xây dựng đã thành công.

nhập mô tả hình ảnh ở đây

Hy vọng nó giúp.



2

Nhấp chuột phải vào ví dụ Docker Đi tới Cài đặt Daemon Advanced Đặt "thử nghiệm": Khởi động lại Docker đúng

 {
      "registry-mirrors": [],
      "insecure-registries": [],
      "debug": true,
      "experimental": true
    }

2

Không dùng thẻ 'mới nhất'

Chúng tôi đang phản đối thẻ 'mới nhất' trên tất cả các hình ảnh cơ sở Windows của chúng tôi để khuyến khích thực hành bộ chứa tốt hơn. Vào đầu năm dương lịch 2019, chúng tôi sẽ không còn xuất bản thẻ  ; Chúng tôi sẽ lấy nó từ danh sách thẻ có sẵn.

Thay vào đó, chúng tôi khuyến khích bạn khai báo thẻ container cụ thể mà bạn muốn chạy trong sản xuất. Thẻ 'mới nhất' trái ngược với cụ thể; nó không cho người dùng biết bất cứ điều gì về phiên bản mà container thực sự khác với tên hình ảnh. Bạn có thể đọc thêm về khả năng tương thích phiên bản và chọn thẻ thích hợp trên tài liệu chứa của chúng tôi .

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


1

Tôi gặp vấn đề tương tự khi chạy Windows IIS image bằng docker cho Windows. Đọc phản hồi của Mohammad Trabelsi ở trên tôi nhận ra rằng để giải quyết vấn đề của mình, tôi cần phải chuyển các container của mình (trên docker) cho các container Windows.

Để làm điều này:

  1. Nhấp chuột phải vào ví dụ Docker
  2. Chọn "Chuyển sang bộ chứa Windows ..."

1

Trên Windows, bạn phải chỉnh sửa tệp daemon.json hoặc windows-daemon-Options.json, vị trí mặc định của tệp cấu hình trên Windows là% programdata% \ docker \ config \ daemon.json hoặc% programdata% \ docker \ resource \ windows -daemon-Options.json

nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây

nhập mô tả hình ảnh ở đây

nhập mô tả hình ảnh ở đây

Các tính năng trường tùy chọn trên tệp json, cho phép người dùng bật hoặc tắt các tính năng daemon cụ thể. Ví dụ: {"features": {"buildkit": true}} cho phép buildkit làm trình tạo hình ảnh docker mặc định.


0

Lý do nó hiển thị thông báo này là vì nó không thể tìm thấy các thùng chứa Linux khi đang chạy. Vì vậy, hãy chắc chắn rằng bạn chuyển từ windows sang linux container trước khi chạy nó.


0

Đối với tôi, đó là do quyền truy cập bị từ chối đối với C: \ ProgramData \ Docker \ config \ daemon.json Sau khi tôi sửa nó, giờ nó hoạt động. Bạn có thể thử chuyển sang các thùng chứa Linux và chuyển trở lại. Nếu không có vấn đề với việc chuyển đổi, thì nó hoạt động với quyền truy cập.


0

Trong trường hợp của tôi, tôi đã phải cập nhật các cửa sổ trước, sau đó vấn đề đã biến mất.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.