🛠 Conteneuriser avec Docker sur le PC x86 embarqué
Objectifs
La LattePanda 3 Delta est un PC x86-64 complet : contrairement aux SBC ARM, toutes les images Docker officielles du registre (amd64) tournent sans émulation. Ce tutoriel installe Docker Engine sous Ubuntu 22.04, lance un premier conteneur, puis déploie une petite pile de services avec docker compose en tenant compte des contraintes embarquées : eMMC de 64 Go (dimensionner les volumes), TDP de 10 W (limiter la CPU), alimentation 12 V/24 W. On termine par le démarrage automatique au boot.
Matériel
- LattePanda 3 Delta sous Ubuntu 22.04, connectée à Internet (voir le tutoriel Wi-Fi/Ethernet)
- Espace disque : vérifier
df -h /avant de tirer des images (eMMC 64 Go au total) - Optionnel pour la production : SSD NVMe dans le slot M.2 Key M 2280 (PCIe 3.0 x2) pour décharger l'eMMC
Code complet
# 1. Installer Docker Engine (paquet Ubuntu standard, architecture amd64)
sudo apt update
sudo apt install -y docker.io docker-compose-plugin
sudo usermod -aG docker $USER # puis se reconnecter
# 2. Premier conteneur de test
systemctl --now enable docker
docker run --rm hello-world
# 3. Petite pile de services — fichier compose.yaml
mkdir -p ~/pile && cd ~/pile
# compose.yaml — pile embarquée légère
services:
web:
image: nginx:alpine
ports: ["8080:80"]
restart: unless-stopped
deploy:
resources:
limits:
cpus: "1.0" # le N5105 a 4 threads, on ménage la carte
memory: 256M
mosquitto:
image: eclipse-mosquitto:2
ports: ["1883:1883"]
volumes:
- ./mosquitto:/mosquitto/data
restart: unless-stopped
# 4. Démarrer et vérifier
docker compose up -d
docker compose ps
docker stats --no-stream # surveiller la CPU pendant la charge
curl -sI http://localhost:8080 | head -1
Vérification attendue
hello-world s'affiche, docker compose ps montre les deux services Up, et le curl renvoie HTTP/1.1 200 OK. Après sudo reboot, les conteneurs redémarrent seuls grâce à restart: unless-stopped. docker system df permet de surveiller l'occupation de l'eMMC.
Erreurs fréquentes
- Images ARM introuvables : beaucoup de tutoriels SBC citent des images
linux/arm64; ici il fautamd64— c'est justement l'avantage x86 de la carte. - eMMC saturée : 64 Go partagés avec l'OS ; purger avec
docker system prune -aet déplacer/var/lib/dockersur un NVMe M.2 si installé. - Chaleur/bruit : le refroidissement est actif mais le ventilateur ne démarre qu'au seuil configuré dans le BIOS (comportement normal, FAQ) ; limiter les CPU des conteneurs évite d'atteindre le seuil.
permission deniedsur le socket Docker : il faut se reconnecter après leusermod -aG docker.- Coupure d'alimentation pendant des écritures : pour un poste non-ondule, prévoir une alimentation conforme (USB-C PD ou JST 12 V, bascule automatique entre les deux entrées) ou l'UPS Hat DFR0682 en HID-UPS.
- Watchdog actif : si un garde-fou IT8613E est armé sur la carte, le suspendre avant les mises à jour longues (documenté pour Windows Update, même prudence ici).
Autres tutoriels pour cette carte
Exemples de code pour cette carte
clignotante.pyPythonbouton.pyPythonservo.pyPythonanalogique.pyPythonrespiration.pyPythonneopixel.pyPython