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; }
}
}