Bagaimana untuk mendapatkan kod keluar bekas Docker yang tidak berjalan

王林
Lepaskan: 2024-02-13 12:00:10
ke hadapan
955 orang telah melayarinya

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

editor php Xiaoxin akan memperkenalkan anda cara mendapatkan kod keluar bekas Docker yang tidak berjalan. Apabila menggunakan Docker, kadangkala kita perlu melihat kod keluar bekas apabila ia keluar untuk menyelesaikan masalah atau nyahpepijat. Walau bagaimanapun, apabila bekas tidak berjalan, kami tidak boleh terus menggunakan arahan `docker logs` untuk mendapatkan kod keluar. Dalam artikel ini, kami akan memperkenalkan kaedah untuk mendapatkan kod keluar bekas Docker yang tidak berjalan untuk membantu anda menangani isu berkaitan kontena dengan lebih baik.

Kandungan soalan

Saya perlu mendapatkan kod keluar bekas yang berada dalam keadaan tidak berjalan. Saya tahu bekas itu tidak berjalan, saya mendapat maklumat ini daripada sumber yang berbeza.

Adakah terdapat cara dalam Docker's go SDK untuk mendapatkan kod keluar tanpa perlu menunggu bekas berada dalam keadaan tertentu? Sebagai contoh, apa yang ContainerWaitWaitResponse sediakan?

Adakah hanya memanggil ContainerWait dalam keadaan bekas saya tidak lagi wujud penyelesaian yang baik? Atau adakah penyelesaian yang lebih baik?

Saya amat berminat untuk mengelak ContainerWait kerana saya dapat melihat panggilan itu sangat mahal. Panggilan ke consting bagi setiap bekas mengambil masa kira-kira 10 milisaat jika keadaan bekas dihentikan dan 20 hingga 50 milisaat jika bekas berada dalam keadaan dimulakan semula.

Penyelesaian

Kod keluar terletak di containerstate 结构。这嵌入在 响应中的 <code>state 字段中(*client).containerinspect().

Contohnya:

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
}
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk mendapatkan kod keluar bekas Docker yang tidak berjalan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!