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.

  • Comment apache utilise-t-il ou autorise-t-il la navigation de / usr / share? (Linux / Ubuntu)
  • Limites de virtualisation pour Ubuntu Server 14.04 LTS avec KVM?
  • MySQL - Impossible d'activer la journalisation binary
  • Différentes stratégies d'authentification ssh pour différents counts
  • Comment faire pour que Mod_peedspeed produise compressé (gzip) css?
  • Comment démarrer automatiquement les conteneurs lxc non garantis?
  • Strange Bittorrent Connectez-vous à mon server
  • crontab échoue, ne peut pas find aws exécutable
  • 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.

    Les astuces du serveur de linux et windows, tels que ubuntu, centos, apache, nginx, debian et des sujets de réseau.