Improve description of Running and Paused booleans

Commit abd72d4008 added
a "FIXME" comment to the container "State", mentioning
that a container cannot be both "Running" and "Paused".

This comment was incorrect, because containers on
Linux actually _must_ be running in order to be
paused.

This patch adds additional information both in a
comment, and in the API documentation to clarify
that these booleans are not mutually exclusive.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
This commit is contained in:
Sebastiaan van Stijn 2017-05-19 12:29:54 +02:00
parent ab83b924bc
commit b654b6244d
No known key found for this signature in database
GPG Key ID: 76698F39D527CE8C
3 changed files with 19 additions and 5 deletions

View File

@ -3107,10 +3107,22 @@ paths:
type: "object" type: "object"
properties: properties:
Status: Status:
description: "The status of the container. For example, `running` or `exited`." description: |
The status of the container. For example, `"running"` or `"exited"`.
type: "string" type: "string"
enum: ["created", "running", "paused", "restarting", "removing", "exited", "dead"]
Running: Running:
description: "Whether this container is running." description: |
Whether this container is running.
Note that a running container can be _paused_. The `Running` and `Paused`
booleans are not mutually exclusive:
When pausing a container (on Linux), the cgroups freezer is used to suspend
all processes in the container. Freezing the process requires the process to
be running. As a result, paused containers are both `Running` _and_ `Paused`.
Use the `Status` field instead to determin if a container's state is "running".
type: "boolean" type: "boolean"
Paused: Paused:
description: "Whether this container is paused." description: "Whether this container is paused."

View File

@ -277,7 +277,7 @@ type Health struct {
// ContainerState stores container's running state // ContainerState stores container's running state
// it's part of ContainerJSONBase and will return by "inspect" command // it's part of ContainerJSONBase and will return by "inspect" command
type ContainerState struct { type ContainerState struct {
Status string Status string // String representation of the container state. Can be one of "created", "running", "paused", "restarting", "removing", "exited", or "dead"
Running bool Running bool
Paused bool Paused bool
Restarting bool Restarting bool

View File

@ -17,8 +17,10 @@ import (
// functions defined against State to run against Container. // functions defined against State to run against Container.
type State struct { type State struct {
sync.Mutex sync.Mutex
// FIXME: Why do we have both paused and running if a // Note that `Running` and `Paused` are not mutually exclusive:
// container cannot be paused and running at the same time? // When pausing a container (on Linux), the cgroups freezer is used to suspend
// all processes in the container. Freezing the process requires the process to
// be running. As a result, paused containers are both `Running` _and_ `Paused`.
Running bool Running bool
Paused bool Paused bool
Restarting bool Restarting bool