Điểm:0

Di chuyển bộ chứa docker từ máy chủ dựa trên linux sang AWS

lá cờ in

Tôi đang cố di chuyển một bộ chứa đang chạy trên máy chủ dựa trên linux sang AWS. Tôi đang thực hiện cam kết-lưu-tải.

Sau khi thực hiện cam kết lưu tải, hình ảnh docker được tạo. Sau đó tôi đã chạy hình ảnh docker này bằng lệnh

docker chạy <image_name>

Nhưng tôi nhận được lỗi sau

Nền tảng của hình ảnh được yêu cầu (linux/AMD64) không phù hợp với đã phát hiện nền tảng máy chủ (linux/arm64/v8) và không có nền tảng cụ thể nào yêu cầu

standard_init_linux.go:228: quá trình người dùng exec gây ra: định dạng exec lỗi

Tôi đã thử chạy hình ảnh docker bằng cách sử dụng

docker run --platform linux/amd64 <image_name>

Ngay cả điều đó cũng không giải quyết được vấn đề. Có cùng một lỗi

Điểm:1
lá cờ ca

Bạn không thể chỉ chạy một hình ảnh AMD64 (chính xác hơn là cùng một bản tóm tắt hình ảnh) trên nền tảng ARM, ngay cả khi hình ảnh mà nó dựa trên đó có nhiều tính năng nền tảng.

nói cách khác, nó sẽ không hoạt động với thủ tục cam kết/lưu/tải.

Bản thân hình ảnh thường cần được xây dựng (docker buildx build --platform linux/arm64/v8,linux/amd64,...) dựa trên Dockerfile cho mọi nền tảng đích.

Trong trường hợp bạn không có Dockerfile (thói quen xấu), bạn có thể thử đảo ngược Dockerfile từ một hình ảnh (đến một mức nhất định) bằng cách sử dụng lịch sử docker và/hoặc https://github.com/mrhavens/Dedockify

Mặc dù buildx là cách chính xác để làm điều đó, nhưng bạn có thể - để đơn giản - chỉ cần Legacy-build (xây dựng docker) hình ảnh trực tiếp trên máy aws ARM của bạn nếu bạn chỉ muốn chạy nó một lần và nhanh chóng

(vẫn yêu cầu Dockerfile â không thể chuyển đổi hình ảnh sang nền tảng khác)

sgohl avatar
lá cờ ca
Tôi sẽ không đề cập đến nó trong câu trả lời, nhưng nếu bạn vô tình chọn nền tảng ARM, chỉ cần khởi chạy máy x86_64 (bất kỳ loại phiên bản nào không phải là *)
The Beast avatar
lá cờ in
Ồ.. hiểu rồi. Cảm ơn
The Beast avatar
lá cờ in
Có cách nào để xây dựng hình ảnh Docker đa kiến ​​trúc từ vùng chứa không?
Điểm:0
lá cờ cn

Nếu bạn cài đặt Qemu trên máy AWS Arm, bạn có khả năng có thể chạy hình ảnh x86_64, nhưng hình ảnh này sẽ chạy trên CPU mô phỏng sẽ có chi phí hoạt động lớn.

Giả sử một máy chủ dựa trên Debian/Ubuntu

sudo apt-get cài đặt qemu binfmt-support qemu-user-static 
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
docker run --platform linux/amd64 <image_name>

Lệnh đầu tiên cài đặt lớp mô phỏng, lệnh thứ hai cho hạt nhân biết nơi tìm trình giả lập để chạy vùng chứa, bạn sẽ cần thực hiện bước thứ hai mỗi khi máy chủ được khởi động lại.

Như đã nêu cả ở đây và trên câu hỏi khác của bạn Chính xác điều cần làm là sử dụng Dockerfile để xây dựng vùng chứa của bạn vì theo cách đó, bạn sẽ có cách lặp lại để xây dựng vùng chứa của mình cho bất kỳ kiến ​​trúc nào bạn yêu cầu (bạn cũng có thể sử dụng các bước tôi đã đề cập ở trên để tạo hình ảnh cho Arm64 trên máy X86_64 của mình như mô tả đây)

The Beast avatar
lá cờ in
Hiểu rồi .. cảm ơn
lá cờ cn
@TheBeast https://serverfault.com/help/someone-answers

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.