🛠 Docker dès la sortie de l'emballage : premier conteneur sur le Linux embarqué
Objetivos
El verdadero superpoder de la X8: su Linux embebido (Linux microPlatform, distribución Yocto de Foundries.io) incluye Docker preinstalado. Las aplicaciones se ejecutan en contenedores desacoplados del SO — despliegue modular, OTA incremental, imágenes listas para usar en Docker Hub arduino. Vas a lanzar tu primer contenedor, entender la historia de los permisos de docker y extraer una imagen oficial de Arduino.
Material
- 1 × Arduino Portenta X8 alimentado vía USB-C
- PC con adb (tarjeta visible por
adb devices) - Conexión a Internet en la red de la tarjeta (Wi-Fi o Ethernet a través de la placa base — ver el tutorial de red; por defecto la X8 no tiene conector RJ45 directo)
- 16 GB de eMMC embebidos: las imágenes Docker caben holgadamente
Código completo
# Depuis le PC :
adb shell
# fio@portenta-x8:~$
# Permission docker : la doc officielle recommande d'abord :
newgrp - docker
# Le test canonique, fonctionne out of the box :
docker run hello-world
# -> "Hello from Docker! This message shows that your installation...
# Images officielles Arduino sur Docker Hub (org « arduino ») :
docker pull arduino/python-rpc-serial
# Lancer le conteneur officiel du tuto python-arduino-data-exchange :
docker run -d \
--name python-rpc-serial \
--restart unless-stopped \
-e PYTHONUNBUFFERED=1 \
--tty \
--read-only \
-p 5002-5020:5002-5020 \
-v /tmp:/tmp \
--device /dev/ttyGS0 \
arduino/python-rpc-serial
# Inventaire local
docker images
docker ps -a
Verificación esperada
docker run hello-world muestra el mensaje de bienvenida en unos segundos (incluida la descarga) — prueba de que el demonio Docker, el almacenamiento en la eMMC y la red funcionan. El contenedor arduino/python-rpc-serial se inicia en segundo plano (docker ps lo lista como « Up »): expone los puertos RPC 5002-5020 y el dispositivo serie /dev/ttyGS0, la puerta de enlace hacia el sketch M4 del siguiente tutorial.
Errores frecuentes
permission denieden/var/run/docker.sock: es LA trampa documentada — ejecutanewgrp - dockeren tu sesión adb antes de cualquier comando docker (si no, pasa a root).- Creer que los contenedores persisten tras borrar una imagen:
docker rm+docker rmiborran realmente; para volver a un sistema limpio, el procedimiento oficial es volver a flashear la imagen (tutorial image-flashing). docker pullque falla: ¡no hay red! La tarjeta desnuda no tiene ni RJ45 ni cable Ethernet — verifica primero que el Wi-Fi o el Ethernet en la placa base estén montados (tutorial de red).- Contenedor
--read-onlyque se queja al escribir en /tmp: por eso la imagen oficial monta-v /tmp:/tmpen lectura/escritura — no elimines este montaje. - Confundirlo con una Raspberry Pi: aquí no hay apt ni RaspiOS, es Yocto; los paquetes del sistema se gestionan al compilar la imagen (o
opkgpara paquetes de prueba), no con un gestor de paquetes clásico. - >
Otros tutoriales para esta placa
- Premiers pas : comprendre le monstre à 9 cœurs et entrer dans Linux via ADB
- Premier sketch sur le cœur M4 : le blink qui se flash par ADB
- Pont Linux ↔ Arduino : appeler des fonctions du sketch M4 depuis Python (RPC)
- Mettre la X8 en réseau : Wi-Fi du Murata 1DX et Gigabit Ethernet sur porteuse
- Nœud IoT de datalogging : capteurs sur le M4, stockage et transport en conteneur
- Le firmware caché : mettre à jour le bridge STM32H7 M7 qui expose les périphériques à Linux
Ejemplos de código para esta placa
etat-systeme.shBashgpio-libgpiod.shBashpython-gpio.pyPythondocker-hello.shBashflasher-core-arduino.shBashwifi-nmcli.shBash