Aller au contenu

[TUTO] Docker : Introduction


.Shad.

Messages recommandés

Bonjour

J'ai réussi à attacher mon conteneur au réseau macvlan

image.png.ff8046407a5282bbc4114840067dc726.png

root@Serveur-Ho37:~# docker network inspect mymacvlan
[
    {
        "Name": "mymacvlan",
        "Id": "5aaac833a63b4637916713baaa517adff886a94769f5854924902484fb42a42f",
        "Created": "2020-03-20T20:40:19.163031724+01:00",
        "Scope": "local",
        "Driver": "macvlan",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "192.168.1.0/24",
                    "IPRange": "192.168.1.240/29",
                    "Gateway": "192.168.1.254",
                    "AuxiliaryAddresses": {
                        "host_bridge": "192.168.1.241"
                    }
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {
            "fc45ece404897aa03a8889f21f831660d95a5aeff01fd8e85d1a27177aecfa98": {
                "Name": "jeedom-test",
                "EndpointID": "deb3751fca58d3ebad91e8f77c614e571f4b2c752e0f9b818dbfef0a1d1dfdc9",
                "MacAddress": "02:42:c0:a8:01:f0",
                "IPv4Address": "192.168.1.240/24",
                "IPv6Address": ""
            }
        },
        "Options": {
            "parent": "eth0"
        },
        "Labels": {}
    }
]

je vérifie les info pour voir si l'adresse 192.168.1.240 est présente

nano /etc/hosts 

StrokesPlus_T4RY3JxLeo.png.3ce2fd5654abd5f8d3739d7d82cca2dc.png

 

Alors je tape dans mon navigateur 192.168.1.240
Résultat SQLSTATE[HY000] [2002] No route to host

 

 

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

as-tu réaliser la partie routage ?

ip link add bridgemacvlan link eth0 type macvlan  mode bridge
ip addr add 192.168.1.241/32 dev bridgemacvlan
# address MAC. cf https://www.cyberciti.biz/faq/linux-ip-command-examples-usage-syntax
# il faut que le premier octet soit PAIR
# cela permet d'avoir a chaque redemarrage la meme addr MAC, sinon elle change
ip link set dev bridgemacvlan address 0:1:2:3:4:5
ip link set bridgemacvlan up
#
ip route add 192.168.1.240/29 dev bridgemacvlan

Lien vers le commentaire
Partager sur d’autres sites

Donc ton conteneur est bien accessible sur le réseau, aucun problème avec la configuration du réseau macvlan en lui-même.

Tu peux c/c le script que tu utilises pour créer le conteneur jeedom ? Je parie que tu as fait coïncider des ports hôte/conteneur, or il n'y a plus besoin en macvlan, car c'est une machine indépendante, il n'y a aucun port déjà pris et donc tu peux laisser ceux de jeedom par défaut (80 et 22 normalement).

Lien vers le commentaire
Partager sur d’autres sites

Bonjour

image.thumb.png.07971dc0187a8872ce52b36be3b40f93.png+

Voici le fichier init.sh qui se lance au démarrage

#!/bin/bash
echo 'Start init'

if ! [ -f /.dockerinit ]; then
	touch /.dockerinit
	chmod 755 /.dockerinit
fi

if [ -z ${ROOT_PASSWORD} ]; then
	ROOT_PASSWORD=$(cat /dev/urandom | tr -cd 'a-f0-9' | head -c 20)
	echo "Use generate password : ${ROOT_PASSWORD}"
fi

echo "root:${ROOT_PASSWORD}" | chpasswd

if [ ! -z ${APACHE_PORT} ]; then
	echo 'Change apache listen port to : '${APACHE_PORT}
	echo "Listen ${APACHE_PORT}" > /etc/apache2/ports.conf
	sed -i -E "s/\<VirtualHost \*:(.*)\>/VirtualHost \*:${APACHE_PORT}/" /etc/apache2/sites-enabled/000-default.conf
else
	echo "Listen 80" > /etc/apache2/ports.conf
	sed -i -E "s/\<VirtualHost \*:(.*)\>/VirtualHost \*:80/" /etc/apache2/sites-enabled/000-default.conf
fi

if [ ! -z ${SSH_PORT} ]; then
	echo 'Change SSH listen port to : '${SSH_PORT}
	sed '/Port /d' /etc/ssh/sshd_config
	echo "Port ${SSH_PORT}" >> /etc/ssh/sshd_config
else
	sed '/Port /d' /etc/ssh/sshd_config
	echo "Port 22" >> /etc/ssh/sshd_config
fi

if [ ! -z ${MODE_HOST} ] && [ ${MODE_HOST} -eq 1 ]; then
	echo 'Update /etc/hosts for host mode'
	echo "127.0.0.1 localhost jeedom" > /etc/hosts
fi

