Added start period option to health check.

Signed-off-by: Elias Faxö <elias.faxo@gmail.com>
This commit is contained in:
Elias Faxö 2016-11-29 10:58:47 +01:00 committed by Elias Faxö
parent 5b18e7c396
commit e401f63735
24 changed files with 404 additions and 287 deletions

View File

@ -506,6 +506,9 @@ definitions:
Retries: Retries:
description: "The number of consecutive failures needed to consider a container as unhealthy. 0 means inherit." description: "The number of consecutive failures needed to consider a container as unhealthy. 0 means inherit."
type: "integer" type: "integer"
StartPeriod:
description: "Start period for the container to initialize before starting health-retries countdown in nanoseconds. 0 means inherit."
type: "integer"
HostConfig: HostConfig:
description: "Container configuration that depends on the host we are running on" description: "Container configuration that depends on the host we are running on"

View File

@ -19,8 +19,9 @@ type HealthConfig struct {
Test []string `json:",omitempty"` Test []string `json:",omitempty"`
// Zero means to inherit. Durations are expressed as integer nanoseconds. // Zero means to inherit. Durations are expressed as integer nanoseconds.
Interval time.Duration `json:",omitempty"` // Interval is the time to wait between checks. Interval time.Duration `json:",omitempty"` // Interval is the time to wait between checks.
Timeout time.Duration `json:",omitempty"` // Timeout is the time to wait before considering the check to have hung. Timeout time.Duration `json:",omitempty"` // Timeout is the time to wait before considering the check to have hung.
StartPeriod time.Duration `json:",omitempty"` // The start period for the container to initialize before the retries starts to count down.
// Retries is the number of consecutive failures needed to consider a container as unhealthy. // Retries is the number of consecutive failures needed to consider a container as unhealthy.
// Zero means inherit. // Zero means inherit.

View File

@ -540,6 +540,7 @@ func healthcheck(b *Builder, args []string, attributes map[string]bool, original
flInterval := b.flags.AddString("interval", "") flInterval := b.flags.AddString("interval", "")
flTimeout := b.flags.AddString("timeout", "") flTimeout := b.flags.AddString("timeout", "")
flStartPeriod := b.flags.AddString("start-period", "")
flRetries := b.flags.AddString("retries", "") flRetries := b.flags.AddString("retries", "")
if err := b.flags.Parse(); err != nil { if err := b.flags.Parse(); err != nil {
@ -574,6 +575,12 @@ func healthcheck(b *Builder, args []string, attributes map[string]bool, original
} }
healthcheck.Timeout = timeout healthcheck.Timeout = timeout
startPeriod, err := parseOptInterval(flStartPeriod)
if err != nil {
return err
}
healthcheck.StartPeriod = startPeriod
if flRetries.Value != "" { if flRetries.Value != "" {
retries, err := strconv.ParseInt(flRetries.Value, 10, 32) retries, err := strconv.ParseInt(flRetries.Value, 10, 32)
if err != nil { if err != nil {

View File

@ -113,6 +113,7 @@ type containerOptions struct {
healthCmd string healthCmd string
healthInterval time.Duration healthInterval time.Duration
healthTimeout time.Duration healthTimeout time.Duration
healthStartPeriod time.Duration
healthRetries int healthRetries int
runtime string runtime string
autoRemove bool autoRemove bool
@ -232,6 +233,8 @@ func addFlags(flags *pflag.FlagSet) *containerOptions {
flags.DurationVar(&copts.healthInterval, "health-interval", 0, "Time between running the check (ns|us|ms|s|m|h) (default 0s)") flags.DurationVar(&copts.healthInterval, "health-interval", 0, "Time between running the check (ns|us|ms|s|m|h) (default 0s)")
flags.IntVar(&copts.healthRetries, "health-retries", 0, "Consecutive failures needed to report unhealthy") flags.IntVar(&copts.healthRetries, "health-retries", 0, "Consecutive failures needed to report unhealthy")
flags.DurationVar(&copts.healthTimeout, "health-timeout", 0, "Maximum time to allow one check to run (ns|us|ms|s|m|h) (default 0s)") flags.DurationVar(&copts.healthTimeout, "health-timeout", 0, "Maximum time to allow one check to run (ns|us|ms|s|m|h) (default 0s)")
flags.DurationVar(&copts.healthStartPeriod, "health-start-period", 0, "Start period for the container to initialize before starting health-retries countdown (ns|us|ms|s|m|h) (default 0s)")
flags.SetAnnotation("health-start-period", "version", []string{"1.29"})
flags.BoolVar(&copts.noHealthcheck, "no-healthcheck", false, "Disable any container-specified HEALTHCHECK") flags.BoolVar(&copts.noHealthcheck, "no-healthcheck", false, "Disable any container-specified HEALTHCHECK")
// Resource management // Resource management
@ -464,6 +467,7 @@ func parse(flags *pflag.FlagSet, copts *containerOptions) (*containerConfig, err
haveHealthSettings := copts.healthCmd != "" || haveHealthSettings := copts.healthCmd != "" ||
copts.healthInterval != 0 || copts.healthInterval != 0 ||
copts.healthTimeout != 0 || copts.healthTimeout != 0 ||
copts.healthStartPeriod != 0 ||
copts.healthRetries != 0 copts.healthRetries != 0
if copts.noHealthcheck { if copts.noHealthcheck {
if haveHealthSettings { if haveHealthSettings {
@ -486,12 +490,16 @@ func parse(flags *pflag.FlagSet, copts *containerOptions) (*containerConfig, err
if copts.healthRetries < 0 { if copts.healthRetries < 0 {
return nil, errors.Errorf("--health-retries cannot be negative") return nil, errors.Errorf("--health-retries cannot be negative")
} }
if copts.healthStartPeriod < 0 {
return nil, fmt.Errorf("--health-start-period cannot be negative")
}
healthConfig = &container.HealthConfig{ healthConfig = &container.HealthConfig{
Test: probe, Test: probe,
Interval: copts.healthInterval, Interval: copts.healthInterval,
Timeout: copts.healthTimeout, Timeout: copts.healthTimeout,
Retries: copts.healthRetries, StartPeriod: copts.healthStartPeriod,
Retries: copts.healthRetries,
} }
} }

View File

@ -501,8 +501,8 @@ func TestParseHealth(t *testing.T) {
checkError("--no-healthcheck conflicts with --health-* options", checkError("--no-healthcheck conflicts with --health-* options",
"--no-healthcheck", "--health-cmd=/check.sh -q", "img", "cmd") "--no-healthcheck", "--health-cmd=/check.sh -q", "img", "cmd")
health = checkOk("--health-timeout=2s", "--health-retries=3", "--health-interval=4.5s", "img", "cmd") health = checkOk("--health-timeout=2s", "--health-retries=3", "--health-interval=4.5s", "--health-start-period=5s", "img", "cmd")
if health.Timeout != 2*time.Second || health.Retries != 3 || health.Interval != 4500*time.Millisecond { if health.Timeout != 2*time.Second || health.Retries != 3 || health.Interval != 4500*time.Millisecond || health.StartPeriod != 5*time.Second {
t.Fatalf("--health-*: got %#v", health) t.Fatalf("--health-*: got %#v", health)
} }
} }

View File

@ -282,6 +282,7 @@ type healthCheckOptions struct {
interval PositiveDurationOpt interval PositiveDurationOpt
timeout PositiveDurationOpt timeout PositiveDurationOpt
retries int retries int
startPeriod PositiveDurationOpt
noHealthcheck bool noHealthcheck bool
} }
@ -301,18 +302,22 @@ func (opts *healthCheckOptions) toHealthConfig() (*container.HealthConfig, error
if opts.cmd != "" { if opts.cmd != "" {
test = []string{"CMD-SHELL", opts.cmd} test = []string{"CMD-SHELL", opts.cmd}
} }
var interval, timeout time.Duration var interval, timeout, startPeriod time.Duration
if ptr := opts.interval.Value(); ptr != nil { if ptr := opts.interval.Value(); ptr != nil {
interval = *ptr interval = *ptr
} }
if ptr := opts.timeout.Value(); ptr != nil { if ptr := opts.timeout.Value(); ptr != nil {
timeout = *ptr timeout = *ptr
} }
if ptr := opts.startPeriod.Value(); ptr != nil {
startPeriod = *ptr
}
healthConfig = &container.HealthConfig{ healthConfig = &container.HealthConfig{
Test: test, Test: test,
Interval: interval, Interval: interval,
Timeout: timeout, Timeout: timeout,
Retries: opts.retries, Retries: opts.retries,
StartPeriod: startPeriod,
} }
} }
return healthConfig, nil return healthConfig, nil
@ -555,6 +560,8 @@ func addServiceFlags(flags *pflag.FlagSet, opts *serviceOptions) {
flags.SetAnnotation(flagHealthTimeout, "version", []string{"1.25"}) flags.SetAnnotation(flagHealthTimeout, "version", []string{"1.25"})
flags.IntVar(&opts.healthcheck.retries, flagHealthRetries, 0, "Consecutive failures needed to report unhealthy") flags.IntVar(&opts.healthcheck.retries, flagHealthRetries, 0, "Consecutive failures needed to report unhealthy")
flags.SetAnnotation(flagHealthRetries, "version", []string{"1.25"}) flags.SetAnnotation(flagHealthRetries, "version", []string{"1.25"})
flags.Var(&opts.healthcheck.startPeriod, flagHealthStartPeriod, "Start period for the container to initialize before counting retries towards unstable (ns|us|ms|s|m|h)")
flags.SetAnnotation(flagHealthStartPeriod, "version", []string{"1.29"})
flags.BoolVar(&opts.healthcheck.noHealthcheck, flagNoHealthcheck, false, "Disable any container-specified HEALTHCHECK") flags.BoolVar(&opts.healthcheck.noHealthcheck, flagNoHealthcheck, false, "Disable any container-specified HEALTHCHECK")
flags.SetAnnotation(flagNoHealthcheck, "version", []string{"1.25"}) flags.SetAnnotation(flagNoHealthcheck, "version", []string{"1.25"})
@ -644,6 +651,7 @@ const (
flagHealthInterval = "health-interval" flagHealthInterval = "health-interval"
flagHealthRetries = "health-retries" flagHealthRetries = "health-retries"
flagHealthTimeout = "health-timeout" flagHealthTimeout = "health-timeout"
flagHealthStartPeriod = "health-start-period"
flagNoHealthcheck = "no-healthcheck" flagNoHealthcheck = "no-healthcheck"
flagSecret = "secret" flagSecret = "secret"
flagSecretAdd = "secret-add" flagSecretAdd = "secret-add"

View File

@ -71,18 +71,20 @@ func TestUint64OptSetAndValue(t *testing.T) {
func TestHealthCheckOptionsToHealthConfig(t *testing.T) { func TestHealthCheckOptionsToHealthConfig(t *testing.T) {
dur := time.Second dur := time.Second
opt := healthCheckOptions{ opt := healthCheckOptions{
cmd: "curl", cmd: "curl",
interval: PositiveDurationOpt{DurationOpt{value: &dur}}, interval: PositiveDurationOpt{DurationOpt{value: &dur}},
timeout: PositiveDurationOpt{DurationOpt{value: &dur}}, timeout: PositiveDurationOpt{DurationOpt{value: &dur}},
retries: 10, startPeriod: PositiveDurationOpt{DurationOpt{value: &dur}},
retries: 10,
} }
config, err := opt.toHealthConfig() config, err := opt.toHealthConfig()
assert.NilError(t, err) assert.NilError(t, err)
assert.Equal(t, reflect.DeepEqual(config, &container.HealthConfig{ assert.Equal(t, reflect.DeepEqual(config, &container.HealthConfig{
Test: []string{"CMD-SHELL", "curl"}, Test: []string{"CMD-SHELL", "curl"},
Interval: time.Second, Interval: time.Second,
Timeout: time.Second, Timeout: time.Second,
Retries: 10, StartPeriod: time.Second,
Retries: 10,
}), true) }), true)
} }

View File

@ -897,7 +897,7 @@ func updateLogDriver(flags *pflag.FlagSet, taskTemplate *swarm.TaskSpec) error {
} }
func updateHealthcheck(flags *pflag.FlagSet, containerSpec *swarm.ContainerSpec) error { func updateHealthcheck(flags *pflag.FlagSet, containerSpec *swarm.ContainerSpec) error {
if !anyChanged(flags, flagNoHealthcheck, flagHealthCmd, flagHealthInterval, flagHealthRetries, flagHealthTimeout) { if !anyChanged(flags, flagNoHealthcheck, flagHealthCmd, flagHealthInterval, flagHealthRetries, flagHealthTimeout, flagHealthStartPeriod) {
return nil return nil
} }
if containerSpec.Healthcheck == nil { if containerSpec.Healthcheck == nil {
@ -908,7 +908,7 @@ func updateHealthcheck(flags *pflag.FlagSet, containerSpec *swarm.ContainerSpec)
return err return err
} }
if noHealthcheck { if noHealthcheck {
if !anyChanged(flags, flagHealthCmd, flagHealthInterval, flagHealthRetries, flagHealthTimeout) { if !anyChanged(flags, flagHealthCmd, flagHealthInterval, flagHealthRetries, flagHealthTimeout, flagHealthStartPeriod) {
containerSpec.Healthcheck = &container.HealthConfig{ containerSpec.Healthcheck = &container.HealthConfig{
Test: []string{"NONE"}, Test: []string{"NONE"},
} }
@ -927,6 +927,10 @@ func updateHealthcheck(flags *pflag.FlagSet, containerSpec *swarm.ContainerSpec)
val := *flags.Lookup(flagHealthTimeout).Value.(*PositiveDurationOpt).Value() val := *flags.Lookup(flagHealthTimeout).Value.(*PositiveDurationOpt).Value()
containerSpec.Healthcheck.Timeout = val containerSpec.Healthcheck.Timeout = val
} }
if flags.Changed(flagHealthStartPeriod) {
val := *flags.Lookup(flagHealthStartPeriod).Value.(*PositiveDurationOpt).Value()
containerSpec.Healthcheck.StartPeriod = val
}
if flags.Changed(flagHealthRetries) { if flags.Changed(flagHealthRetries) {
containerSpec.Healthcheck.Retries, _ = flags.GetInt(flagHealthRetries) containerSpec.Healthcheck.Retries, _ = flags.GetInt(flagHealthRetries)
} }

View File

@ -311,6 +311,11 @@ func TestUpdateHealthcheckTable(t *testing.T) {
initial: &container.HealthConfig{Test: []string{"CMD", "cmd1"}, Retries: 10}, initial: &container.HealthConfig{Test: []string{"CMD", "cmd1"}, Retries: 10},
expected: &container.HealthConfig{Test: []string{"CMD", "cmd1"}}, expected: &container.HealthConfig{Test: []string{"CMD", "cmd1"}},
}, },
{
flags: [][2]string{{"health-start-period", "1m"}},
initial: &container.HealthConfig{Test: []string{"CMD", "cmd1"}},
expected: &container.HealthConfig{Test: []string{"CMD", "cmd1"}, StartPeriod: time.Minute},
},
{ {
flags: [][2]string{{"health-cmd", "cmd1"}, {"no-healthcheck", "true"}}, flags: [][2]string{{"health-cmd", "cmd1"}, {"no-healthcheck", "true"}},
err: "--no-healthcheck conflicts with --health-* options", err: "--no-healthcheck conflicts with --health-* options",

View File

@ -255,9 +255,9 @@ func convertHealthcheck(healthcheck *composetypes.HealthCheckConfig) (*container
return nil, nil return nil, nil
} }
var ( var (
err error err error
timeout, interval time.Duration timeout, interval, startPeriod time.Duration
retries int retries int
) )
if healthcheck.Disable { if healthcheck.Disable {
if len(healthcheck.Test) != 0 { if len(healthcheck.Test) != 0 {
@ -280,14 +280,21 @@ func convertHealthcheck(healthcheck *composetypes.HealthCheckConfig) (*container
return nil, err return nil, err
} }
} }
if healthcheck.StartPeriod != "" {
startPeriod, err = time.ParseDuration(healthcheck.StartPeriod)
if err != nil {
return nil, err
}
}
if healthcheck.Retries != nil { if healthcheck.Retries != nil {
retries = int(*healthcheck.Retries) retries = int(*healthcheck.Retries)
} }
return &container.HealthConfig{ return &container.HealthConfig{
Test: healthcheck.Test, Test: healthcheck.Test,
Timeout: timeout, Timeout: timeout,
Interval: interval, Interval: interval,
Retries: retries, Retries: retries,
StartPeriod: startPeriod,
}, nil }, nil
} }

View File

@ -163,11 +163,12 @@ type DeployConfig struct {
// HealthCheckConfig the healthcheck configuration for a service // HealthCheckConfig the healthcheck configuration for a service
type HealthCheckConfig struct { type HealthCheckConfig struct {
Test HealthCheckTest Test HealthCheckTest
Timeout string Timeout string
Interval string Interval string
Retries *uint64 Retries *uint64
Disable bool StartPeriod string
Disable bool
} }
// HealthCheckTest is the command run to test the health of a service // HealthCheckTest is the command run to test the health of a service

View File

@ -221,19 +221,22 @@ func containerToGRPC(c types.ContainerSpec) (*swarmapi.ContainerSpec, error) {
func healthConfigFromGRPC(h *swarmapi.HealthConfig) *container.HealthConfig { func healthConfigFromGRPC(h *swarmapi.HealthConfig) *container.HealthConfig {
interval, _ := gogotypes.DurationFromProto(h.Interval) interval, _ := gogotypes.DurationFromProto(h.Interval)
timeout, _ := gogotypes.DurationFromProto(h.Timeout) timeout, _ := gogotypes.DurationFromProto(h.Timeout)
startPeriod, _ := gogotypes.DurationFromProto(h.Timeout)
return &container.HealthConfig{ return &container.HealthConfig{
Test: h.Test, Test: h.Test,
Interval: interval, Interval: interval,
Timeout: timeout, Timeout: timeout,
Retries: int(h.Retries), Retries: int(h.Retries),
StartPeriod: startPeriod,
} }
} }
func healthConfigToGRPC(h *container.HealthConfig) *swarmapi.HealthConfig { func healthConfigToGRPC(h *container.HealthConfig) *swarmapi.HealthConfig {
return &swarmapi.HealthConfig{ return &swarmapi.HealthConfig{
Test: h.Test, Test: h.Test,
Interval: gogotypes.DurationProto(h.Interval), Interval: gogotypes.DurationProto(h.Interval),
Timeout: gogotypes.DurationProto(h.Timeout), Timeout: gogotypes.DurationProto(h.Timeout),
Retries: int32(h.Retries), Retries: int32(h.Retries),
StartPeriod: gogotypes.DurationProto(h.StartPeriod),
} }
} }

View File

@ -326,11 +326,13 @@ func (c *containerConfig) healthcheck() *enginecontainer.HealthConfig {
} }
interval, _ := gogotypes.DurationFromProto(hcSpec.Interval) interval, _ := gogotypes.DurationFromProto(hcSpec.Interval)
timeout, _ := gogotypes.DurationFromProto(hcSpec.Timeout) timeout, _ := gogotypes.DurationFromProto(hcSpec.Timeout)
startPeriod, _ := gogotypes.DurationFromProto(hcSpec.StartPeriod)
return &enginecontainer.HealthConfig{ return &enginecontainer.HealthConfig{
Test: hcSpec.Test, Test: hcSpec.Test,
Interval: interval, Interval: interval,
Timeout: timeout, Timeout: timeout,
Retries: int(hcSpec.Retries), Retries: int(hcSpec.Retries),
StartPeriod: startPeriod,
} }
} }

View File

@ -94,6 +94,9 @@ func merge(userConf, imageConf *containertypes.Config) error {
if userConf.Healthcheck.Timeout == 0 { if userConf.Healthcheck.Timeout == 0 {
userConf.Healthcheck.Timeout = imageConf.Healthcheck.Timeout userConf.Healthcheck.Timeout = imageConf.Healthcheck.Timeout
} }
if userConf.Healthcheck.StartPeriod == 0 {
userConf.Healthcheck.StartPeriod = imageConf.Healthcheck.StartPeriod
}
if userConf.Healthcheck.Retries == 0 { if userConf.Healthcheck.Retries == 0 {
userConf.Healthcheck.Retries = imageConf.Healthcheck.Retries userConf.Healthcheck.Retries = imageConf.Healthcheck.Retries
} }

View File

@ -255,6 +255,10 @@ func (daemon *Daemon) verifyContainerSettings(hostConfig *containertypes.HostCon
if config.Healthcheck.Retries < 0 { if config.Healthcheck.Retries < 0 {
return nil, fmt.Errorf("Retries in Healthcheck cannot be negative") return nil, fmt.Errorf("Retries in Healthcheck cannot be negative")
} }
if config.Healthcheck.StartPeriod < 0 {
return nil, fmt.Errorf("StartPeriod in Healthcheck cannot be negative")
}
} }
} }

View File

@ -30,6 +30,10 @@ const (
// than this, the check is considered to have failed. // than this, the check is considered to have failed.
defaultProbeTimeout = 30 * time.Second defaultProbeTimeout = 30 * time.Second
// The time given for the container to start before the health check starts considering
// the container unstable. Defaults to none.
defaultStartPeriod = 0 * time.Second
// Default number of consecutive failures of the health check // Default number of consecutive failures of the health check
// for the container to be considered unhealthy. // for the container to be considered unhealthy.
defaultProbeRetries = 3 defaultProbeRetries = 3
@ -133,11 +137,28 @@ func handleProbeResult(d *Daemon, c *container.Container, result *types.Healthch
if result.ExitCode == exitStatusHealthy { if result.ExitCode == exitStatusHealthy {
h.FailingStreak = 0 h.FailingStreak = 0
h.Status = types.Healthy h.Status = types.Healthy
} else { } else { // Failure (including invalid exit code)
// Failure (including invalid exit code) shouldIncrementStreak := true
h.FailingStreak++
if h.FailingStreak >= retries { // If the container is starting (i.e. we never had a successful health check)
h.Status = types.Unhealthy // then we check if we are within the start period of the container in which
// case we do not increment the failure streak.
if h.Status == types.Starting {
startPeriod := timeoutWithDefault(c.Config.Healthcheck.StartPeriod, defaultStartPeriod)
timeSinceStart := result.Start.Sub(c.State.StartedAt)
// If still within the start period, then don't increment failing streak.
if timeSinceStart < startPeriod {
shouldIncrementStreak = false
}
}
if shouldIncrementStreak {
h.FailingStreak++
if h.FailingStreak >= retries {
h.Status = types.Unhealthy
}
} }
// Else we're starting or healthy. Stay in that state. // Else we're starting or healthy. Stay in that state.
} }

View File

@ -116,4 +116,30 @@ func TestHealthStates(t *testing.T) {
if c.State.Health.FailingStreak != 0 { if c.State.Health.FailingStreak != 0 {
t.Errorf("Expecting FailingStreak=0, but got %d\n", c.State.Health.FailingStreak) t.Errorf("Expecting FailingStreak=0, but got %d\n", c.State.Health.FailingStreak)
} }
// Test start period
reset(c)
c.Config.Healthcheck.Retries = 2
c.Config.Healthcheck.StartPeriod = 30 * time.Second
handleResult(c.State.StartedAt.Add(20*time.Second), 1)
if c.State.Health.Status != types.Starting {
t.Errorf("Expecting starting, but got %#v\n", c.State.Health.Status)
}
if c.State.Health.FailingStreak != 0 {
t.Errorf("Expecting FailingStreak=0, but got %d\n", c.State.Health.FailingStreak)
}
handleResult(c.State.StartedAt.Add(50*time.Second), 1)
if c.State.Health.Status != types.Starting {
t.Errorf("Expecting starting, but got %#v\n", c.State.Health.Status)
}
if c.State.Health.FailingStreak != 1 {
t.Errorf("Expecting FailingStreak=1, but got %d\n", c.State.Health.FailingStreak)
}
handleResult(c.State.StartedAt.Add(80*time.Second), 0)
expect("health_status: healthy")
if c.State.Health.FailingStreak != 0 {
t.Errorf("Expecting FailingStreak=0, but got %d\n", c.State.Health.FailingStreak)
}
} }

View File

@ -22,6 +22,7 @@ keywords: "API, Docker, rcli, REST, documentation"
* `POST /networks/create` now supports creating the ingress network, by specifying an `Ingress` boolean field. As of now this is supported only when using the overlay network driver. * `POST /networks/create` now supports creating the ingress network, by specifying an `Ingress` boolean field. As of now this is supported only when using the overlay network driver.
* `GET /networks/(name)` now returns an `Ingress` field showing whether the network is the ingress one. * `GET /networks/(name)` now returns an `Ingress` field showing whether the network is the ingress one.
* `GET /networks/` now supports a `scope` filter to filter networks based on the network mode (`swarm`, `global`, or `local`). * `GET /networks/` now supports a `scope` filter to filter networks based on the network mode (`swarm`, `global`, or `local`).
* `POST /containers/create`, `POST /service/create` and `POST /services/(id or name)/update` now takes the field `StartPeriod` as a part of the `HealthConfig` allowing for specification of a period during which the container should not be considered unealthy even if health checks do not pass.
## v1.28 API changes ## v1.28 API changes

View File

@ -1591,6 +1591,7 @@ The options that can appear before `CMD` are:
* `--interval=DURATION` (default: `30s`) * `--interval=DURATION` (default: `30s`)
* `--timeout=DURATION` (default: `30s`) * `--timeout=DURATION` (default: `30s`)
* `--start-period=DURATION` (default: `0s`)
* `--retries=N` (default: `3`) * `--retries=N` (default: `3`)
The health check will first run **interval** seconds after the container is The health check will first run **interval** seconds after the container is
@ -1602,6 +1603,11 @@ is considered to have failed.
It takes **retries** consecutive failures of the health check for the container It takes **retries** consecutive failures of the health check for the container
to be considered `unhealthy`. to be considered `unhealthy`.
**start period** provides initialization time for containers that need time to bootstrap.
Probe failure during that period will not be counted towards the maximum number of retries.
However, if a health check succeeds during the start period, the container is considered
started and all consecutive failures will be counted towards the maximum number of retries.
There can only be one `HEALTHCHECK` instruction in a Dockerfile. If you list There can only be one `HEALTHCHECK` instruction in a Dockerfile. If you list
more than one then only the last `HEALTHCHECK` will take effect. more than one then only the last `HEALTHCHECK` will take effect.

View File

@ -23,117 +23,118 @@ Usage: docker create [OPTIONS] IMAGE [COMMAND] [ARG...]
Create a new container Create a new container
Options: Options:
--add-host value Add a custom host-to-IP mapping (host:ip) (default []) --add-host value Add a custom host-to-IP mapping (host:ip) (default [])
-a, --attach value Attach to STDIN, STDOUT or STDERR (default []) -a, --attach value Attach to STDIN, STDOUT or STDERR (default [])
--blkio-weight value Block IO (relative weight), between 10 and 1000 --blkio-weight value Block IO (relative weight), between 10 and 1000
--blkio-weight-device value Block IO weight (relative device weight) (default []) --blkio-weight-device value Block IO weight (relative device weight) (default [])
--cap-add value Add Linux capabilities (default []) --cap-add value Add Linux capabilities (default [])
--cap-drop value Drop Linux capabilities (default []) --cap-drop value Drop Linux capabilities (default [])
--cgroup-parent string Optional parent cgroup for the container --cgroup-parent string Optional parent cgroup for the container
--cidfile string Write the container ID to the file --cidfile string Write the container ID to the file
--cpu-count int The number of CPUs available for execution by the container. --cpu-count int The number of CPUs available for execution by the container.
Windows daemon only. On Windows Server containers, this is Windows daemon only. On Windows Server containers, this is
approximated as a percentage of total CPU usage. approximated as a percentage of total CPU usage.
--cpu-percent int CPU percent (Windows only) --cpu-percent int CPU percent (Windows only)
--cpu-period int Limit CPU CFS (Completely Fair Scheduler) period --cpu-period int Limit CPU CFS (Completely Fair Scheduler) period
--cpu-quota int Limit CPU CFS (Completely Fair Scheduler) quota --cpu-quota int Limit CPU CFS (Completely Fair Scheduler) quota
-c, --cpu-shares int CPU shares (relative weight) -c, --cpu-shares int CPU shares (relative weight)
--cpus NanoCPUs Number of CPUs (default 0.000) --cpus NanoCPUs Number of CPUs (default 0.000)
--cpu-rt-period int Limit the CPU real-time period in microseconds --cpu-rt-period int Limit the CPU real-time period in microseconds
--cpu-rt-runtime int Limit the CPU real-time runtime in microseconds --cpu-rt-runtime int Limit the CPU real-time runtime in microseconds
--cpuset-cpus string CPUs in which to allow execution (0-3, 0,1) --cpuset-cpus string CPUs in which to allow execution (0-3, 0,1)
--cpuset-mems string MEMs in which to allow execution (0-3, 0,1) --cpuset-mems string MEMs in which to allow execution (0-3, 0,1)
--device value Add a host device to the container (default []) --device value Add a host device to the container (default [])
--device-cgroup-rule value Add a rule to the cgroup allowed devices list --device-cgroup-rule value Add a rule to the cgroup allowed devices list
--device-read-bps value Limit read rate (bytes per second) from a device (default []) --device-read-bps value Limit read rate (bytes per second) from a device (default [])
--device-read-iops value Limit read rate (IO per second) from a device (default []) --device-read-iops value Limit read rate (IO per second) from a device (default [])
--device-write-bps value Limit write rate (bytes per second) to a device (default []) --device-write-bps value Limit write rate (bytes per second) to a device (default [])
--device-write-iops value Limit write rate (IO per second) to a device (default []) --device-write-iops value Limit write rate (IO per second) to a device (default [])
--disable-content-trust Skip image verification (default true) --disable-content-trust Skip image verification (default true)
--dns value Set custom DNS servers (default []) --dns value Set custom DNS servers (default [])
--dns-option value Set DNS options (default []) --dns-option value Set DNS options (default [])
--dns-search value Set custom DNS search domains (default []) --dns-search value Set custom DNS search domains (default [])
--entrypoint string Overwrite the default ENTRYPOINT of the image --entrypoint string Overwrite the default ENTRYPOINT of the image
-e, --env value Set environment variables (default []) -e, --env value Set environment variables (default [])
--env-file value Read in a file of environment variables (default []) --env-file value Read in a file of environment variables (default [])
--expose value Expose a port or a range of ports (default []) --expose value Expose a port or a range of ports (default [])
--group-add value Add additional groups to join (default []) --group-add value Add additional groups to join (default [])
--health-cmd string Command to run to check health --health-cmd string Command to run to check health
--health-interval duration Time between running the check (ns|us|ms|s|m|h) (default 0s) --health-interval duration Time between running the check (ns|us|ms|s|m|h) (default 0s)
--health-retries int Consecutive failures needed to report unhealthy --health-retries int Consecutive failures needed to report unhealthy
--health-timeout duration Maximum time to allow one check to run (ns|us|ms|s|m|h) (default 0s) --health-timeout duration Maximum time to allow one check to run (ns|us|ms|s|m|h) (default 0s)
--help Print usage --health-start-period duration Start period for the container to initialize before counting retries towards unstable (ns|us|ms|s|m|h) (default 0s)
-h, --hostname string Container host name --help Print usage
--init Run an init inside the container that forwards signals and reaps processes -h, --hostname string Container host name
--init-path string Path to the docker-init binary --init Run an init inside the container that forwards signals and reaps processes
-i, --interactive Keep STDIN open even if not attached --init-path string Path to the docker-init binary
--io-maxbandwidth string Maximum IO bandwidth limit for the system drive (Windows only) -i, --interactive Keep STDIN open even if not attached
--io-maxiops uint Maximum IOps limit for the system drive (Windows only) --io-maxbandwidth string Maximum IO bandwidth limit for the system drive (Windows only)
--ip string IPv4 address (e.g., 172.30.100.104) --io-maxiops uint Maximum IOps limit for the system drive (Windows only)
--ip6 string IPv6 address (e.g., 2001:db8::33) --ip string IPv4 address (e.g., 172.30.100.104)
--ipc string IPC namespace to use --ip6 string IPv6 address (e.g., 2001:db8::33)
--isolation string Container isolation technology --ipc string IPC namespace to use
--kernel-memory string Kernel memory limit --isolation string Container isolation technology
-l, --label value Set meta data on a container (default []) --kernel-memory string Kernel memory limit
--label-file value Read in a line delimited file of labels (default []) -l, --label value Set meta data on a container (default [])
--link value Add link to another container (default []) --label-file value Read in a line delimited file of labels (default [])
--link-local-ip value Container IPv4/IPv6 link-local addresses (default []) --link value Add link to another container (default [])
--log-driver string Logging driver for the container --link-local-ip value Container IPv4/IPv6 link-local addresses (default [])
--log-opt value Log driver options (default []) --log-driver string Logging driver for the container
--mac-address string Container MAC address (e.g., 92:d0:c6:0a:29:33) --log-opt value Log driver options (default [])
-m, --memory string Memory limit --mac-address string Container MAC address (e.g., 92:d0:c6:0a:29:33)
--memory-reservation string Memory soft limit -m, --memory string Memory limit
--memory-swap string Swap limit equal to memory plus swap: '-1' to enable unlimited swap --memory-reservation string Memory soft limit
--memory-swappiness int Tune container memory swappiness (0 to 100) (default -1) --memory-swap string Swap limit equal to memory plus swap: '-1' to enable unlimited swap
--mount value Attach a filesytem mount to the container (default []) --memory-swappiness int Tune container memory swappiness (0 to 100) (default -1)
--name string Assign a name to the container --mount value Attach a filesytem mount to the container (default [])
--network-alias value Add network-scoped alias for the container (default []) --name string Assign a name to the container
--network string Connect a container to a network (default "default") --network-alias value Add network-scoped alias for the container (default [])
'bridge': create a network stack on the default Docker bridge --network string Connect a container to a network (default "default")
'none': no networking 'bridge': create a network stack on the default Docker bridge
'container:<name|id>': reuse another container's network stack 'none': no networking
'host': use the Docker host network stack 'container:<name|id>': reuse another container's network stack
'<network-name>|<network-id>': connect to a user-defined network 'host': use the Docker host network stack
--no-healthcheck Disable any container-specified HEALTHCHECK '<network-name>|<network-id>': connect to a user-defined network
--oom-kill-disable Disable OOM Killer --no-healthcheck Disable any container-specified HEALTHCHECK
--oom-score-adj int Tune host's OOM preferences (-1000 to 1000) --oom-kill-disable Disable OOM Killer
--pid string PID namespace to use --oom-score-adj int Tune host's OOM preferences (-1000 to 1000)
--pids-limit int Tune container pids limit (set -1 for unlimited), kernel >= 4.3 --pid string PID namespace to use
--privileged Give extended privileges to this container --pids-limit int Tune container pids limit (set -1 for unlimited), kernel >= 4.3
-p, --publish value Publish a container's port(s) to the host (default []) --privileged Give extended privileges to this container
-P, --publish-all Publish all exposed ports to random ports -p, --publish value Publish a container's port(s) to the host (default [])
--read-only Mount the container's root filesystem as read only -P, --publish-all Publish all exposed ports to random ports
--restart string Restart policy to apply when a container exits (default "no") --read-only Mount the container's root filesystem as read only
Possible values are: no, on-failure[:max-retry], always, unless-stopped --restart string Restart policy to apply when a container exits (default "no")
--rm Automatically remove the container when it exits Possible values are: no, on-failure[:max-retry], always, unless-stopped
--runtime string Runtime to use for this container --rm Automatically remove the container when it exits
--security-opt value Security Options (default []) --runtime string Runtime to use for this container
--shm-size bytes Size of /dev/shm --security-opt value Security Options (default [])
The format is `<number><unit>`. `number` must be greater than `0`. --shm-size bytes Size of /dev/shm
Unit is optional and can be `b` (bytes), `k` (kilobytes), `m` (megabytes), The format is `<number><unit>`. `number` must be greater than `0`.
or `g` (gigabytes). If you omit the unit, the system uses bytes. Unit is optional and can be `b` (bytes), `k` (kilobytes), `m` (megabytes),
--stop-signal string Signal to stop a container (default "SIGTERM") or `g` (gigabytes). If you omit the unit, the system uses bytes.
--stop-timeout=10 Timeout (in seconds) to stop a container --stop-signal string Signal to stop a container (default "SIGTERM")
--storage-opt value Storage driver options for the container (default []) --stop-timeout=10 Timeout (in seconds) to stop a container
--sysctl value Sysctl options (default map[]) --storage-opt value Storage driver options for the container (default [])
--tmpfs value Mount a tmpfs directory (default []) --sysctl value Sysctl options (default map[])
-t, --tty Allocate a pseudo-TTY --tmpfs value Mount a tmpfs directory (default [])
--ulimit value Ulimit options (default []) -t, --tty Allocate a pseudo-TTY
-u, --user string Username or UID (format: <name|uid>[:<group|gid>]) --ulimit value Ulimit options (default [])
--userns string User namespace to use -u, --user string Username or UID (format: <name|uid>[:<group|gid>])
'host': Use the Docker host user namespace --userns string User namespace to use
'': Use the Docker daemon user namespace specified by `--userns-remap` option. 'host': Use the Docker host user namespace
--uts string UTS namespace to use '': Use the Docker daemon user namespace specified by `--userns-remap` option.
-v, --volume value Bind mount a volume (default []). The format --uts string UTS namespace to use
is `[host-src:]container-dest[:<options>]`. -v, --volume value Bind mount a volume (default []). The format
The comma-delimited `options` are [rw|ro], is `[host-src:]container-dest[:<options>]`.
[z|Z], [[r]shared|[r]slave|[r]private], The comma-delimited `options` are [rw|ro],
[delegated|cached|consistent], and [z|Z], [[r]shared|[r]slave|[r]private],
[nocopy]. The 'host-src' is an absolute path [delegated|cached|consistent], and
or a name value. [nocopy]. The 'host-src' is an absolute path
--volume-driver string Optional volume driver for the container or a name value.
--volumes-from value Mount volumes from the specified container(s) (default []) --volume-driver string Optional volume driver for the container
-w, --workdir string Working directory inside the container --volumes-from value Mount volumes from the specified container(s) (default [])
-w, --workdir string Working directory inside the container
``` ```
## Description ## Description

View File

@ -21,130 +21,131 @@ Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
Run a command in a new container Run a command in a new container
Options: Options:
--add-host value Add a custom host-to-IP mapping (host:ip) (default []) --add-host value Add a custom host-to-IP mapping (host:ip) (default [])
-a, --attach value Attach to STDIN, STDOUT or STDERR (default []) -a, --attach value Attach to STDIN, STDOUT or STDERR (default [])
--blkio-weight value Block IO (relative weight), between 10 and 1000 --blkio-weight value Block IO (relative weight), between 10 and 1000
--blkio-weight-device value Block IO weight (relative device weight) (default []) --blkio-weight-device value Block IO weight (relative device weight) (default [])
--cap-add value Add Linux capabilities (default []) --cap-add value Add Linux capabilities (default [])
--cap-drop value Drop Linux capabilities (default []) --cap-drop value Drop Linux capabilities (default [])
--cgroup-parent string Optional parent cgroup for the container --cgroup-parent string Optional parent cgroup for the container
--cidfile string Write the container ID to the file --cidfile string Write the container ID to the file
--cpu-count int The number of CPUs available for execution by the container. --cpu-count int The number of CPUs available for execution by the container.
Windows daemon only. On Windows Server containers, this is Windows daemon only. On Windows Server containers, this is
approximated as a percentage of total CPU usage. approximated as a percentage of total CPU usage.
--cpu-percent int Limit percentage of CPU available for execution --cpu-percent int Limit percentage of CPU available for execution
by the container. Windows daemon only. by the container. Windows daemon only.
The processor resource controls are mutually The processor resource controls are mutually
exclusive, the order of precedence is CPUCount exclusive, the order of precedence is CPUCount
first, then CPUShares, and CPUPercent last. first, then CPUShares, and CPUPercent last.
--cpu-period int Limit CPU CFS (Completely Fair Scheduler) period --cpu-period int Limit CPU CFS (Completely Fair Scheduler) period
--cpu-quota int Limit CPU CFS (Completely Fair Scheduler) quota --cpu-quota int Limit CPU CFS (Completely Fair Scheduler) quota
-c, --cpu-shares int CPU shares (relative weight) -c, --cpu-shares int CPU shares (relative weight)
--cpus NanoCPUs Number of CPUs (default 0.000) --cpus NanoCPUs Number of CPUs (default 0.000)
--cpu-rt-period int Limit the CPU real-time period in microseconds --cpu-rt-period int Limit the CPU real-time period in microseconds
--cpu-rt-runtime int Limit the CPU real-time runtime in microseconds --cpu-rt-runtime int Limit the CPU real-time runtime in microseconds
--cpuset-cpus string CPUs in which to allow execution (0-3, 0,1) --cpuset-cpus string CPUs in which to allow execution (0-3, 0,1)
--cpuset-mems string MEMs in which to allow execution (0-3, 0,1) --cpuset-mems string MEMs in which to allow execution (0-3, 0,1)
-d, --detach Run container in background and print container ID -d, --detach Run container in background and print container ID
--detach-keys string Override the key sequence for detaching a container --detach-keys string Override the key sequence for detaching a container
--device value Add a host device to the container (default []) --device value Add a host device to the container (default [])
--device-cgroup-rule value Add a rule to the cgroup allowed devices list --device-cgroup-rule value Add a rule to the cgroup allowed devices list
--device-read-bps value Limit read rate (bytes per second) from a device (default []) --device-read-bps value Limit read rate (bytes per second) from a device (default [])
--device-read-iops value Limit read rate (IO per second) from a device (default []) --device-read-iops value Limit read rate (IO per second) from a device (default [])
--device-write-bps value Limit write rate (bytes per second) to a device (default []) --device-write-bps value Limit write rate (bytes per second) to a device (default [])
--device-write-iops value Limit write rate (IO per second) to a device (default []) --device-write-iops value Limit write rate (IO per second) to a device (default [])
--disable-content-trust Skip image verification (default true) --disable-content-trust Skip image verification (default true)
--dns value Set custom DNS servers (default []) --dns value Set custom DNS servers (default [])
--dns-option value Set DNS options (default []) --dns-option value Set DNS options (default [])
--dns-search value Set custom DNS search domains (default []) --dns-search value Set custom DNS search domains (default [])
--entrypoint string Overwrite the default ENTRYPOINT of the image --entrypoint string Overwrite the default ENTRYPOINT of the image
-e, --env value Set environment variables (default []) -e, --env value Set environment variables (default [])
--env-file value Read in a file of environment variables (default []) --env-file value Read in a file of environment variables (default [])
--expose value Expose a port or a range of ports (default []) --expose value Expose a port or a range of ports (default [])
--group-add value Add additional groups to join (default []) --group-add value Add additional groups to join (default [])
--health-cmd string Command to run to check health --health-cmd string Command to run to check health
--health-interval duration Time between running the check (ns|us|ms|s|m|h) (default 0s) --health-interval duration Time between running the check (ns|us|ms|s|m|h) (default 0s)
--health-retries int Consecutive failures needed to report unhealthy --health-retries int Consecutive failures needed to report unhealthy
--health-timeout duration Maximum time to allow one check to run (ns|us|ms|s|m|h) (default 0s) --health-timeout duration Maximum time to allow one check to run (ns|us|ms|s|m|h) (default 0s)
--help Print usage --health-start-period duration Start period for the container to initialize before counting retries towards unstable (ns|us|ms|s|m|h) (default 0s)
-h, --hostname string Container host name --help Print usage
--init Run an init inside the container that forwards signals and reaps processes -h, --hostname string Container host name
--init-path string Path to the docker-init binary --init Run an init inside the container that forwards signals and reaps processes
-i, --interactive Keep STDIN open even if not attached --init-path string Path to the docker-init binary
--io-maxbandwidth string Maximum IO bandwidth limit for the system drive (Windows only) -i, --interactive Keep STDIN open even if not attached
(Windows only). The format is `<number><unit>`. --io-maxbandwidth string Maximum IO bandwidth limit for the system drive (Windows only)
Unit is optional and can be `b` (bytes per second), (Windows only). The format is `<number><unit>`.
`k` (kilobytes per second), `m` (megabytes per second), Unit is optional and can be `b` (bytes per second),
or `g` (gigabytes per second). If you omit the unit, `k` (kilobytes per second), `m` (megabytes per second),
the system uses bytes per second. or `g` (gigabytes per second). If you omit the unit,
--io-maxbandwidth and --io-maxiops are mutually exclusive options. the system uses bytes per second.
--io-maxiops uint Maximum IOps limit for the system drive (Windows only) --io-maxbandwidth and --io-maxiops are mutually exclusive options.
--ip string IPv4 address (e.g., 172.30.100.104) --io-maxiops uint Maximum IOps limit for the system drive (Windows only)
--ip6 string IPv6 address (e.g., 2001:db8::33) --ip string IPv4 address (e.g., 172.30.100.104)
--ipc string IPC namespace to use --ip6 string IPv6 address (e.g., 2001:db8::33)
--isolation string Container isolation technology --ipc string IPC namespace to use
--kernel-memory string Kernel memory limit --isolation string Container isolation technology
-l, --label value Set meta data on a container (default []) --kernel-memory string Kernel memory limit
--label-file value Read in a line delimited file of labels (default []) -l, --label value Set meta data on a container (default [])
--link value Add link to another container (default []) --label-file value Read in a line delimited file of labels (default [])
--link-local-ip value Container IPv4/IPv6 link-local addresses (default []) --link value Add link to another container (default [])
--log-driver string Logging driver for the container --link-local-ip value Container IPv4/IPv6 link-local addresses (default [])
--log-opt value Log driver options (default []) --log-driver string Logging driver for the container
--mac-address string Container MAC address (e.g., 92:d0:c6:0a:29:33) --log-opt value Log driver options (default [])
-m, --memory string Memory limit --mac-address string Container MAC address (e.g., 92:d0:c6:0a:29:33)
--memory-reservation string Memory soft limit -m, --memory string Memory limit
--memory-swap string Swap limit equal to memory plus swap: '-1' to enable unlimited swap --memory-reservation string Memory soft limit
--memory-swappiness int Tune container memory swappiness (0 to 100) (default -1) --memory-swap string Swap limit equal to memory plus swap: '-1' to enable unlimited swap
--mount value Attach a filesystem mount to the container (default []) --memory-swappiness int Tune container memory swappiness (0 to 100) (default -1)
--name string Assign a name to the container --mount value Attach a filesystem mount to the container (default [])
--network-alias value Add network-scoped alias for the container (default []) --name string Assign a name to the container
--network string Connect a container to a network --network-alias value Add network-scoped alias for the container (default [])
'bridge': create a network stack on the default Docker bridge --network string Connect a container to a network
'none': no networking 'bridge': create a network stack on the default Docker bridge
'container:<name|id>': reuse another container's network stack 'none': no networking
'host': use the Docker host network stack 'container:<name|id>': reuse another container's network stack
'<network-name>|<network-id>': connect to a user-defined network 'host': use the Docker host network stack
--no-healthcheck Disable any container-specified HEALTHCHECK '<network-name>|<network-id>': connect to a user-defined network
--oom-kill-disable Disable OOM Killer --no-healthcheck Disable any container-specified HEALTHCHECK
--oom-score-adj int Tune host's OOM preferences (-1000 to 1000) --oom-kill-disable Disable OOM Killer
--pid string PID namespace to use --oom-score-adj int Tune host's OOM preferences (-1000 to 1000)
--pids-limit int Tune container pids limit (set -1 for unlimited) --pid string PID namespace to use
--privileged Give extended privileges to this container --pids-limit int Tune container pids limit (set -1 for unlimited)
-p, --publish value Publish a container's port(s) to the host (default []) --privileged Give extended privileges to this container
-P, --publish-all Publish all exposed ports to random ports -p, --publish value Publish a container's port(s) to the host (default [])
--read-only Mount the container's root filesystem as read only -P, --publish-all Publish all exposed ports to random ports
--restart string Restart policy to apply when a container exits (default "no") --read-only Mount the container's root filesystem as read only
Possible values are : no, on-failure[:max-retry], always, unless-stopped --restart string Restart policy to apply when a container exits (default "no")
--rm Automatically remove the container when it exits Possible values are : no, on-failure[:max-retry], always, unless-stopped
--runtime string Runtime to use for this container --rm Automatically remove the container when it exits
--security-opt value Security Options (default []) --runtime string Runtime to use for this container
--shm-size bytes Size of /dev/shm --security-opt value Security Options (default [])
The format is `<number><unit>`. `number` must be greater than `0`. --shm-size bytes Size of /dev/shm
Unit is optional and can be `b` (bytes), `k` (kilobytes), `m` (megabytes), The format is `<number><unit>`. `number` must be greater than `0`.
or `g` (gigabytes). If you omit the unit, the system uses bytes. Unit is optional and can be `b` (bytes), `k` (kilobytes), `m` (megabytes),
--sig-proxy Proxy received signals to the process (default true) or `g` (gigabytes). If you omit the unit, the system uses bytes.
--stop-signal string Signal to stop a container (default "SIGTERM") --sig-proxy Proxy received signals to the process (default true)
--stop-timeout=10 Timeout (in seconds) to stop a container --stop-signal string Signal to stop a container (default "SIGTERM")
--storage-opt value Storage driver options for the container (default []) --stop-timeout=10 Timeout (in seconds) to stop a container
--sysctl value Sysctl options (default map[]) --storage-opt value Storage driver options for the container (default [])
--tmpfs value Mount a tmpfs directory (default []) --sysctl value Sysctl options (default map[])
-t, --tty Allocate a pseudo-TTY --tmpfs value Mount a tmpfs directory (default [])
--ulimit value Ulimit options (default []) -t, --tty Allocate a pseudo-TTY
-u, --user string Username or UID (format: <name|uid>[:<group|gid>]) --ulimit value Ulimit options (default [])
--userns string User namespace to use -u, --user string Username or UID (format: <name|uid>[:<group|gid>])
'host': Use the Docker host user namespace --userns string User namespace to use
'': Use the Docker daemon user namespace specified by `--userns-remap` option. 'host': Use the Docker host user namespace
--uts string UTS namespace to use '': Use the Docker daemon user namespace specified by `--userns-remap` option.
-v, --volume value Bind mount a volume (default []). The format --uts string UTS namespace to use
is `[host-src:]container-dest[:<options>]`. -v, --volume value Bind mount a volume (default []). The format
The comma-delimited `options` are [rw|ro], is `[host-src:]container-dest[:<options>]`.
[z|Z], [[r]shared|[r]slave|[r]private], The comma-delimited `options` are [rw|ro],
[delegated|cached|consistent], and [z|Z], [[r]shared|[r]slave|[r]private],
[nocopy]. The 'host-src' is an absolute path [delegated|cached|consistent], and
or a name value. [nocopy]. The 'host-src' is an absolute path
--volume-driver string Optional volume driver for the container or a name value.
--volumes-from value Mount volumes from the specified container(s) (default []) --volume-driver string Optional volume driver for the container
-w, --workdir string Working directory inside the container --volumes-from value Mount volumes from the specified container(s) (default [])
-w, --workdir string Working directory inside the container
``` ```
## Description ## Description

View File

@ -36,6 +36,7 @@ Options:
--health-interval duration Time between running the check (ns|us|ms|s|m|h) --health-interval duration Time between running the check (ns|us|ms|s|m|h)
--health-retries int Consecutive failures needed to report unhealthy --health-retries int Consecutive failures needed to report unhealthy
--health-timeout duration Maximum time to allow one check to run (ns|us|ms|s|m|h) --health-timeout duration Maximum time to allow one check to run (ns|us|ms|s|m|h)
--health-start-period duration Start period for the container to initialize before counting retries towards unstable (ns|us|ms|s|m|h) (default 0s)
--help Print usage --help Print usage
--host list Set one or more custom host-to-IP mappings (host:ip) (default []) --host list Set one or more custom host-to-IP mappings (host:ip) (default [])
--hostname string Container hostname --hostname string Container hostname

View File

@ -44,6 +44,7 @@ Options:
--health-interval duration Time between running the check (ns|us|ms|s|m|h) --health-interval duration Time between running the check (ns|us|ms|s|m|h)
--health-retries int Consecutive failures needed to report unhealthy --health-retries int Consecutive failures needed to report unhealthy
--health-timeout duration Maximum time to allow one check to run (ns|us|ms|s|m|h) --health-timeout duration Maximum time to allow one check to run (ns|us|ms|s|m|h)
--health-start-period duration Start period for the container to initialize before counting retries towards unstable (ns|us|ms|s|m|h) (default 0s)
--help Print usage --help Print usage
--host-add list Add or update a custom host-to-IP mapping (host:ip) (default []) --host-add list Add or update a custom host-to-IP mapping (host:ip) (default [])
--host-rm list Remove a custom host-to-IP mapping (host:ip) (default []) --host-rm list Remove a custom host-to-IP mapping (host:ip) (default [])

View File

@ -1462,6 +1462,7 @@ Similarly the operator can set the **HOSTNAME** (Linux) or **COMPUTERNAME** (Win
--health-interval Time between running the check --health-interval Time between running the check
--health-retries Consecutive failures needed to report unhealthy --health-retries Consecutive failures needed to report unhealthy
--health-timeout Maximum time to allow one check to run --health-timeout Maximum time to allow one check to run
--health-start-period Start period for the container to initialize before starting health-retries countdown
--no-healthcheck Disable any container-specified HEALTHCHECK --no-healthcheck Disable any container-specified HEALTHCHECK
``` ```