docker-hello.sh
La X8 es la placa Arduino que ejecuta Docker: este script verifica el motor, despliega un servidor web contenerizado con rearranque automático y lo prueba con curl. La app en contenedor convive con el tiempo real Arduino.
Hardware
Un Arduino Portenta X8 (módulo ST STM32MP1: quad Cortex-A7 Linux + doble núcleo Cortex-M4 de tiempo real, 8 GB eMMC, 2 GB LPDDR4, Wi-Fi/BT integrados, opción LTE). Ninguno; red para descargar la imagen (o registro local).
Cableado
Nada que cablear. La placa debe estar en la red para descargar la imagen.
Funcionamiento
docker run -d desancla el contenedor, --restart lo relanza tras reinicio, -p publica el puerto. curl valida la respuesta HTTP local.
Ejecución
Lado Linux: acceso SSH (USB-C routed o red) sobre la imagen Portenta Linux, scripts bash/Python. Lado tiempo real: Arduino IDE con el core « Arduino Mbed OS Portenta X8 Boards », núcleo M7 de aplicación, grabado vía mboot desde Linux.
Variantes
Desplegar tu propio servicio Python en contenedor, u orquestar varios microservicios con docker compose embarcado.
docker-hello.sh
#!/bin/bash
# Docker embarque : la signature applicative de la Portenta X8.
# Verifier la presence du moteur puis lancer une charge utile utile.
if ! command -v docker >/dev/null; then
echo "Docker absent : activer le composant container de l'image X8"
exit 1
fi
docker --version
docker info --format 'stockage: {{.Driver}} noyau: {{.KernelVersion}}'
# Petit service web embarque (image ARM compatible X8).
docker run -d --name webtest --restart unless-stopped \
-p 8080:80 nginx:alpine || {
echo "verifier l'architecture de l'image (arm)"; exit 1; }
sleep 2
echo "Test HTTP local :"
curl -s -o /dev/null -w "code %{http_code}\n" http://localhost:8080/
echo
echo "Conteneurs : (docker ps)"
docker ps --format 'table {{.Names}}\t{{.Status}}'
# Nettoyage : docker rm -f webtest