Comment puis-je garder le conteneur docker en cours d'exécution?
Je veux exécuter plusieurs conteneurs automatiquement et de créer quelque chose,
mais certaines images, comme l'essaim, s'arrête automatiquement après exécution ou commencer.
J'ai déjà essayer comme ça
docker run -d swarm
docker run -d swarm /bin/bash tail -f /dev/null
docker run -itd swarm bash -c "while true; do sleep 1; done"
mais "docker ps de" ne rien montrer, et j'ai essayé de construire Dockerfile en tapant:
FROM swarm
ENTRYPOINT ["echo"]
et L'image ne fonctionne pas avec le message d'erreur :
docker: Error response from daemon: invalid header field value "oci runtime error: container_linux.go:247: starting container process caused \"exec: \\\"echo\\\": executable file not found in $PATH\"\n".
Je ne comprends pas cette erreur... Comment puis-je garder essaim conteneur de courir..?
(Désolé,mon anglais n'est pas bon))
OriginalL'auteur haeney | 2017-08-02
Vous devez vous connecter pour publier un commentaire.
Tout d'abord, vous ne voulez pas mélanger les
-i
et-d
commutateurs. Soit vous souhaitez exécuter le conteneur en interactif ou en mode détaché. Dans votre cas, en mode détaché:Il n'y a pas besoin d'allouer une ats à l'aide de la
-t
drapeau, car cela ne doit être fait que dans le mode interactif.Vous devriez jeter un oeil à la
Docker run de référence
Avez-vous obtenu votre conteneur et de l'exécution?
Oui. D'autres récipients tels que nginx, Ubuntu, et redis fonctionner correctement, mais l'essaim prendra fin en même temps qu'il s'exécute.
OriginalL'auteur Cyclonecode
à l'aide de -d est recommandé parce que vous pouvez exécuter votre récipient avec une seule commande et vous n'avez pas besoin de se détacher du terminal de conteneurs en frappant Ctrl + P + Q.
Cependant, il y a un problème avec l'option-d de. Votre conteneur arrête immédiatement à moins que les commandes ne sont pas en cours d'exécution sur le premier plan.
Docker nécessite votre commande pour continuer à fonctionner en arrière-plan. Sinon, il pense que vos applications s'arrête et l'arrêt du conteneur.
Le problème est que certaines application ne s'exécute pas en arrière-plan.
Dans cette situation, vous pouvez ajouter tail-f /dev/null de votre commande.
En faisant cela, même si le principal de votre commande s'exécute en arrière-plan, votre conteneur n'a pas arrêter parce que la queue est de continuer à courir dans le premier plan.
docker run-d essaim tail-f /dev/null
docker ps montre conteneur
Maintenant, vous pouvez joindre votre conteneur en utilisant docker exec container_name commande
ou
docker run-d essaim de commande tail-f /dev/null
OriginalL'auteur Navin a.s
Vous êtes en droit docker run-itd essaim ( Sans donner d'argument pour le conteneur( bash -c "while true; do sleep 1; done" ) )fonctionne très bien .Si vous passer argument pour docker terme, il sera exécuter la commande et se termine le conteneur.Si vous souhaitez exécuter le conteneur de façon permanente tout d'abord démarrer le conteneur avec docker run-itd essaim et de vérifier si le conteneur s'exécute ou non par docker ps maintenant le conteneur s'exécute , si vous voulez exécuter une commande dans l'utilisation des conteneurs docker exec -itd container_name commande vous Rappeler : n'utilisez la commande qui arrête pas le contenant. bash -c "while true; do sleep 1; fait cette commande arrête le conteneur ( Parce que c'est la commande complète si nous exécutons en normal terminal d'exécuter et de mettre fin , ce type de commande s'arrête également le conteneur ).
J'Espère que cela Aide..
OriginalL'auteur Navin a.s
Fondamentalement, c'est la méthode , mais votre image docker est essaim de sorte qu'il est différent et je ne sais pas à propos de l'essaim de docker image et je ne suis pas l'aide que .Mais après je fais des recherches à ce sujet . J'ai d'abord exécuter le panneau de l'essaim image de ce qu'il montre.,
Après ce que je comprends, nous courons le panneau essaim de l'image en utilisant seulement cinq commandes dans l'image, par exemple, créer, liste de les gérer, de les rejoindre, de les aider . si nous courons essaim d'image sans commande comme docker run-itd essaim il prend la commande --help . Désolé, Mais je ne sais pas quel est le but de l'essaim de l'image. Pour plus d'utilisation https://hub.docker.com/_/swarm/ .
La réponse que j'ai ajouté docker run-itd image tail-f /dev/null n'est pas pour essaim d'image , c'est pour docker images comme ubuntu,fedora, centos.
Viens de lire à l'utilisation de l'essaim d'image et pourquoi il est utilisé .
Après si vous avez un problème de poster votre question dans https://github.com/docker/swarm-library-image/issues
Merci...
OriginalL'auteur Navin a.s
C'est bien à une queue sur /dev/null, mais pourquoi ne pas en faire quelque chose d'utile?
La commande suivante va récolter le processus orphelin, donc pas de zombie (défunte) precesses sont laissé flottant autour. Aussi certains init.d /redémarrer les scripts ne permet pas ceci.
OriginalL'auteur TheMadsen