Оглавление:

Создание образа Docker для Raspberry Pi: 7 шагов
Создание образа Docker для Raspberry Pi: 7 шагов

Видео: Создание образа Docker для Raspberry Pi: 7 шагов

Видео: Создание образа Docker для Raspberry Pi: 7 шагов
Видео: Устанавливаем Docker на Raspberry Pi 4 без ошибок! 2024, Ноябрь
Anonim
Создайте образ Docker для Raspberry Pi
Создайте образ Docker для Raspberry Pi

В этой инструкции показано, как создать образ Docker для Raspberry Pi.

Шаг 1. Почему Докер?

Вы можете использовать Raspberry Pi (RPi) для многих вещей: крошечный веб-сервер, помощник AI, робототехнику и т. Д.

Вы хотите попробовать множество проектов, но вот болевые точки:

Время строить

RPi не любит вычислительную мощность, а SD / USB-накопитель ограничивает скорость ввода-вывода. Для использования apt install all dependency package требуется час, а для создания исходного кода требуется больше часов. Особенно для проектов, связанных с искусственным интеллектом, время ждать больше, чем время пытаться.

Конфликт версий

Каждый пробует много проектов в одном RPi. Когда вы пробовали проект и хотели бы переключиться на другой, вы можете обнаружить некоторую ошибку сборки, вызванную конфликтом версии библиотек зависимостей с предыдущим проектом. Некоторые библиотеки перестали развиваться несколько лет назад и зависят от очень старых библиотек. Напротив, активный проект зависел от последних библиотек. Оба проекта не могут сосуществовать на одном SD / USB-накопителе ?.

Резервное копирование изображений

Поскольку некоторые проекты не могут сосуществовать, просто купите больше SD / USB-накопителя, чтобы сохранить каждый образ проекта зависимым. Если деньги не ограничены ?. Но это увеличивает трудности с управлением файлами / образами, иногда вам нужно поменять местами SD / USB и загружаться много раз, чтобы узнать, что вы хотите.

Трудно поделиться

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

Вышеуказанные болевые точки - это мой опыт за эти несколько лет. Докер может в этом помочь.

Docker запускает сборку с выбора готового родительского образа. Например. debian: jessie-slim начало старого стабильного облегченного дистрибутива Debian; node: 10-buster-slim начало с облегченного распределения Debian с установленным Node.js 10. Готовый образ может сэкономить много времени на прошивку образа, обновление и установку зависимых библиотек. Каждый проект может запускаться с разной версией ОС, версией среды выполнения и версией библиотек. Когда вы закончите разработку собственного проекта, вы можете отправить образ Docker в Docker Hub и поделиться им со всеми. Вы можете хранить все данные проекта на одной и той же SD / USB-карте (данные должны регулярно копироваться на другой носитель). Для сохранения локального хранилища вы даже можете очистить образ Docker, когда он не используется, в любое время, когда вы снова можете извлечь его из концентратора Docker.

Шаг 2: накладные расходы Docker

Docker добавил один уровень виртуализации, накладные расходы вызывают беспокойство. Я не слишком много тестировал на накладные расходы Docker. Большинство результатов поиска в Google требуют очень низких накладных расходов, и я нашел этот документ о некоторых связанных исследованиях:

domino.research.ibm.com/library/cyberdig.n…

Шаг 3. Установите Docker

Просто запустите:

curl -sSL https://get.docker.com | ш

Ссылка:

www.raspberrypi.org/blog/docker-comes-to-…

docs.docker.com/get-started/

Шаг 4: Создание образа Docker

Пожалуйста, найдите официальное руководство по созданию образа докера:

docs.docker.com/get-started/part2/

У меня есть 2 проекта, использующих Docker, вы можете найти Dockerfile в качестве ссылки:

BanateCAD требует выполнения Lua и некоторых дополнительных библиотек Lua. Только Lua 5.1 может быть совместим со всеми необходимыми библиотеками Lua, но это продукт 2006 года. Последний дистрибутив Debian, который может обеспечить успех Lua 5.1, - это Jessie (версия до текущей старой стабильной версии Debian). Поэтому я создал образ Docker для среды Lua 5.1 для его запуска

github.com/moononournation/BanateCAD/tree/…

OpenCV - активно развивающийся проект, исходный код которого зависит от последних библиотек и компилятора. Так что очень высока вероятность сбоя сборки, сигнатуры метода библиотек, версии компилятора, конфликта зависимостей … Я хотел бы использовать opencv4nodejs для создания простого приложения, не требующего новейших функций. Итак, когда я нашел способ добиться успеха opencv4nodejs, я хотел бы закрепить его в образе Docker и выполнить собственное кодирование приложения

github.com/moononournation/face-aware-phot…

Шаг 5: Скорость сборки в разработке по сравнению с размером изображения

Скорость сборки по сравнению с размером изображения
Скорость сборки по сравнению с размером изображения
Скорость сборки по сравнению с размером изображения
Скорость сборки по сравнению с размером изображения

Вы можете обнаружить, что в моем проекте Face-Aware-Photo-OSD есть 2 версии Dockfile:

github.com/moononournation/face-aware-phot…

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

Напротив, перед выпуском я объединю все команды RUN в одну. меньший уровень может значительно уменьшить размер образа Docker. Например, мой проект с функцией распознавания лиц и фото-экранов может уменьшить размер более чем на 100 МБ.

Шаг 6: мультиарочные изображения

Мультиархитектурные изображения
Мультиархитектурные изображения

Как упоминалось ранее, RPi не особо нуждается в вычислительной мощности. Использование образа Docker для сборки RPi может быть не лучшим выбором, особенно когда ваш единственный RPi запускает другие проекты.

Использование компьютера x86 также может помочь вам создать образ Docker, более подробную информацию можно найти здесь:

www.docker.com/blog/multi-arch-images/

Простые 2 команды могут параллельно создавать образ Docker для x86 и ARM:

docker buildx create - использовать

docker buildx build --platform linux / amd64, linux / arm -t moononournation / debian-imagemagick-lua-meshlab: 1.0.1 --push.

Multi Arch может создавать многоплатформенный образ с одним и тем же тегом образа Docker, поэтому ваш проект может без проблем работать на разных машинах. например

docker run -it moononournation / debian-imagemagick-lua-meshlab: 1.0.1

Независимо от того, запускаете ли вы указанную выше команду на RPi или на своем компьютере x86, вы можете получить среду выполнения Lua.

Шаг 7: Счастливого RPi

Теперь вы можете легко разрабатывать и делиться своим проектом RPi!

Рекомендуемые: