a quitté avec le code 0 docker
Je suis en train de lancer conteneur à l'aide de docker-composition de services.Mais unfortunetly, conteneur a quitté avec le code 0.
Les conteneurs se construire grâce à un référentiel qui est d'une .tar.gz archive. Cette archive est une VM Centos.
Je veux créer 6 conteneurs de la même archive.
Au lieu de taper 6 fois le panneau de commande, je voudrais créer un menu fixe-composer.fichier yml où je peux résumer leur commande et l'étiquette.
J'ai commencé à écrire docker-composer.fichier yml juste pour créer un conteneur.
Voici mon menu fixe-composer.yml :
version: '2'
services:
dvpt:
image: compose:test.1
container_name: cubop1
command: mkdir /root/essai/
tty: true
Ne faites pas attention à la commande que je viens de préciser.
Donc ma question est, pourquoi le conteneur est sortie ? Est-il une autre solution pour construire ces conteneurs en même temps ?
Merci pour vos réponses.
OriginalL'auteur Sylvain M.J. | 2017-07-03
Vous devez vous connecter pour publier un commentaire.
La réponse est en fait le premier commentaire. Je vais vous expliquer de Miguel commentaire un peu.
Tout d'abord, nous devons comprendre qu'un conteneur Docker s'exécute une seule commande. Le conteneur sera exécuté tant que le processus de la commande en route est en cours d'exécution. Une fois le processus terminé, et quitte alors le conteneur va s'arrêter.
Avec cette compréhension, nous pouvons faire une hypothèse de ce qui se passe dans votre cas. Lorsque vous démarrez votre
dvpt
service, il exécute la commandemkdir /root/essai/
. Cette commande crée le dossier et puis quitte. À ce stade, le conteneur Docker est arrêté, car le processus est sorti (avec l'état 0, ce qui indique quemkdir
terminé sans erreur).Cette réponse est tout à fait raisonnable et décrit avec précision la question. La commande mkdir quitte tout de suite, le succès ou l'échec, provoquant le récipient à la sortie tout de suite. La solution est de ne pas utiliser mkdir comme le point d'entrée, ce qui peut être accompli n'importe quel nombre de façons, en fonction du cas d'utilisation.
OriginalL'auteur Andy Shinn
Une solution est de créer un processus qui n'a pas de fin, une boucle infinie ou quelque chose qui peut fonctionner en continu en arrière-plan. Cela permet de garder le contenant ouvert, parce que le processus ne se termine pas.
C'est très bien d'un hack. Je suis toujours à la recherche d'une meilleure solution.
Le Zend Server image fait quelque chose comme ça. Dans leur .sh script qu'ils ont une finale de la commande:
Qui exécute un fichier qui passe en continu en arrière-plan. J'ai essayé de copier le contenu du fichier ici, mais il doit être en binaire.
EDIT:
Vous pouvez également mettre fin à votre fichier avec
/bin/bash
qui commence un nouveau terminal de processus dans le conteneur et l'empêche de se fermer.OriginalL'auteur Knight