GNU/Linux >> Tutoriels Linux >  >> Linux

Démarrer automatiquement les services dans le conteneur Docker

EDIT :J'ai beaucoup appris sur Docker depuis la publication de cette réponse. "Démarrer automatiquement les services dans les conteneurs Docker" n'est pas un bon modèle d'utilisation pour Docker. À la place, utilisez quelque chose comme Fleet, Kubernetes ou même Monit/SystemD/Upstart/Init.d/Cron pour démarrer automatiquement les services qui s'exécutent dans les conteneurs Docker.

RÉPONSE ORIGINALE :Si vous démarrez le conteneur avec la commande /bin/bash , alors vous pouvez accomplir cela de la manière décrite ici :https://stackoverflow.com/a/19872810/2971199

Donc, si vous démarrez le conteneur avec docker run -i -t IMAGE /bin/bash et si vous souhaitez démarrer automatiquement apache2 au démarrage du conteneur, modifiez /etc/bash.bashrc dans le conteneur et ajoutez /usr/local/apache2/bin/apachectl -f /usr/local/apache2/conf/httpd.conf (ou quelle que soit votre commande apache2 start) à une nouvelle ligne à la fin du fichier.

Enregistrez les modifications apportées à votre image et redémarrez-la avec docker run -i -t IMAGE /bin/bash et vous trouverez apache2 en cours d'exécution lorsque vous vous attacherez.


Je suppose que vous ne pouvez pas. Ce que vous pouvez faire est de créer une image à l'aide d'un Dockerfile et d'y définir un CMD, qui sera exécuté au démarrage du conteneur. Consultez la documentation du générateur pour les bases (https://docs.docker.com/reference/builder/) et consultez Exécuter un service automatiquement dans un conteneur docker pour plus d'informations sur le maintien de votre service en cours d'exécution.

Vous n'avez pas besoin d'automatiser cela à l'aide d'un Dockerfile. Vous pouvez également créer l'image via une validation manuelle comme vous le faites et l'exécuter en ligne de commande. Ensuite, vous fournissez la commande qu'il doit exécuter (ce qui est exactement ce que fait le Dockerfile CMD). Vous pouvez également remplacer le Dockerfiles CMD de cette manière :seul le dernier CMD sera exécuté, qui est la commande de ligne de commande si vous démarrez le conteneur en utilisant une. Le docker run -i -t base /bin/bash de base La commande de la documentation est un exemple. Si votre commande devient trop longue, vous pouvez bien sûr créer un script pratique.


Une option que vous pourriez utiliser serait d'utiliser un gestionnaire de processus tel que Supervisord pour exécuter plusieurs processus. Quelqu'un a accompli cela avec sshd et mongodb :https://github.com/justone/docker-mongodb


Linux
  1. Comprendre la sortie de la commande « docker stats »

  2. commande docker introuvable

  3. Transférer le port hôte vers le conteneur Docker

  4. Explorer le système de fichiers du conteneur Docker

  5. Docker dans Docker ne peut pas monter le volume

Comment répertorier/démarrer/arrêter les conteneurs Docker

Comment utiliser la commande Docker Run avec des exemples

Comment se connecter en SSH à un conteneur Docker

Comment gérer les conteneurs Docker

Comment répertorier/démarrer/arrêter/supprimer les conteneurs docker

Répéter la commande automatiquement sous Linux