Docker - Conteneur est pas en cours d'exécution
Je suis complètement novice à docker. J'ai essayé de commencer un sorti de conteneur comme suit,
- J'ai énumérés disponibles aux récipients à l'aide de
docker ps -a
. Il a énuméré les éléments suivants,
-
J'ai entré les commandes suivantes pour démarrer le conteneur qui est dans le a quitté la scène et entrez dans le terminal de l'image.
docker start 79b3fa70b51d
docker exec -it 79b3fa70b51d \bin\sh
-
C'est jeter l'erreur suivante.
FATA[0000] Error response from daemon: Container 79b3fa70b51d is not running
Mais quand je lance le conteneur à l'aide de docker start 79b3fa70b51d
. Il jette le numéro du conteneur en sortie, ce qui est normal si il ont tout fonctionne normalement. Je ne suis pas sûr de ce que provoque cette erreur. Aucune idée sur les causes et suggestions à propos de ce serait grandement utile pour moi. Merci à l'avance.
- Salut, Pouvez-vous nous expliquer comment vous l'avez résolu ce problème. Je crains que la réponse ci-dessous ne font pas beaucoup de sens
- Les conteneurs Docker ne sont pas comme les VMs; ils sont conçus pour exécuter une application. Lorsque l'application se termine, le conteneur. Dans ce cas, l'utilisateur a défini la "demande" pour le conteneur de la commande "echo". Parce que la commande "echo" effectue une echo et puis s'arrête, le conteneur, qui se termine avec la commande. Si il commence le conteneur de nouveau, il effectue l'echo et de nouveau se termine. La commande EXEC nécessite l'exécution d'un conteneur. Parce que le conteneur a pris fin, il ne peut pas être utilisé pour exécuter des commandes supplémentaires.
Vous devez vous connecter pour publier un commentaire.
Conteneur
79b3fa70b51d
semble être la seule à faire unecho
.Qui signifie qu'il commence, l'echo, puis se ferme immédiatement.
La prochaine
docker exec
commande de ne pas le trouver en cours d'exécution afin de s'attacher à ce conteneur et l'exécution de toute commande: il est trop tard. Le conteneur a déjà quitté.docker run -it --rm udhayakumar/busyboxwithtouch
devrait être suffisant pour ouvrir une session. Le point d'entrée par défaut devrait être /bin/sh, mais cela dépend de votre Dockerfile: vous pourriez avoir à définir un autre point d'entrée et/ou une autre CMD.docker exec
) joindre à elle.Par défaut, le panneau contenant devra quitter immédiatement si vous n'avez pas toutes les tâches en cours d'exécution sur le conteneur.
À conserver le récipient cours d'exécution en arrière-plan, essayez de le lancer avec
--detach
(ou-d
argument).Pour exemples:
Si il n'est pas possible de démarrer le processus principal de nouveau (assez longtemps), il y a aussi la possibilité de
commit
le conteneur à une nouvelle image et d'exécuter un nouveau conteneur à partir de cette image. Si ce n'est pas l'habitude les meilleures pratiques de flux de travail, je trouve ça vraiment utile pour déboguer un défaut de script de temps en temps.bash
processus dans le conteneur. Vous avez probablement eu un serveur web en cours d'exécution avant de sorte que vous aurez à vérifier la commande qui doit être utilisé pour remettre le serveur en place.Tout d'abord, nous devons commencer par le conteneur docker
Ensuite, vérifiez-le conteneur docker:
Puis l'exécuter à l'aide de la commande ci-dessous:
La raison est juste ce que l'on a accepté de répondre à dit. - Je ajouter des informations supplémentaires, qui peuvent fournir une meilleure compréhension sur cette question.
Created
,Running
,Stopped
,Exited
,Dead
et d'autres personnes que je connais.docker create
, docker démon va créer uneconteneur avec son statut de
Created
.docker start
, docker démon va démarrer un conteneur existantqui son statut peut être
Created
ouStopped
.docker run
, docker démon va terminer dans les deuxétapes:
docker create
etdocker start
.docker stop
, évidemment docker démon s'arrête un conteneur.Ainsi, le conteneur serait en
Stopped
état.la tenue d'un processus à long terme en elle. Lorsque le processus se termine, le
conteneur processus permettrait de sortie trop. Ainsi, le statut de cette
conteneur serait
Exited
.Quand le processus de sortie? En un mot, quel est le processus, comment avons-nous lancer?
La réponse est
CMD
dans un dockerfile oucommand
dans l'expression suivante, qui estbash
par défaut dans certaines images, c'est à dire ubutu:18.04.