Comment démarrer automatiquement les conteneurs docker lors du démarrage du système?

Quel est le bon moyen de démarrer automatiquement les conteneurs docker lorsque le système démarre?

Existe-t-il une façon privilégiée de le faire sur Ubuntu 14.04?

J'ai utilisé le supervisord par le passé pour démarrer automatiquement les applications Web. Mais cela ne ressemble pas à la bonne chose pour Docker.

3 Solutions collect form web for “Comment démarrer automatiquement les conteneurs docker lors du démarrage du système?”

Apparemment, la méthode actuelle pour démarrer automatiquement les conteneurs Docker (à partir de Docker 1.2 ) consiste à utiliser les stratégies de redémarrage . Cela contrôlera comment Docker doit gérer le démarrage du conteneur lors du démarrage et le redémarrage du conteneur lorsqu'il sort. J'ai utilisé l'option "toujours" jusqu'à présent et je peux confirmer qu'elle rend le démarrage automatique du conteneur lors du démarrage du système Docker:

 sudo docker run --restart=always -d myimage 

Extrait de la documentation

Politiques de redémarrage À l'aide de l'indicateur –restart sur Docker, vous pouvez spécifier une stratégie de redémarrage pour savoir comment un conteneur devrait ou ne doit pas être redémarré à la sortie.

non – Ne redémarrez pas le conteneur lorsqu'il sort.

en cas d'échec – Redémarrez le conteneur uniquement s'il sort avec un état de sortie non nul.

toujours – Redémarrez toujours le conteneur indépendamment de l'état de sortie.

Vous pouvez également spécifier le nombre maximal de fois que Docker essaiera de redémarrer le conteneur lors de l'utilisation de la politique de défaillance. Par défaut, Docker essaie à jamais de redémarrer le conteneur.

 $ sudo docker run --restart=always redis 

Cela exécutera le conteneur redis avec une politique de redémarrage de toujours afin que, si le conteneur est sorti, Docker le redémarrera.

 $ sudo docker run --restart=on-failure:10 redis 

Cela entraînera le récipient redis avec une politique de redémarrage d'une défaillance et un nombre de redémarrage maximum de 10. Si le conteneur redis sort avec un état de sortie non nul plus de 10 fois dans une rangée, Docker annulera la tentative de redémarrage du conteneur. Fournir une limite de redémarrage maximum n'est valable que pour la politique de défaillance.

Docker a cette page qui explique comment le faire avec upstart et systemd. Je suis d'accord pour dire que cela ne semble pas être le bon pour Docker. Leur solution consiste à exécuter le docker start , ce qui suppose que vous avez déjà créé votre conteneur. Je penserais que vous feriez le docker run --rm dans le script upstart (en le traitant comme un nouveau process et un conteneur à partir d'une image) ou laissez simplement le daemon docker redémarrer les conteneurs eux-mêmes lors du démarrage (comme il le fera par défaut si vous ne faites rien d'autre). Upstart a l'avantage de permettre un démarrage / arrêt facile des process, mais vous obtenez cela avec le démarrage / arrêt du docker aussi!

Je pense qu'il est étrange de forcer l'user à créer manuellement un conteneur (avec toutes les bindings de port / volume correctes) avant que le script démarre.

Mais cela ne ressemble pas à la bonne chose pour Docker.

Pourquoi pas?

J'utilise le superviseur pour cela avec beaucoup de succès.

Utilisez ce que vous savez, utilisez ce qui fonctionne, utilisez quelque chose que vous pouvez facilement entretenir et comprendre.

  • Crontab user n'est pas accessible
  • Ubuntu 14.04 avec le stockage de files Azure Le assembly FSTAB tombe après un certain time
  • la mise à jour apt-get suspend une nouvelle installation de ubuntu 14.04.3 dans une boîte virtuelle
  • Comment inclure ModSecurity requête d'une action finale dans Apache access.log
  • Impossible d'activer mpm_prefork avec Apache 2.4 sur Ubuntu 14.04
  • Les travailleurs de la licorne dépassent de façon intermittente
  • iptables dépose des packages après POSTROUTING
  • umask pour l'user de www-data exécutant PHP sur Ubuntu
  • Les astuces du serveur de linux et windows, tels que ubuntu, centos, apache, nginx, debian et des sujets de rĂ©seau.