Как получить образы ARM Docker при создании devcontainer в VS Code? (макинтош м1)

После покупки нового Mac M1 я решил переустановить существующие контейнеры разработки vscode, используя функцию Клонировать репозиторий в томе контейнера.

Вроде работало, но потом я сразу заметил, что он очень медленный, глючный, и использовал QEMU.

Прочитав это на официальной странице Docker M1:

Однако попытки запустить контейнеры на базе Intel на компьютерах Apple M1 могут привести к сбою, поскольку QEMU иногда не может запустить контейнер. Поэтому мы рекомендуем вам запускать контейнеры ARM64 на машинах M1. Эти контейнеры также быстрее и используют меньше памяти, чем контейнеры на базе Intel.

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

Для создания этих контейнеров я выбрал образы из MCR (здесь). На всех них я замечаю тег x86-64, про ARM ни слова. Означает ли это, что Microsoft фактически не предоставляет официального образа ARM?

Если да, то как мне сделать, чтобы иметь чистые контейнеры разработки с использованием образов ARM? Стоит ли ждать обновления MCR? Или я должен выбрать другие образы, а не Microsoft? Я что-то упускаю?


Я использую:

  • Код ВС 1.54.1
  • Предварительная версия Docker для настольных ПК 3.1.0 (60984)
  • Mac OS BigSur 11.2.1

person David D.    schedule 05.03.2021    source источник


Ответы (2)


Если вам нужны определенные контейнеры MCR, вам нужно будет подождать, пока они станут доступны для arm64.

Однако, если вам не нужен конкретный образ, у вас есть достаточное количество образов Docker, созданных для arm64, которые можно найти в Docker HUB. Вы можете выполнить поиск arm64v8 или найти изображение и проверить, отображается ли тег arm64

В обоих случаях вы можете попытаться вытащить любой образ для архитектуры платформы linux/arm64 следующим образом:

docker pull --platform linux/arm64 image

Последний вариант для вас, чтобы создать свой собственный образ. Это может занять много времени, так как вы можете столкнуться с необходимостью переноса некоторых библиотек на arm64v8.

person jordanvrtanoski    schedule 05.03.2021

После ответа jordanvrtanoski,

Я решил использовать официальные образы Docker, изначально совместимые с arm64. В промежутке я понял, что в изображениях MCR нет ничего сумасшедшего или невозможного для воспроизведения. Они предоставляют базовые шаблоны, которые используют для своих изображений здесь

Поскольку я использую пользователя root в своих контейнерах и мне не нужно много дополнительных двоичных файлов, единственное, что я выбрал из этих образов MCR, — это настройка файла bashrc, чтобы иметь настраиваемое приглашение, цвета для ls cmd и псевдонимы.

Все работает, как и ожидалось, и стало чище, поскольку теперь известна каждая строка моего файла Dockerfile и полезна для меня.

person David D.    schedule 16.03.2021