From 970c938b5696a6c1cd92fe2de82208ab3753c47d Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Mon, 6 Jun 2022 01:27:06 +0200 Subject: [PATCH] client: ignore kernel-memory on API >= 1.42 Signed-off-by: Sebastiaan van Stijn (cherry picked from commit 2597a7162360ef56001a1764d0cb53b51b912d8f) Signed-off-by: Sebastiaan van Stijn --- client/container_create.go | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/client/container_create.go b/client/container_create.go index 79a150466f..f82420b673 100644 --- a/client/container_create.go +++ b/client/container_create.go @@ -26,23 +26,25 @@ func (cli *Client) ContainerCreate(ctx context.Context, config *container.Config if err := cli.NewVersionError("1.25", "stop timeout"); config != nil && config.StopTimeout != nil && err != nil { return response, err } - - clientVersion := cli.ClientVersion() - - // When using API 1.24 and under, the client is responsible for removing the container - if hostConfig != nil && versions.LessThan(clientVersion, "1.25") { - hostConfig.AutoRemove = false - } - - // When using API under 1.42, the Linux daemon doesn't respect the ConsoleSize - if hostConfig != nil && platform != nil && platform.OS == "linux" && versions.LessThan(clientVersion, "1.42") { - hostConfig.ConsoleSize = [2]uint{0, 0} - } - if err := cli.NewVersionError("1.41", "specify container image platform"); platform != nil && err != nil { return response, err } + if hostConfig != nil { + if versions.LessThan(cli.ClientVersion(), "1.25") { + // When using API 1.24 and under, the client is responsible for removing the container + hostConfig.AutoRemove = false + } + if versions.GreaterThanOrEqualTo(cli.ClientVersion(), "1.42") || versions.LessThan(cli.ClientVersion(), "1.40") { + // KernelMemory was added in API 1.40, and deprecated in API 1.42 + hostConfig.KernelMemory = 0 + } + if platform != nil && platform.OS == "linux" && versions.LessThan(cli.ClientVersion(), "1.42") { + // When using API under 1.42, the Linux daemon doesn't respect the ConsoleSize + hostConfig.ConsoleSize = [2]uint{0, 0} + } + } + query := url.Values{} if p := formatPlatform(platform); p != "" { query.Set("platform", p)