Nous avons vu dans l’article précédent comment installer et le Docker Toolbox pour tester des logiciels domotique simplement sur Mac et PC. Maintenant que Docker est supporté officiellement par la fondation Raspberry, il est très facile de l’installer. Nous allons en profiter pour tester quelques logiciels domotique. Pour réaliser cet article, j’ai suivi le tutoriel d’Alex Ellis.
Sommaire
Préparer le Raspberry
Pour faire fonctionne Docker correctement, il est recommandé d’utiliser un modèle B 2/3 ou un Pi Zero (si vous avez la chance d’en posséder un !).
Allez récupérer Raspbian Jessie Lite ici. La version Lite est suffisante pour faire fonctionner Docker. Elle n’inclut aucune interface graphique.
Si vous ne l’avez pas encore, récupérez etcher ici.
Préparer la carte SD
Que vous soyez sur Mac ou PC, le plus facile est d’utiliser etcher (tutoriel si besoin) pour préparer la carte SD.
Configurer le Raspberry Pi 3 (WiFi, clavier, langue…)
Si vous avez un Raspberry Pi 3, suivez ce tutoriel pour configurer correctement votre Raspberry Pi.
Installer Docker
Maintenant que nous avons un Raspberry correctement configuré, il ne reste plus qu’à installer Docker. Une seule ligne sera nécessaire.
curl -sSL get.docker.com | sh
Soyez patient, il faut déjà télécharger Docker puis l’installer sur le Raspberry. Comptez environ 10 minutes. Si tout s’est bien passé, vous devriez avoir le rapport d’informations.
Vérifions que Docker fonctionne correctement en saisissant la commande suivante dans le Terminal.
docker version
Maintenant on va permettre à Docker de démarrer automatiquement à lancement du Raspberry.
sudo systemctl enable docker
Si vous souhaitez ajouter d’autres utilisateurs au Pi, exécutez cette commande
sudo usermod -aG docker pi
On pourrait lancer manuellement le deamon Docker mais j’ai rencontré des problèmes lors de mon test. Je vous conseil donc de faire un reboot.
sudo reboot
Voilà, Docker est prêt.
Trouver des images rpi à installer
Vous pouvez trouver des images Docker pour Raspberry sur github, mais le plus facile est encore d’aller sur le hub officiel.
Le Raspberry étant basé sur un processeur ARM, les images doivent inclure des sources adaptées pour celui-ci. Pour les identifier plus facilement, les images sont pré-fixées rpi (ou armhf). Saisissez simplement rpi dans le champ de recherche. Il y en a un peu plus de 2000 au moment de l’écriture de cet article. C’est le moment de voir comment ça fonctionne sur un exemple concret. Nous allons installer et tester 2 logiciels domotique Jeedom et Domoticz.
Test de l’image Docker Jeedom
De même que sur Mac et PC, nous allons devoir installer une image de mysql ainsi qu’une image de Jeedom adaptée au Raspberry. J’ai suivi les instructions de sbeuzit disponibles ici (en Anglais).
On commence par installer l’image rpi-jeedom-data pour permettre de stocker de manière permanente les données de la base mysql.
sudo docker pull sbeuzit/rpi-jeedom-data sudo docker run --name jeedom-data sbeuzit/rpi-jeedom-data
Puis on installe la base mysql. Remplacez MOT_DE_PASSE_MYSQL par votre mot de passe (il vous sera nécessaire pour configurer la connexion à la base de données dans Jeedom).
sudo docker pull hypriot/rpi-mysql sudo docker run --name jeedom-mysql -e MYSQL_ROOT_PASSWORD=MOT_DE_PASSE_MYSQL --volumes-from jeedom-data -d hypriot/rpi-mysql
Enfin on installe le container Jeedom. Avant d’executer la commande, changez l’adresse Mac par celle de votre Raspberry. Vous pouvez l’obtenir facilement avec la commande ifconfig. Elle se trouve à droite de HWaddr.
sudo docker run -d --link jeedom-mysql:mysql --name jeedom --mac-address="xx:xx:xx:xx:xx:xx" -p 80:80 -p 8083:8083 -p 443:443 sbeuzit/rpi-jeedom
Si vous avez un appareil connecté, par un exemple une clé Zwave.me ou RFXCom, vous pouvez spécifier le chemin du device à exposer au container. Pour cela ajoutez –device=/dev/ttyACM0:/dev/ttyACM0.
Avant d’aller plus loin, vérifions que tous les containers sont bien lancés avec la commande sudo docker ps -a. L’option -a permet d’afficher en détail la liste de container et connaitre l’état et l’identifiant.
Liste de containers à l’aide de la commande docker ps -a (état, id, nom)
Avant de terminer l’installation de Jeedom, il nous faut connaitre l’adresse ip de la base de données mysql. Exécutez la commande suivante en remplaçant ID_CONTAINER par l’id trouvé avec la commande ps ou simplement par jeedom-mysql.
docker inspect ID_CONTAINER
Dans la section NetworkSettings, vous trouverez l’adresse ip de la base de données à la clé IPAddress.
Récupérer l’adresse ip de mysql
Une autre solution consiste à « rentrer » dans le container et faire un ping sur le container mysql
docker exec -ti jeedom bash puis ping jeedom-mysql
Ctrl + C pour arrêter le ping. Exit pour sortir du container.
Nous pouvons maintenant ouvrir un navigateur et saisir l’adresse suivante dans l’url
http://IP_PI_JEEDOM:8083
On arrive à la page de connexion à la base de données mysql. Remplissez les champs en fonction de votre configuration :
- Database hostname : remplacez localhost par l’adresse ip de la machine mysql précédemment trouvée
- Database port : ne rien changer (sauf modification de votre part)
- Database username : laisser root
- Database password : celui que vous avez choisi pour la clé MYSQL_ROOT_PASSWORD
- Database name : jeedom
Configuration de la connexion à la base de données mysql
Appuyez sur Proceed. Jeedom va terminer la configuration et probablement faire une ou deux petites mises à jour au passage.
Bienvenue sur Jeedom sur Raspberry Pi 3 fonctionnant avec Docker
Et voilà un Jeedom parfaitement fonctionnel !
Tester l’image Docker de Domoticz pour rpi
Installez l’image de Domoticz pour Raspberry. Cette image s’installe et fonctionne très bien.
Ensuite, configurez la commande docker run qui correspond à votre configuration
docker run -v /etc/localtime:/etc/localtime -v /SOMEPATH/domoticz.db:/root/domoticz/domoticz.db:rw -p 8080:8080 --name domoticz --restart=always -d allardvdb/rpi-domoticz
Quelques explications (en détail ici) :
docker run -d allardvdb/rpi-domoticz
: la commande docker run habituelle- –restart=always : permet de relancer le container après un redémarrage du Raspberry (optionnel)
-v /etc/localtime:/etc/localtime
: Utilise le temps de la machine hôte (optionnel)--device=/dev/ttyUSB0
: expose au container l’appareil relier sur le port USB /dev/ttyUSB0 du raspberry (optionnel)-v /CHEMIN/domoticz.db:/root/domoticz/domoticz.db
: pour utiliser une sauvegarde d’un ancien Domoticz (optionnel)-p 8080:8080
expose le port 8080 du container sur le port 8080 du Raspberry (attention à ne pas utiliser un port déjà utilisé par autre chose)
Pour cet article, cela donne
docker run -p 8080:8080 --name domoticz --restart=always -d allardvdb/rpi-domoticz
Ouvrez maintenant un navigateur et saisissez
http://IP_RPI_DOMOTICZ:8080
Et voilà, Domoticz est parfaitement fonctionnel. Vous pouvez voir au passage que Jeedom et Domoticz fonctionnent (sans rien faire !) sur le même Raspberry sans aucun problème. La magie de Docker !
Quelques astuces pour utiliser Docker
Voici en vrac quelques commandes très utiles pour utiliser Docker facilement dans le cadre d’une box domotique.
Commande | Explication | option utile |
docker ps -a | Permet de lister les containers et connaitre leur statut | |
docker run | Créé un container | –restart=always : permet de lancer le container automatiquement au démarrage. Pratique pour un serveur domotique !
–device : pour exposer un appareil relié au Raspberry et pouvoir l’utiliser dans le container |
docker start NOM | Démarre le container | |
docker stop NOM | Arrête le container | |
docker rm NOM | Efface le container (et toutes les données) | |
docker inspect NOM | Permet de récupérer des infos, par exemple l’adresse ip d’une base de données mysql |