if [ -f /var/www/html/core/config/common.config.php ]; then
	echo 'Jeedom is already install'
else
	echo 'Start jeedom installation'
	rm -rf /root/install.sh
	wget https://raw.githubusercontent.com/jeedom/core/master/install/install.sh -O /root/install.sh
	chmod +x /root/install.sh
	/root/install.sh -s 6
fi

echo 'All init complete'
chmod 777 /dev/tty*
chmod 777 -R /tmp
chmod 755 -R /var/www/html
chown -R www-data:www-data /var/www/html

echo 'Start apache2'
systemctl restart apache2
service apache2 restart

echo 'Start sshd'
systemctl restart sshd
service ssh restart

echo 'Start atd'
systemctl restart atd
service atd restart

/usr/bin/supervisord

 

Modifié par Didier3L
Lien vers le commentaire
Partager sur d’autres sites

Je viens d'essayer de créer mon conteneur jeedom par curiosité, ça marche très bien, mais je ne suis pas passé par un script.
A noter que j'ai testé sur une distribution linux classique, pas sur le NAS, il y a peut-être deux, trois choses à modifier. En attendant, tu pars du point 7.3) sur la page suivante : https://jeedom.github.io/documentation/installation/fr_FR/index

Tu te connectes en root sur le NAS et tu tapes :

docker create --name jeedom-server --privileged --hostname jeedom -e ROOT_PASSWORD=password -v /volume1/docker/jeedom/:/var/www/html/ --net=mymacvlan --ip 192.168.1.240 jeedom/jeedom

Notes :

  • /volume1/docker/jeedom/ c'est un exemple, tu crées le dossier pour le conteneur où tu veux
  • Pas besoin de rediriger des ports, on redirige quand les ports sont déjà utilisés sur la machine, hors ici tu viens de créer une machine "physique" sur ton réseau physique (grâce au réseau macvlan)
  • Tu spéficies l'IP que tu souhaites donner à ton conteneur via l'argument --ip
  • Tu précises bien que tu souhaites rejoindre le réseau mymacvlan via --net=mymacvlan

Maintenant je n'ai pas précisé l'utilisateur ici, car il n'y a pas de PUIG/PGID à entrer comme variable d'envrionnement, essaie de voir sans préciser déjà, et tu te connectes sur http://192.168.1.240, tu arrives sur la page qui te demande te connecter à la base de données.

Moi j'utilise celle du Synology, on évite généralement d'utiliser des bases de données dans des conteneurs.

Donc je mets l'IP de mon NAS à la place de localhost, le port qui va bien (MariaDB 10 pour moi, port 3307). Avant ça dans phpMyAdmin j'ai créé un utilisateur jeedom avec la base de données du même nom ayant tous les droits dessus, et je remplis en conséquence les champs demandés sur la page, et ça roule tout seul.

Lien vers le commentaire
Partager sur d’autres sites

Le 21/03/2020 à 18:07, bruno78 a dit :

Bonjour,

as-tu réaliser la partie routage ?

ip link add bridgemacvlan link eth0 type macvlan  mode bridge
ip addr add 192.168.1.241/32 dev bridgemacvlan
# address MAC. cf https://www.cyberciti.biz/faq/linux-ip-command-examples-usage-syntax
# il faut que le premier octet soit PAIR
# cela permet d'avoir a chaque redemarrage la meme addr MAC, sinon elle change
ip link set dev bridgemacvlan address 0:1:2:3:4:5
ip link set bridgemacvlan up
#
ip route add 192.168.1.240/29 dev bridgemacvlan

@Didier3L : C'est ce que disait @bruno78, tu as oublié le fait qu'un conteneur ayant rejoint le réseau macvlan ne peut communiquer avec son hôte, d'où le fait qu'il te soit impossible de communiquer avec la base de données sur ton NAS. Suis sa procédure et tout devrait rentrer dans l'ordre.

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

bridgemacvlan, c'est le nom du pont entre ton réseau mymacvlan et l’environnement "extérieur". C'est ce qui va lui permettre de communiquer.

Donc tu l'appelles comme tu le souhaites, mais il ne représente pas le réseau mymacvlan. Ce sont 2 entités différentes. Donc je déconseille de l'appeler mymacvlan. Je n'ai pas fait le test, peut-être que donner le même nom à 2 entités différentes est accepté, mais ce n'est pas le meilleur moyen pour s'y retrouver ensuite.

=> lui donner un nom différent, à ton choix.

Modifié par bruno78
Lien vers le commentaire
Partager sur d’autres sites

J'ai saisi cela

