Bon dans ma quête à l’infrastructure pour ma domotique, je me suis mis à tenter de voir ce que Docker donne.
Et je dois dire que je suis en train de me faire des cheveux blancs (et y a pas besoin de ça )
J’ai une VM debian 11 à jour qui tourne sur ESXi
Dessus j’ai installer Docker et tout ce qu’il faut.
J’ai réussi à créer mon premier container docker en ligne de commande et c’est Portainer
J’ai donc ma VM Debian en 192.168.1.53. Mon container Portainer est en 172.17.0.2 mode bridge et j’accède à son interface web en faisant http://192.168.1.53:9000 puisque j’ai utilisé ce port. Tout roule !
Maintenant histoire de me faire la main je me suis dit pourquoi pas avoir un container ADGuardHome.
De ce que je comprends il doit avoir une IP sur mon LAN, donc j’ai créé un macvlan pour que ce container ADGuard aie son IP sur mon LAN
Ta configuration macvlan a l’air bonne.
Tu peux tourner en macvlan ou bien en host c’est au choix. En host ca t’obligera a redirigé tout les ports il y en a quelques un mais docker te permet de le faire simplement
Comme tu es sur un esx, il faut t’assurer que tu as bien activer le promiscious mode sur le vswitch de ton esxi. Sinon ca marche pas.
Après je ne sais pas comment tu as créé ton ADguard mais comme tu as mis en place Portainer, il est préférable de passer par le stack de portainer.
Voici un exemple de stack ADguard qui inclus la création du macvlan
Dans cet exemple, le macvlan est créé pour un réseau plus large (192.168.70.48/28) afin de pouvoir mettre plusieurs containers dedans au besoin.
L’adresse du container est fixé dans le service (dans l’exemple 192.168.40.49)
Grand dieu tu viens de me sauver la mise ! J’étais sûr de l’avoir mis sur mon vswitch et bien non pas depuis ma réinstallation complète de ESXi !! Moi qui pensait merdouiller en Docker c’était mon vSwitch !!
Merci pour cette exemple. Je découvre Portainer donc je ne sais pas ou cela se fait…
J’ai lu et vu aussi des fichiers yaml pour docker compose.
Donc si je comprends bien je dois avoir ce genre de fichier car une mise à jour d’un container docker c’est le supprimer et le recréer avec la dernière image et si je n’ai pas ce genre de fichiers je dois tout refaire à la main à chaque fois ! C’est bien cela ?
Il faut le faire dans le menu Stack de portaient en créant une nouvelle stack.
Une stack est un docker-compose qui contient l’ensemble des configurations réseaux, container, etc… pour un ou un ensemble de services.
Docket-compose peut aussi être utilisé en CLI mais portainer est tellement plus intuitif quand tu démarre.
Sache que un docker-compose en CLI ne peut pas être géré ensuite par Portainer. Tu les verras dedans mais c’est tout, ils seront verrouillés.
L’intérêt en effet avec docker c’est de mettre à jour les containers facilement.
Si il a était créé avec docker ou docker-compose, tu dois supprimer le container, supprimer la version de l’image, et recrée le container (qui téléchargera la dernière image). Sous portainer, tu vas dans ton docker, tu clique sur recrée et tu préciser que tu veux télécharger la dernière version d’image. Ça revient au même c’est juste plus rapide avec Portainer
A mon avis pour portainer tu as plus interet a le faire en host comme ma conf. Il n’y a qu’un port. Garde le macvlan pour les containers ne supportant pas le mode host ou ceux avec beaucoup de port a forwarder
Non aucune. Il faut juste bien l’appeler dans ta commande docker-compose
Oui sur ton host docker à l’emplacement de ton choix.
Non rien a faire, le docker-compose va le demander pour toi.
Une fois ton docker-compose créé, tu lances :
docker-compose -f portainer_deploy.yml -p portainer up -d
Et c’est tout.
Pour le mettre à jour ensuite je me suis fait ce petit bash
#!/bin/bash
# Stop portainer container
docker stop portainer
# Delete portainer container
docker rm portainer
# Remove portainer image to pull new version
docker rmi portainer/portainer-ce:latest
# Go to right Folder
cd /data/docker
# Recreate Portainer
docker-compose -f portainer_deploy.yml -p portainer up -d
Oui je l’avais historiquement créé manuellement pour ensuite passer par un compose.
Donc utilise la commande que tu as mis. Elle ne sert qu’une fois. Après si tu prefere tu peux le gérer dans ton compose.
Il me semble qu’en retirant le external dans la declaration du volume du compose, il te le créé mais il le supprime aussi si tu supprime le container a partir du compose. En le mettant en externe, il reste, ca evite les bétises
Non cela me va bien de la faire à la main vu que ce n’est qu’une seul fois.
Hélàs, comme j’ai refait ma VM comme dit plus haut et que je veux passer par docker-compose et ce fichier que t m’as donné, j’ai des soucis que je n’avais pas eu en ligne de commande
C’est normal. C’est la façon dont le macvlan marche. Pas de configuration particulière.
Il y a une « astuce » en créant une autre macvlan pour gérer ca : Set up a PiHole using Docker MacVlan Networks — Blog :: Ivan Smirnov mais je l’ai jamais testé car j’en ai jamais eu besoin