Docker-Container ne fonctionne pas
je suis complètement un débutant à docker. J'ai essayé de démarrer un container sorti comme suit,
- j'ai énuméré tous les contenants disponibles en utilisant
docker ps -a
. Il a énuméré les éléments suivants, 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
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.
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
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:/#
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:/#
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.
- Le statut d'un conteneur comprend
Created
,Running
,Stopped
,Exited
,Dead
et d'autres comme je sais. - Quand nous exécutons
docker create
, docker démon va créer une conteneur avec son statut deCreated
. - Quand
docker start
, le démon docker démarre un conteneur existant qui son statut peut êtreCreated
ouStopped
. - Quand nous exécutons
docker run
, Docker daemon le terminera en deux les étapes:docker create
etdocker start
. - Quand
docker stop
, évidemment Docker daemon arrêtera un conteneur. Ainsi, le conteneur serait dansStopped
statut. - 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]
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:/#