не удалось загрузить /usr /bin/ dotnet: ошибка формата exec

#c# #.net #docker #digital-ocean-apps

#c# #.net #docker #digital-ocean-apps

Вопрос:

Я пытаюсь использовать DigitalOcean для размещения контейнера C # docker в docker hub (с платформой приложений)

[2021-12-08 23:24:04] starting container: starting non-root container [dotnet Alace.cs.dll]: creating process: failed to load /usr/bin/dotnet: exec format error

Контейнер отлично работает на моем компьютере.

Ответ №1:

Ваш образ создан для процессора Arm, а компьютер DigitalOcean, вероятно, является компьютером amd64.

Вы можете попробовать выполнить сборку для amd64 с помощью команды buildx. Что-то вроде

 docker buildx build --platform linux/amd64 -t alyxw/alace-cs:amd64 .
 

Комментарии:

1. Странно, что OP может запускать эту штуку на своем компьютере. Может быть, они используют компьютер Apple с процессором M1?

2. У многих людей есть Macbook M1, так что это не так странно 🙂

3. Да, я на m1, большое вам спасибо!

4. @Alyx Рассмотрите возможность использования процессоров ARM64 и в облаке. Однажды я создал облачное приложение на .NET Core, работающее в общедоступном облаке, в моем случае виртуальные машины ARM, которые я в итоге использовал, были в 2,5 раза дешевле, чем традиционные виртуальные машины AMD64. Еще один приятный побочный эффект — вам не понадобится другая версия этих образов docker. Однако однопоточная производительность лучше на традиционных Xeon и Epic, так что это компромисс.

5. @Soonts вы знаете, поддерживает ли DigitalOcean ARM64? У меня есть куча кредитов с ними, поэтому я полон решимости заставить это работать