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, сборка завершится без проблем.

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

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
60
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

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

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

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