Оглавление:
- Шаг 1. Почему Докер?
- Шаг 2: накладные расходы Docker
- Шаг 3. Установите Docker
- Шаг 4: Создание образа Docker
- Шаг 5: Скорость сборки в разработке по сравнению с размером изображения
- Шаг 6: мультиарочные изображения
- Шаг 7: Счастливого RPi
Видео: Создание образа Docker для Raspberry Pi: 7 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:49
В этой инструкции показано, как создать образ 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!
Рекомендуемые:
Создание адаптера Bluetooth, часть 2 (создание совместимого динамика): 16 шагов
Создание адаптера Bluetooth, часть 2 (Создание совместимого динамика): в этой инструкции я покажу вам, как использовать мой адаптер Bluetooth, чтобы сделать старый динамик совместимым с Bluetooth. * Если вы не читали мое первое руководство по " Изготовлению адаптер Bluetooth " Я предлагаю вам сделать это, прежде чем продолжить.C
Создание машины для точечной сварки из трансформатора для микроволновой печи: 7 шагов (с иллюстрациями)
Создание машины для точечной сварки из трансформатора для микроволновой печи: в этом проекте я делаю самодельную машину для точечной сварки, которая будет использоваться для сборки аккумуляторных блоков с литий-ионными элементами 18650. У меня также есть профессиональный точечный сварщик, модель Sunkko 737G, который стоит около 100 долларов, но я с радостью могу сказать, что мой самодельный сварщик
Создание инфракрасного приемника Kodi / OSMC и сброса шляпы для Raspberry Pi: 5 шагов (с изображениями)
Создайте инфракрасный приемник Kodi / OSMC и сбросьте шляпу для Raspberry Pi: создайте ИК-приемник Kodi / OSMC и сбросьте шляпу для Raspberry Pi 3 Из комнаты я хотел бы: Управлять Kodi / OSMC, работающим на Raspberry Pi, с помощью пульта дистанционного управления Посмотрите, включен ли Raspberry Pi. Также, я бы хотел, чтобы моя семья
Создание маленьких роботов: создание роботов Micro-Sumo на один кубический дюйм и меньше: 5 шагов (с изображениями)
Создание маленьких роботов: создание роботов Micro-Sumo на один кубический дюйм и меньше: вот некоторые подробности о создании крошечных роботов и схем. В этом руководстве также будут рассмотрены некоторые основные советы и методы, которые могут быть полезны при создании роботов любого размера. Для меня одна из самых сложных задач в электронике - это увидеть, насколько малы
Создание светодиодного стилуса для сенсорного экрана и поверхности для письма, реагирующей на УФ-излучение: 5 шагов
Создание светодиодного сенсорного пера и поверхности для письма, реагирующей на ультрафиолетовые лучи: Создайте светодиодное перо, чувствительное к сенсорному переключению! В этом руководстве используются детали, которые, вероятно, лежат у большинства любителей дома, для изготовления ручки, излучающей свет от светодиода. Я использовал ультрафиолетовый светодиод для «фантомной записи»; можно покрыть белую поверхность