Docker-Container ne fonctionne pas

je suis complètement un débutant à docker. J'ai essayé de démarrer un container sorti comme suit,

  1. j'ai énuméré tous les contenants disponibles en utilisant docker ps -a. Il a énuméré les éléments suivants, docker list all images
  2. j'ai entré les commandes suivantes pour démarrer le conteneur qui est à l'étape de sortie et entrer dans le terminal de cette image.

    docker start 79b3fa70b51d docker exec -it 79b3fa70b51d binsh

  3. Il est en train de jeter les suivantes erreur.

    FATA[0000] Error response from daemon: Container 79b3fa70b51d is not running

mais quand je démarre le conteneur en utilisant docker start 79b3fa70b51d. Il lance le conteneur ID en sortie ce qui est normal si tout fonctionne normalement. Je ne suis pas sûr de ce que provoque cette erreur. Toute idée sur les causes et les suggestions à ce sujet serait très utile pour moi. Merci à l'avance.

33
demandé sur mohan08p 2015-04-13 10:07:11

5 réponses

Container 79b3fa70b51d semble être la seule à faire un echo.

cela signifie qu'il démarre, résonne et sort immédiatement.

Les docker exec commande ne le trouverait pas en cours d'exécution pour s'attacher à ce conteneur et exécuter n'importe quelle commande: il est trop tard. Le conteneur a déjà quitté.

docker exec la commande exécute une nouvelle commande dans un conteneur en cours d'exécution.

la commande a commencé à utiliser docker exec sera exécuté uniquement alors que le processus primaire du conteneur (PID 1) est

11
répondu VonC 2015-04-13 07:13:11

par défaut, Docker container sortira immédiatement si vous n'avez aucune tâche en cours sur le conteneur.

pour garder le conteneur en arrière-plan, essayez de le lancer avec --detach (ou -d) argument.

exemples:

docker pull debian

docker run -t -d --name my_debian debian
e7672d54b0c2

docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
e7672d54b0c2        debian              "bash"              3 minutes ago       Up 3 minutes                            my_debian

#now you can execute command on the container
docker exec -it my_debian bash
root@e7672d54b0c2:/# 
19
répondu Dio Phung 2017-07-23 23:40:29

S'il n'est pas possible de recommencer le processus principal (assez longtemps), il y a aussi la possibilité de commit le conteneur vers une nouvelle image et lancer un nouveau conteneur à partir de cette image. Bien que ce ne soit pas l'habituel flux, je trouve ça vraiment utile pour déboguer un défaut de script de temps en temps.

docker exec -it 6198ef53d943 bash
Error response from daemon: Container 6198ef53d9431a3f38e8b38d7869940f7fb803afac4a2d599812b8e42419c574 is not running

docker commit 6198ef53d943
sha256:ace7ca65e6e3fdb678d9cdfb33a7a165c510e65c3bc28fecb960ac993c37ef33

docker run -it ace7ca65e6e bash
root@72d38a8c787d:/#
4
répondu Matthias Kuhn 2018-03-10 01:34:57

la raison est juste ce que la réponse acceptée disait. J'ajoute quelques informations supplémentaires, qui pourraient permettre de mieux comprendre cette question.

  1. Le statut d'un conteneur comprend Created,Running, Stopped, Exited,Dead et d'autres comme je sais.
  2. Quand nous exécutons docker create, docker démon va créer une conteneur avec son statut de Created.
  3. Quand docker start, le démon docker démarre un conteneur existant qui son statut peut être Created ou Stopped.
  4. Quand nous exécutons docker run, Docker daemon le terminera en deux les étapes: docker create et docker start.
  5. Quand docker stop, évidemment Docker daemon arrêtera un conteneur. Ainsi, le conteneur serait dans Stopped statut.
  6. le plus important, un conteneur d'imaginer lui-même la tenue d'un processus à long terme. Lorsque le processus se termine, le conteneur processus permettrait de sortie trop. Ainsi le statut de ce conteneur serait Exited.

Quand le processus de sortie? En un mot, quel est le processus, comment avons-nous commencer?

La réponse est CMD dans un fichier dockerfile ou command dans l'expression suivante, qui est bash par défaut dans certaines images, c'est à dire ubutu:18.04.

docker run ubuntu:18.04 [command]
1
répondu Light.G 2018-09-25 07:19:03

tout d'abord, nous devons démarrer le docker container

ankit@ankit-HP-Notebook:~$  sudo docker start 3a19b39ea021

                        3a19b39ea021

après cela, vérifiez le conteneur docker:

ankit@ankit-HP-Notebook:~$  sudo docker ps -a

 CONTAINER ID        IMAGE                         COMMAND             CREATED             STATUS                   PORTS               NAMES

  3a19b39ea021        coreapps/ubuntu16.04:latest   "bash"              13 hours ago        
  Up 9 seconds                                 ubuntu1

  455b66057060        hello-world                   "/hello"            4 weeks ago         

Exited (0) 4 weeks ago                       vigorous_bardeen

puis exécutez en utilisant la commande suivante:

ankit@ankit-HP-Notebook:~$  sudo docker exec -it 3a19b39ea021 bash

root@3a19b39ea021:/# 
0
répondu Ankit gupta 2018-09-04 16:33:08