Lorsque je cours ou démarrons un conteneur Docker, il ne restera pas en marche. Docker Start retournera simplement le nom de tout conteneur que j'ai donné, mais ne fera rien. Docker Run (EX $ Docker Exécuter -P 8080: 80 --Name Bonjour-Hello-World) le créera mais il quittera immédiatement. P>
Si j'exécute Docker PS après l'une d'entre elles, il ne montrera rien de répertorié comme étant actuellement en cours d'exécution. Si je courais Docker PS -a, il montrera tous mes conteneurs et montrera celui que je viens de tenter de courir d'avoir disparu il y a quelques secondes. P>
est-ce courant et comment puis-je récupérer mes conteneurs? J'essaie d'apprendre à utiliser Docker et cela a été l'une des pires expériences. Merci pour toute aide ou suggestion p>
5 Réponses :
Dans votre commande, vous spécifiez le drapeau Si vous l'exécutez sans le drapeau Vous ne le voyez pas en cours d'exécution dans -d code> (AKA détach), ce qui signifie
exécuter le conteneur dans l'arrière-plan et l'identifiant du conteneur d'impression code> (de Docker Docs ). Voir plus de discussions à ce sujet ici: Le conteneur Docker s'arrêtera automatiquement après " Docker Run -d " p>
Docker Run -P 8080: 80 --Name Hello -D Bonjour-World Code> P>
-d code>, il doit fonctionner au premier plan et envoyer une sortie à votre terminal p>
Docker Run -P 8080: 80 --Name Bonjour Hello-World Code> P>
Docker PS -A code> car ce conteneur exécute simplement le script Hello-World et sort. Si le conteneur commence un processus de course à long terme, vous pourrez le trouver dans
Docker PS -A code>. Pour vérifier cela, vous pouvez essayer d'exécuter les conteneurs de démonstration Nginx (par exemple, NGinx- Bonjour ) qui servent des pages «Hello World» / Démo. P>
est-ce courant et comment puis-je obtenir mes conteneurs pour rester en cours d'exécution? P>
Que se passe-t-il lorsque vous démarrez un conteneur Docker?
Par défaut, il exécute la commande / Le point d'entrée spécifié dans l'image DockerFile . Généralement, cette commande ou l'entréePoint est un script ou un programme situé dans l'image.
Lorsque ce script / programme sort, le conteneur sort également. C'est tout. P>Pour garder un conteneur vivant, le script / programme doit rester en marche.
Vous démarrez un conteneur d'image Hello, un conteneur "Bonjour" dit "Bonjour" et sort. Cela peut être un script aussi simple que: p>xxx pré> de sorte que cela devrait terminer et quitter le conteneur. Exécutez une base de données ou un serveur Web et vous verrez un comportement différent. Le script / programme continue de fonctionner ... pendant que vous n'arrêtez pas cela. Donc, le conteneur reste également en marche pendant que vous n'arrêtez pas cela. P>
Pour expérimenter, vous pouvez exécuter votre
Bonjour-world code> conteneur avec une commande sans fin: p>
docker run -p 8080:80 --name hello -d hello-world --entrypoint tail -f /dev/null
Pour savoir ce qui ne va pas avec votre utilisation de votre conteneur (connecteurs Docker (nom de votre conteneur)). P>
alors vous pouvez trier ce qui s'est mal passé avec votre conteneur p>
Les conteneurs Docker sont généralement utilisés pour exécuter des applications / des processus dans un environnement isolé. P>
Lorsque vous exécutez l'image Hello-World, il crée un conteneur qui n'a que le but d'imprimer le nom à l'aide de la sortie standard. C'est le seul processus qui a couru et le conteneur a été fait avec son travail. C'est pourquoi vous ne voyez rien lorsque vous avez terminé Pour conserver un conteneur en marche, vous devez avoir un processus à l'intérieur de ce conteneur qui fonctionnera (par exemple: un serveur, une base de données, une application, etc.) P>
Essayez de créer une image MySQL de formulaire de conteneur, puis vérifiez le conteneur d'exécution. P> Docker PS code>. P>
Un conteneur de docker sort lorsque son processus principal se termine. Le processus principal Code> Hello-World imprime simplement du texte et des sorties, des sorties de conteneur également.
Vous pouvez exécuter cette commande directement pour voir le texte: P>
docker run --name nginx-demo -p 8080:80 -d nginx
Vérifiez les journaux du conteneur s'il existe une erreur dans le démarrage du processus dans le conteneur. (
Docker Logs ... code>).
est-ce courant et comment puis-je obtenir mes récipients pour rester en cours d'exécution? B> Votre Docker exécute un processus de course longue, comme un serveur Web, une base de données ou juste un script comme le monde Hello World? Vérifiez les tutoriels auto-guidés docs.docker.com/get-starté / ressources /