IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Administration système Discussion :

Mettre un service en démarrage automatique (systeme Debian 10 dans un conteneur Docker)


Sujet :

Administration système

  1. #1
    Membre actif
    Homme Profil pro
    Webmaster - Développeur/intégrateur web
    Inscrit en
    Septembre 2011
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Webmaster - Développeur/intégrateur web
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2011
    Messages : 210
    Points : 246
    Points
    246
    Par défaut Mettre un service en démarrage automatique (systeme Debian 10 dans un conteneur Docker)
    Bonjour à toutes et tous,

    Je viens vous voir pour une question de débutant, dont la résolution pourrait paraitre simple mais qui ne l'est pas tant que çà... surtout vis-à-vis du contexte.

    J'ai décidé de paramétrer un serveur LAMP dans un conteneur Docker, à partir d'une image Debian 10.
    Je l'ai fait il y a quelques années sur une machine physique Ubuntu, j'avais rencontré bien moins de difficulté... mais j'arrive au bout de mon périple.

    Normalement, il ne me reste plus qu'à paramétrer un démarrage automatique des services Apache2 et MySQL.
    Le fonctionnement minimal de ces services est OK quand je l'ai lance avec la commande "service [NOM SERVICE] start", mais je souhaiterais qu'ils démarrent automatiquement suite au boot de la machine.

    J'ai déjà essayé plusieurs choses, d'abord avec systemd/systemctl :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    # Après avoir installé le package systemd
    systemctl status apache2
    J'ai le message d'erreur suivant :
    System has not been booted with systemd as init system (PID 1). Can't operate.
    Failed to connect to bus: Host is down

    ensuite en lançant la commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    update-rc.d apache2 defaults
    => ça ne change rien

    ensuite en ajoutant un script "lamp" dans le dossier "/etc/init.d/", le script contient les commandes suivantes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    service apache2 start
    service mysql start
    => ça ne change rien, même après avoir exécuté la commande "update-rc.d lamp defaults"

    Il doit me manquer quelque chose dans la procéure... si quelqu'un à une solution ou des pistes pouvant mener à la solution... je suis preneur.

    Merci d'avance et bon dimanche !

    Mickaël
    Si vous avez besoin d'une librairie permettant de gérer facilement les fichiers et les dossiers en PHP... ou si vous êtes juste curieux(se) :
    https://github.com/moDevsome/moFilesManager

    N'hésitez pas à me faire un retour

  2. #2
    Membre éprouvé
    Homme Profil pro
    Ingénieur sécurité
    Inscrit en
    Avril 2014
    Messages
    498
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur sécurité
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 498
    Points : 1 178
    Points
    1 178
    Par défaut
    Hello,

    Rassures moi tu n'as pas lancé tes commandes systemctl depuis un conteneur?

    Je suppose que les services que tu veux en démarrage automatique sont dans des conteneurs.

    Donc déjà assures toi que dockerd soit mis en démarrage auto (systemctl enable docker).

    Puis assures toi que tous tes dockers soient en politique de "restart always". Que ce soit dans ton docker-compose ou bien via la commande docker update ou docker run peu importe.

    Un reboot et normalement tout est OK.

  3. #3
    Membre actif
    Homme Profil pro
    Webmaster - Développeur/intégrateur web
    Inscrit en
    Septembre 2011
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Webmaster - Développeur/intégrateur web
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2011
    Messages : 210
    Points : 246
    Points
    246
    Par défaut
    Merci pour ta réponse,

    Alors il y a 2 choses que je n'ai pas précisés :
    - je suis débutant sur Docker;
    - mon PC hôte est sous Windows 10;

    Pour répondre à tes questions :

    Rassures moi tu n'as pas lancé tes commandes systemctl depuis un conteneur?
    Bah si justement, pourquoi ? cela peut avoir une incidence sur le système de l'hôte ? j'ai peut être mal compris... mais les conteneurs ne se comportent pas comme des systèmes isolés sur le même principe que les VM ?

    Pour le reste, je voudrais être sur qu'il n'y a pas confusion avant de me lancer dans des trucs compliqués (qui peut être te paraissent simples...), je me suis peut être mal exprimé.
    Je ne cherche pas à faire en sorte que le conteneur se lance automatiquement au démarrage de la machine hôte, je souhaite que les services "apache2" et "mysql" présent "dans le conteneur" se lance automatiquement au démarrage de celui-ci.
    Si vous avez besoin d'une librairie permettant de gérer facilement les fichiers et les dossiers en PHP... ou si vous êtes juste curieux(se) :
    https://github.com/moDevsome/moFilesManager

    N'hésitez pas à me faire un retour

  4. #4
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 451
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 451
    Points : 43 097
    Points
    43 097
    Par défaut
    j'ai peut être mal compris... mais les conteneurs ne se comportent pas comme des systèmes isolés sur le même principe que les VM ?
    Pas tout à fait. Tu peux voir un conteneur comme la virtualisation d'une application, ou d'un service (au sens large un conteneur peut contenir un serveur Apache , un serveur MySQL pour proposer une appli web conteneurisée). Un conteneur s'appuie sur le noyau de son hôte.

    Je suis pas spécialiste Docker, mais en gros il te faut créer un script dans ton Docker et l'appeler au démarrage de ton conteneur avec Docker exec.

    Il doit y avoir aussi d'autres façons de faire.

    N'hésites pas non plus à utiliser le forum Docker.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  5. #5
    Membre actif
    Homme Profil pro
    Webmaster - Développeur/intégrateur web
    Inscrit en
    Septembre 2011
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Webmaster - Développeur/intégrateur web
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2011
    Messages : 210
    Points : 246
    Points
    246
    Par défaut
    Merci Chrtophe pour ta réponse,

    il te faut créer un script dans ton Docker et l'appeler au démarrage de ton conteneur avec Docker exec
    C'est que j'ai déjà essayé de faire en ajoutant un script "lamp" dans le dossier "/etc/init.d/", le script contient les commandes suivantes :
    service apache2 start
    service mysql start

    mais ça n'a pas résolu mon problème, après peut être que la présence des 2 commandes ne suffit pas.

    J'ai déjà exploré plusieurs possibilités comme passer par le service Cron par exemple, sauf que lui même ne sera pas lancé au démarrage, c'est le serpent qui se mord la queue...

    Bonne idée pour le forum Docker, en espérant que je vais tombé sur quelqu’un de sympa qui a déjà eu cette galère...

    si en parallèle vous avez d'autres idées je reste open bien évidement
    Si vous avez besoin d'une librairie permettant de gérer facilement les fichiers et les dossiers en PHP... ou si vous êtes juste curieux(se) :
    https://github.com/moDevsome/moFilesManager

    N'hésitez pas à me faire un retour

  6. #6
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 451
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 451
    Points : 43 097
    Points
    43 097
    Par défaut
    Ton script doit être lancé lors du démarrage du conteneur avec docker exec.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  7. #7
    Membre éprouvé
    Homme Profil pro
    Ingénieur sécurité
    Inscrit en
    Avril 2014
    Messages
    498
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur sécurité
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 498
    Points : 1 178
    Points
    1 178
    Par défaut
    Hello,

    Oublie init.d si tu es en train de configurer des dockers.

    Toute ta configuration de lancement de services se passe dans ton docker file et uniquement celui-ci.

  8. #8
    Membre actif
    Homme Profil pro
    Webmaster - Développeur/intégrateur web
    Inscrit en
    Septembre 2011
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Webmaster - Développeur/intégrateur web
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2011
    Messages : 210
    Points : 246
    Points
    246
    Par défaut
    Merci pour vos réponses,

    Oublie init.d si tu es en train de configurer des dockers.

    Toute ta configuration de lancement de services se passe dans ton docker file et uniquement celui-ci.
    C'est justement ce que j'essaie de faire, en passant par l'utilisation des variables CMD et ENTRYPOINT dans le Dockerfile, mais je galère, ça ne fonctionne pas...

    Ce que je fais :
    - je build mon image à partir du dockerfile;
    - je créé le conteneur à partir de l'image via la commande "run";

    Ce que j'obtiens :
    Le script fourni en ENTRYPOINT est bien exécuté mais ensuite mon conteneur s’arrête nette.
    Idem si j'utilise la commane "start".

    Voici le contenu du script lancé en ENTRYPOINT (c'est très minime...) :
    j'ai également essayé avec ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo hello les gens
    j'ai bien le texte "hello les gens" qui apparait, puis plus rien.
    Si vous avez besoin d'une librairie permettant de gérer facilement les fichiers et les dossiers en PHP... ou si vous êtes juste curieux(se) :
    https://github.com/moDevsome/moFilesManager

    N'hésitez pas à me faire un retour

  9. #9
    Membre actif
    Homme Profil pro
    Webmaster - Développeur/intégrateur web
    Inscrit en
    Septembre 2011
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Webmaster - Développeur/intégrateur web
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2011
    Messages : 210
    Points : 246
    Points
    246
    Par défaut
    Bon... finalement, je ne sais pas trop comment... mais ça fonctionne !!

    À un moment donné je me suis dit que l'image "de base", en l’occurrence debian:10, n'aimait peut être pas que l'on surcharge ses commandes "d'entrée".

    J'ai regardé la partie "Image Layers" de l'image en question sur hub.docker.com, je me suis aperçu qu'il y avait une commande CMD ["bash"].
    J'ai donc testé l'ajout d'une ligne "bash" à la fin de mon script de démarrage, et là... ça fonctionne !

    Par contre, je me suis aperçu après coup que ça ne fonctionne pas si je ne connecte pas mon terminal au shell du conteneur via l'ajout de l’argument -it (ou -i dans le cas de la commande "start")... donc il va rester un petit mystère.

    Je découvrirais peut être le pourquoi du comment à force de pratique...

    en tout cas je suis content, j'ai résolu mon problème, mes services démarrent automatiquement au démarrage du conteneur.
    Si vous avez besoin d'une librairie permettant de gérer facilement les fichiers et les dossiers en PHP... ou si vous êtes juste curieux(se) :
    https://github.com/moDevsome/moFilesManager

    N'hésitez pas à me faire un retour

  10. #10
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 451
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 451
    Points : 43 097
    Points
    43 097
    Par défaut
    Vas faire un tour sur les tutos Docker du forum. En cas de maintenance nécessaire, il faut un minimum de compréhension.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Apprendre l'accès aux services Bluemix dans les conteneurs Docker
    Par Community Management dans le forum IBM Cloud
    Réponses: 0
    Dernier message: 18/09/2017, 01h43
  2. [Apache Tomcat / MySQL] Démarrage automatique des services
    Par ruff15 dans le forum Tomcat et TomEE
    Réponses: 7
    Dernier message: 02/12/2008, 20h48
  3. Démarrage automatique des services
    Par barrique dans le forum Windows XP
    Réponses: 2
    Dernier message: 29/07/2008, 09h40
  4. [Windows XP][Service] Pb démarrage automatique
    Par joefou dans le forum Windows XP
    Réponses: 5
    Dernier message: 14/10/2005, 09h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo