Maison > Article > développement back-end > Comment obtenir le code de sortie d'un conteneur Docker non exécuté
l'éditeur php Xiaoxin vous présentera comment obtenir le code de sortie d'un conteneur Docker non exécuté. Lors de l'utilisation de Docker, nous devons parfois afficher le code de sortie du conteneur lors de sa fermeture pour un dépannage ou un débogage. Cependant, lorsque le conteneur n'est pas en cours d'exécution, nous ne pouvons pas utiliser directement la commande `docker logs` pour obtenir le code de sortie. Dans cet article, nous présenterons une méthode pour obtenir le code de sortie d'un conteneur Docker non en cours d'exécution afin de vous aider à mieux gérer les problèmes liés aux conteneurs.
J'ai besoin d'obtenir le code de sortie d'un conteneur qui est dans un état non exécuté. Je sais que le conteneur ne fonctionne pas, je reçois ces informations de différentes sources.
Existe-t-il un moyen dans le SDK go de Docker d'obtenir le code de sortie sans avoir à attendre que le conteneur soit dans un certain état ?
Par exemple, que propose ContainerWait
的WaitResponse
?
Est-ce qu'appeler simplement ContainerWait
dans un état où mon conteneur n'existe plus est une bonne solution ? Ou bien y a-t-il une meilleure solution?
Je souhaite particulièrement éviter ContainerWait
car je vois que cet appel coûte très cher.
Chaque appel de conteneur à consting prend environ 10 millisecondes si l'état du conteneur est arrêté, et 20 à 50 millisecondes si le conteneur est redémarré.
Le code de sortie se trouve à containerstate
结构。这嵌入在 响应中的 <code>state
字段中(*client).containerinspect().
Par exemple :
func checkExitStatus(ctx context.Context, client *client.Client, containerID string) error { inspection, err := client.ContainerInspect(ctx, containerID) if err != nil { return err } // Possible values are listed in the `ContainerState` docs; there do not // seem to be named constants for these values. if inspection.State.Status != "exited" { return errors.New("container is not exited") } if inspection.State.ExitCode != 0 { return fmt.Errorf("container exited with status %d", inspection.State.ExitCode) } return nil }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!