Docker.DotNet get ContainerState to access StartedAt property

153 Views Asked by At

I am trying to access "StartedAt" for a Container using Docker DotNet. In my code I can get the Uptime, by accessing the Status property on a container.

However, I found the Docker.DotNet.Models.ContainerState Class in the Docker Dotnet code base. Ideally I would rather use that to gain access to the Container Stats such as StartedAt etc.

How do I access a container's ContainerState? See my current code below...

DockerClient client = 
        new DockerClientConfiguration(new Uri("npipe://./pipe/docker_engine")).CreateClient();


      Task<IList<ContainerListResponse>> t = client.Containers.ListContainersAsync(
        new ContainersListParameters()
        {
          Limit = 10,
        });

      t.Wait();
      IList<ContainerListResponse> r = t.Result;
      foreach (var item in r)
      {
        if (item.Status.IndexOf("up", StringComparison.InvariantCultureIgnoreCase) == -1)
        {
          Console.WriteLine($"{item.Names[0]}-  The process is not currently running. {item.State}");
        }
        else
        {
          Console.WriteLine($"{item.Names[0]}-  The process is running. {item.State}");
        }
      }

      
    Console.ReadLine();

The class in the Project:

namespace Docker.DotNet.Models
{
  [DataContract]
  public class ContainerState
  {
    [DataMember(Name = "Status", EmitDefaultValue = false)]
    public string Status { get; set; }

    [DataMember(Name = "Running", EmitDefaultValue = false)]
    public bool Running { get; set; }

    [DataMember(Name = "Paused", EmitDefaultValue = false)]
    public bool Paused { get; set; }

    [DataMember(Name = "Restarting", EmitDefaultValue = false)]
    public bool Restarting { get; set; }

    [DataMember(Name = "OOMKilled", EmitDefaultValue = false)]
    public bool OOMKilled { get; set; }

    [DataMember(Name = "Dead", EmitDefaultValue = false)]
    public bool Dead { get; set; }

    [DataMember(Name = "Pid", EmitDefaultValue = false)]
    public long Pid { get; set; }

    [DataMember(Name = "ExitCode", EmitDefaultValue = false)]
    public long ExitCode { get; set; }

    [DataMember(Name = "Error", EmitDefaultValue = false)]
    public string Error { get; set; }

    [DataMember(Name = "StartedAt", EmitDefaultValue = false)]
    public string StartedAt { get; set; }

    [DataMember(Name = "FinishedAt", EmitDefaultValue = false)]
    public string FinishedAt { get; set; }

    [DataMember(Name = "Health", EmitDefaultValue = false)]
    public Health Health { get; set; }
  }
}
0

There are 0 best solutions below