Docker застрял при обновлении apt-get на M1 Mac (Apple Silicone)

У меня есть файл докера, который собран из базового образа node:bullseye-slim

Ниже приведен базовый файл докера.

FROM  --platform=linux/amd64  node:bullseye-slim
RUN cat /etc/apt/sources.list
RUN apt-get update -y

RUN apt-get install curl -y

Изначально я не использовал --platform=linux/amd64, и сборка завершилась без ошибок, но это привело к сборке образа в архитектуре arm/64, что привело к проблемам с запуском образа. Основываясь на своем поиске, я обнаружил, что добавление --platform=linux/amd64 гарантирует, что образ построен на архитектуре x86, как того требует одна из библиотек, которые я использую.

Поэтому я решил добавить --platform=linux/amd64. Но с тех пор, когда я пытаюсь построить образ, он застревает на шаге RUN apt-get update -y. Я оставил его работать на ночь (более 10 часов), и он все равно застрял на ступеньке.

Я также запустил сборку с флагом --progress=plain, чтобы получить более подробные логи, но логов для apt-get update нет, и кажется, что она просто застряла на шаге.

Вывод следующий

#1 [internal] load build definition from Dockerfile
#1 transferring dockerfile: 30B
#1 transferring dockerfile: 331B done
#1 DONE 0.0s

#2 [internal] load .dockerignore
#2 transferring context: 34B done
#2 DONE 0.0s

#3 [internal] load metadata for docker.io/library/node:bullseye-slim
#3 DONE 1.2s

#4 [1/8] FROM docker.io/library/node:bullseye-slim@sha256:22a517a42af0f2bf961e12daa3a940244e5ddf450c6da6c0e245b652f1027713
#4 DONE 0.0s

#5 [2/8] RUN cat /etc/apt/sources.list
#5 CACHED

#6 [internal] load build context
#6 transferring context: 757B done
#6 DONE 0.0s

#7 [3/8] RUN apt-get update -y

Я использую это на новом MacBook Pro 14 дюймов с чипом M1 Pro.

Я пробовал запускать docker system prune -a и снова пытаться строить, но все равно зависает. Я пытался использовать node:bullseye вместо node:bullseye-slim, но все равно застревал. Если я удалю --platform=linux/amd64, сборка завершится без проблем.

Любая идея, в чем проблема и как я могу ее решить?

3 метода стилизации элементов HTML
3 метода стилизации элементов HTML
Когда дело доходит до применения какого-либо стиля к нашему HTML, существует три подхода: встроенный, внутренний и внешний. Предпочтительным обычно...
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
0
0
60
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Так, Кажется, перезапуск докера сработал, не могу поверить, что не подумал об этом раньше. Я сделал обрезку системы, но никогда не перезапускал докер.

Для всех, кто сталкивается с подобной проблемой, попробуйте перезапустить докер.

Другие вопросы по теме