Table des matières:

Créer une image Docker pour Raspberry Pi : 7 étapes
Créer une image Docker pour Raspberry Pi : 7 étapes

Vidéo: Créer une image Docker pour Raspberry Pi : 7 étapes

Vidéo: Créer une image Docker pour Raspberry Pi : 7 étapes
Vidéo: Dockerfile >Docker Image > Docker Container | Beginners Hands-On | Step by Step 2024, Novembre
Anonim
Créer une image Docker pour Raspberry Pi
Créer une image Docker pour Raspberry Pi

Ces instructables montrent comment créer une image Docker pour Raspberry Pi.

Étape 1: Pourquoi Docker ?

Vous pouvez utiliser Raspberry Pi (RPi) pour faire beaucoup de choses, un petit serveur Web, un assistant IA, la robotique… etc.

De nombreux projets que vous voulez essayer, mais les points faibles sont:

Il est temps de construire

RPi n'aime pas la puissance de traitement et le lecteur SD/USB a limité la vitesse d'E/S. L'utilisation d'apt install tous les packages de dépendances nécessite une heure et la construction de la source nécessite plus d'heures. Surtout pour les projets liés à l'IA, le temps d'attendre plus que le temps d'essayer.

Conflit de versions

Tout le monde essaie de nombreux projets dans un seul RPi. Lorsque vous avez essayé un projet et que vous souhaitez passer à un autre, vous pouvez rencontrer des échecs de construction causés par un conflit de version des bibliothèques de dépendances avec le projet précédent. Certaines bibliothèques cessent de se développer il y a quelques années et dépendent de très vieilles bibliothèques. En revanche, le projet actif dépendait des dernières bibliothèques. Les deux projets ne peuvent pas coexister sur la même clé SD/USB ?.

Sauvegarde d'images

Étant donné que certains projets ne peuvent pas coexister, il suffit d'acheter plus de lecteur SD/USB pour que chaque image de projet dépende. Si l'argent n'est pas limité?. Mais cela augmente les difficultés de gestion des fichiers/images, parfois vous avez besoin d'échanger SD/USB et de démarrer plusieurs fois pour savoir ce que vous voulez.

Difficile à partager

Lorsque vous avez construit votre projet et que vous souhaitez partager la source avec des amis, vos amis peuvent recevoir un retour d'information sur l'échec de la construction. Version distribution/bibliothèques trop ancienne ou trop récente, paramètres de construction et quelques astuces. Vous devez passer du temps à résoudre les problèmes de construction des autres, mais pas à soutenir le projet lui-même.

Les points douloureux ci-dessus sont mon expérience au cours de ces quelques années. Docker peut vous aider dans la plupart des cas.

Docker démarre la construction à partir de la sélection d'une image parent prédéfinie. Par exemple. debian:jessie-slim démarre à partir d'une ancienne distribution Debian stable et légère; node:10-buster-slim démarre à partir de la distribution légère de Debian avec Node.js 10 installé. L'image prédéfinie peut faire gagner beaucoup de temps pour flasher l'image, obtenir la mise à jour et installer les bibliothèques dépendantes. Chaque projet peut démarrer à partir d'une version du système d'exploitation, d'une version d'exécution et d'une version des bibliothèques différentes. Lorsque vous avez terminé de développer votre propre projet, vous pouvez transférer l'image Docker vers Docker Hub et la partager avec tout le monde. Vous pouvez conserver toutes les données du projet sur la même carte SD/USB (les données doivent être sauvegardées régulièrement sur d'autres supports). Pour économiser le stockage local, vous pouvez même nettoyer l'image Docker lorsqu'elle n'est pas utilisée, chaque fois que vous pouvez à nouveau extraire du hub Docker.

Étape 2: Docker Overhead

Docker a ajouté une couche de virtualisation, la surcharge est un problème. Je n'ai pas trop testé sur la surcharge Docker. La plupart des résultats recherchés sur Google réclament des frais généraux très faibles et j'ai trouvé ce document sur certaines recherches connexes:

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

Étape 3: Installer Docker

Exécutez simplement:

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

Réf.:

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

docs.docker.com/get-started/

Étape 4: Création d'une image Docker

Veuillez trouver le guide officiel sur la création d'une image Docker:

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

J'ai 2 projets utilisant Docker, vous pouvez trouver le Dockerfile comme référence:

BanateCAD nécessite le runtime Lua et quelques bibliothèques Lua supplémentaires. Seule Lua 5.1 peut être compatible avec toutes les bibliothèques Lua requises, mais c'est le produit de 2006. La dernière distribution Debian qui peut construire le succès de Lua 5.1 est Jessie (la version avant l'ancienne Debian actuelle). J'ai donc construit un environnement Docker Image Lua 5.1 pour l'exécuter

github.com/moononournation/BanateCAD/tree/…

OpenCV est un projet en développement actif, le code source dépend des dernières bibliothèques et compilateurs. Il est donc très probable que la construction ait échoué, signature de méthode de bibliothèque, version du compilateur, conflit de dépendance… J'aimerais utiliser opencv4nodejs pour créer une application simple et ne nécessite pas les dernières fonctionnalités. Donc, quand j'ai trouvé un moyen de créer le succès d'opencv4nodejs, j'aimerais le congeler dans une image Docker et faire mon codage d'application réel

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

Étape 5: Vitesse de construction du développement par rapport à la taille de l'image

Vitesse de construction du développement par rapport à la taille de l'image
Vitesse de construction du développement par rapport à la taille de l'image
Vitesse de construction du développement par rapport à la taille de l'image
Vitesse de construction du développement par rapport à la taille de l'image

Vous pouvez trouver que mon projet face-aware-photo-osd a 2 versions de Dockfile:

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

Pendant le développement, j'aime diviser la commande RUN aussi petite que possible et organiser le plus probablement pour changer la commande RUN à la dernière étape. Ainsi, pour chaque changement de build pour le développement, je peux utiliser autant que possible la couche construite précédente et économiser beaucoup de vitesse de construction.

En revanche, je combinerai toutes les commandes RUN en une seule avant la publication. une couche moindre peut réduire considérablement la taille de l'image Docker. Mon projet face-aware-photo-osd, par exemple, peut réduire la taille de plus de 100 Mo.

Étape 6: Images multi-arcs

Images multi-arcs
Images multi-arcs

Comme mentionné précédemment, RPi n'aime pas la puissance de traitement. Utiliser l'image Docker de build RPi peut ne pas être un bon choix, surtout lorsque votre seul RPi exécute un autre projet.

Utiliser un ordinateur x86 peut également vous aider à créer l'image Docker, veuillez trouver plus de détails ici:

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

2 commandes simples peuvent créer x86 et ARM Docker Image en parallèle:

docker buildx create --use

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

Multi Arch peut créer une image multiplateforme avec la même balise d'image Docker, afin que votre projet puisse s'exécuter de manière transparente sur différentes machines. par exemple.

docker exécuter -it moononournation/debian-imagemagick-lua-meshlab:1.0.1

Peu importe que vous exécutiez la commande ci-dessus sur RPi ou votre ordinateur x86, vous pouvez obtenir un environnement d'exécution Lua.

Étape 7: Bon RPi

Vous pouvez désormais développer et partager votre projet RPi plus facilement !

Conseillé: