How to get the exit code of a non-running Docker container

王林
Release: 2024-02-13 12:00:10
forward
955 people have browsed it

如何获取未运行的 Docker 容器的退出代码

php editor Xiaoxin introduces you how to get the exit code of a Docker container that is not running. When using Docker, sometimes we need to view the exit code of the container when it exits for troubleshooting or debugging. However, when the container is not running, we cannot directly use the `docker logs` command to get the exit code. In this article, we will introduce a method to get the exit code of a non-running Docker container to help you better deal with container-related issues.

Question content

I need to get the exit code of a container that is in a non-running state. I know the container is not running, I am getting this information from different sources.

Is there a way in Docker's go SDK to get the exit code without having to wait for the container to be in a certain state? For example, what does WaitResponse of ContainerWait provide?

Is it a good solution to simply call ContainerWait when my container no longer exists? Or is there a better solution?

I'm particularly interested in avoiding ContainerWait because I can see that call being very expensive. Each container call to consting takes approximately 10 milliseconds if the container's state is stopped, and 20 to 50 milliseconds if the container is restarted.

Solution

The exit code is located in the containerstate structure. This is embedded in the state field in the <code> response(*client).containerinspect().

For example:

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
}
Copy after login

The above is the detailed content of How to get the exit code of a non-running Docker container. For more information, please follow other related articles on the PHP Chinese website!

source:stackoverflow.com
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!