The list of Docker statuses is here. However, when I list docker containers using the API, the statuses are shown in 'natural' sentences; e.g.:
Exited (0) NN seconds ago
Up NN days
- and so on...
I couldn't find the definitive list of all string outputs for all the statuses. In other words, I want to parse docker API status strings.
What are all the possible outputs of the Docker API for container statuses?
Here is the api Im talking about.
The logic by which the status summary is generated can be found in the Docker source code, in the file container/states.go
, l. 41ff.. Basically, you'll get one of the following:
- Up 1 day (paused)
- Restarting (123) 1 day ago
- Up 1 day
- Removal in Progress
- Dead
- Created
- Exited (123) 1 day ago
- (empty string)
In order to get a machine-readable output, I'd suggest using the /containers/:id/json
endpoint, which will return a data structure like the following:
"State": {
"Dead": false,
"Error": "",
"ExitCode": 0,
"FinishedAt": "0001-01-01T00:00:00Z",
"OOMKilled": false,
"Paused": false,
"Pid": 2593,
"Restarting": false,
"Running": true,
"StartedAt": "2015-12-26T19:22:38.616937722Z",
"Status": "running"
}
From their docs
One of created, restarting, running, removing, paused, exited, or dead
In my experience, immediately on starting a container, it's created
, then running
, then when it exits with a zero or non-zero exit code, it is exited
.
I've not used the remote API, but I'm pretty sure what you actually want to do is get the ID of all containers, then get the State
information for each container using /containers/(id)/json
:
...
"State": {
"Error": "",
"ExitCode": 9,
"FinishedAt": "2015-01-06T15:47:32.080254511Z",
"OOMKilled": false,
"Paused": false,
"Pid": 0,
"Restarting": false,
"Running": true,
"StartedAt": "2015-01-06T15:47:32.072697474Z",
"Status": "running"
},
...
That way you get the same data in a much more standard form.