ip link add bridgemacvlan  link eth0 type macvlan mode bridge
ip addr add 192.168.1.241/32 dev bridgemacvlan
# address MAC. cf https://www.cyberciti.biz/faq/linux-ip-command-examples-usage-syntax
# il faut que le premier octet soit PAIR
# cela permet d'avoir a chaque redemarrage la meme addr MAC, sinon elle change
ip link set dev bridgemacvlan  address 0:1:2:3:4:5
ip link set bridgemacvlan up
#
ip route add 192.168.1.240/29 dev bridgemacvlan

Le réseau est bien crée

image.png.8d1df050a673a6639d8db0ded90bbc0c.png

 

image.thumb.png.a8b1615f6735f859f9fdebd91cd82088.png

 

Lien vers le commentaire
Partager sur d’autres sites

Donc c'est déjà une bonne nouvelle, ça veut dire que le montage de l'interface marche.

Chez moi, MariaDB 10 est exposé sur le port 3307, pas 3306, vérifie dans ton DSM (tu lances MariaDB 10, c'est en bas de la fenêtre de configuration).

Lien vers le commentaire
Partager sur d’autres sites

Il s'est installé oui, mais mon hôte n'est le NAS mais une distribution Debian, et la BD est sur le NAS, du coup pas de problème pour communiquer entre le NAS et le conteneur. Je sais pas ça s'installe, ça a peuplé la DB et j'ai pu changer mon mdp, j'en déduis que ça marchait pas trop mal.

Est-ce que tu peux tester le contraire ? Pinger l'interface virtuelle du NAS depuis le conteneur :

docker exec -it <nom du conteneur> ping 192.168.1.241

 

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

je n'aime pas trop faire des essais dans le vide, et je ne connais pas Jeedom. Néanmoins, avec MariaDB, j'ai déjà eu des problèmes "similaires". Donc je te propose un test facile et rapide.

Dans ton écran de connexion à Jeedom, je vois que tu as mis "Database hostname=192.168.1.10" => peux-tu faire les deux essais suivants avec respectivement "Database hostname=127.0.0.1" (c'est celui qui a fonctionné pour moi), et si ca ne marche toujours pas avec "Database hostname=localhost" ?

Lien vers le commentaire
Partager sur d’autres sites

Bon,

  • pourquoi as-tu positionné le port à 3307 dans ces essais, je croyais que sur ton installation c'est le port 3306 ? Tu as aussi changé le nom d'utilisateur ?
  • par ailleurs, il est interessant de noter que dans un cas "connection refused", et dans l'autre "no such file or directory"
Lien vers le commentaire
Partager sur d’autres sites

Honnêtement là je sèche, si l'hôte et le conteneur arrivent à se ping et que ton pare-feu ne bloque pas l'accès à la base de données (mais pour le coup je pense que tu aurais le message "Connection refused" et pas "No route to host"), il n'y a aucune raison que tu n'arrives pas à te connecter à la base de données.

Je suis en train de tester en créant un conteneur Ubuntu, et faire une install classique de Jeedom dessus, c'est en cours je reviens plus tard. 🙂 

Lien vers le commentaire
Partager sur d’autres sites

il y a 55 minutes, bruno78 a dit :

Bon,

  • pourquoi as-tu positionné le port à 3307 dans ces essais, je croyais que sur ton installation c'est le port 3306 ? Tu as aussi changé le nom d'utilisateur ?
  • par ailleurs, il est interessant de noter que dans un cas "connection refused", et dans l'autre "no such file or directory"

Je me suis dit que cela marcherai mieux avec MariaDB 10 donc 3307 ... mais MariaDB 10 ou  MariaDB 5 = même erreur

Lien vers le commentaire
Partager sur d’autres sites

Bon ça marche bien dans un conteneur ubuntu, par contre ça bouffe pas mal de mémoire :

image.thumb.png.ea3d6e297adf466ce4c4c5bbafdba2f9.png

image.thumb.png.e023148ae2ca0d2d8c516961c358e688.png

Bon je me suis amusé à créer ça en bridge, je pense que si tu crées ça en macvlan, ben vu que la base de données est embarquée dans le conteneur tu n'as plus de souci de communication avec le NAS.
Après pour la persistance des données, si tu veux être tranquille pour ne rien perdre, il faut monter la racine :

-v /volume1/docker/jeedom:/

Il y a certainement des arguments à mettre comme --stop-signal pour ordonner une extinction propre du conteneur en cas d'extinction du NAS, avec sûrement aussi une commande à passer pour arrêter proprement jeedom à l'intérieur du conteneur ubuntu. Je vais pas te mentir, c'est au-delà de mes compétences... 😛 si j'y passais beaucoup de temps je m'en sortirais sûrement mais ce temps je ne l'ai pas malheureusement 😞 

Je t'invite à continuer tes recherches avec le conteneur en macvlan, je pense que tu y es presque, vérifie un coup ton pare-feu, qu'il autorise bien les connexions locales....

Bon courage 🙂 

Modifié par .Shad.
Lien vers le commentaire
Partager sur d’autres sites

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.