remove duplicate --oom-kill-disable warnings on docker run / docker create
This warning was originally added in [moby@3aa70c1], and moved to be printed on both `run` and `create` in commit7c514a31c9. However, [moby@57f1305] (docker 19.03, API 1.40) moved such warnings to the daemon side. The patch mentioned this issue: > This patch will have one side-effect; docker cli's that also perform this check > client-side will print the warning twice; this can be addressed by disabling > the cli-side check for newer API versions, but will generate a bit of extra > noise when using an older CLI. The CLI does not take this into account currently, and still prints warnings twice; even in cases where the option is not supported by the daemon, and discarded: On a host without OomKillDisable support: docker create --oom-kill-disable alpine WARNING: Disabling the OOM killer on containers without setting a '-m/--memory' limit may be dangerous. WARNING: Your kernel does not support OomKillDisable. OomKillDisable discarded. On a host that supports it: docker create --oom-kill-disable alpine WARNING: Disabling the OOM killer on containers without setting a '-m/--memory' limit may be dangerous. WARNING: OOM killer is disabled for the container, but no memory limit is set, this can result in the system running out of resources. This patch removes the client-side warning, leaving it to the daemon to report if any warnings should produced (and the client to print them). With this patch applied: On a host without OomKillDisable support: docker create --oom-kill-disable alpine WARNING: Your kernel does not support OomKillDisable. OomKillDisable discarded. On a host that supports it: docker create --oom-kill-disable alpine WARNING: OOM killer is disabled for the container, but no memory limit is set, this can result in the system running out of resources. [moby@3aa70c1]:3aa70c1948[moby@57f1305]:57f1305e74Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
This commit is contained in:
@ -207,7 +207,6 @@ func createContainer(ctx context.Context, dockerCli command.Cli, containerCfg *c
|
||||
hostConfig := containerCfg.HostConfig
|
||||
networkingConfig := containerCfg.NetworkingConfig
|
||||
|
||||
warnOnOomKillDisable(*hostConfig, dockerCli.Err())
|
||||
warnOnLocalhostDNS(*hostConfig, dockerCli.Err())
|
||||
|
||||
var (
|
||||
@ -299,12 +298,6 @@ func createContainer(ctx context.Context, dockerCli command.Cli, containerCfg *c
|
||||
return response.ID, err
|
||||
}
|
||||
|
||||
func warnOnOomKillDisable(hostConfig container.HostConfig, stderr io.Writer) {
|
||||
if hostConfig.OomKillDisable != nil && *hostConfig.OomKillDisable && hostConfig.Memory == 0 {
|
||||
_, _ = fmt.Fprintln(stderr, "WARNING: Disabling the OOM killer on containers without setting a '-m/--memory' limit may be dangerous.")
|
||||
}
|
||||
}
|
||||
|
||||
// check the DNS settings passed via --dns against localhost regexp to warn if
|
||||
// they are trying to set a DNS to a localhost address
|
||||
func warnOnLocalhostDNS(hostConfig container.HostConfig, stderr io.Writer) {
|
||||
|
||||
@ -270,31 +270,24 @@ func TestNewCreateCommandWithContentTrustErrors(t *testing.T) {
|
||||
|
||||
func TestNewCreateCommandWithWarnings(t *testing.T) {
|
||||
testCases := []struct {
|
||||
name string
|
||||
args []string
|
||||
warning bool
|
||||
name string
|
||||
args []string
|
||||
warnings []string
|
||||
warning bool
|
||||
}{
|
||||
{
|
||||
name: "container-create-without-oom-kill-disable",
|
||||
name: "container-create-no-warnings",
|
||||
args: []string{"image:tag"},
|
||||
},
|
||||
{
|
||||
name: "container-create-oom-kill-disable-false",
|
||||
args: []string{"--oom-kill-disable=false", "image:tag"},
|
||||
name: "container-create-daemon-single-warning",
|
||||
args: []string{"image:tag"},
|
||||
warnings: []string{"warning from daemon"},
|
||||
},
|
||||
{
|
||||
name: "container-create-oom-kill-without-memory-limit",
|
||||
args: []string{"--oom-kill-disable", "image:tag"},
|
||||
warning: true,
|
||||
},
|
||||
{
|
||||
name: "container-create-oom-kill-true-without-memory-limit",
|
||||
args: []string{"--oom-kill-disable=true", "image:tag"},
|
||||
warning: true,
|
||||
},
|
||||
{
|
||||
name: "container-create-oom-kill-true-with-memory-limit",
|
||||
args: []string{"--oom-kill-disable=true", "--memory=100M", "image:tag"},
|
||||
name: "container-create-daemon-multiple-warnings",
|
||||
args: []string{"image:tag"},
|
||||
warnings: []string{"warning from daemon", "another warning from daemon"},
|
||||
},
|
||||
{
|
||||
name: "container-create-localhost-dns",
|
||||
@ -316,7 +309,7 @@ func TestNewCreateCommandWithWarnings(t *testing.T) {
|
||||
platform *specs.Platform,
|
||||
containerName string,
|
||||
) (container.CreateResponse, error) {
|
||||
return container.CreateResponse{}, nil
|
||||
return container.CreateResponse{Warnings: tc.warnings}, nil
|
||||
},
|
||||
})
|
||||
cmd := NewCreateCommand(fakeCLI)
|
||||
@ -324,7 +317,7 @@ func TestNewCreateCommandWithWarnings(t *testing.T) {
|
||||
cmd.SetArgs(tc.args)
|
||||
err := cmd.Execute()
|
||||
assert.NilError(t, err)
|
||||
if tc.warning {
|
||||
if tc.warning || len(tc.warnings) > 0 {
|
||||
golden.Assert(t, fakeCLI.ErrBuffer().String(), tc.name+".golden")
|
||||
} else {
|
||||
assert.Equal(t, fakeCLI.ErrBuffer().String(), "")
|
||||
|
||||
2
cli/command/container/testdata/container-create-daemon-multiple-warnings.golden
vendored
Normal file
2
cli/command/container/testdata/container-create-daemon-multiple-warnings.golden
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
WARNING: warning from daemon
|
||||
WARNING: another warning from daemon
|
||||
1
cli/command/container/testdata/container-create-daemon-single-warning.golden
vendored
Normal file
1
cli/command/container/testdata/container-create-daemon-single-warning.golden
vendored
Normal file
@ -0,0 +1 @@
|
||||
WARNING: warning from daemon
|
||||
@ -1 +0,0 @@
|
||||
WARNING: Disabling the OOM killer on containers without setting a '-m/--memory' limit may be dangerous.
|
||||
@ -1 +0,0 @@
|
||||
WARNING: Disabling the OOM killer on containers without setting a '-m/--memory' limit may be dangerous.
|
||||
Reference in New Issue
Block a user