From 5e20854f86bafd93dbcb1120c723985cc12595b3 Mon Sep 17 00:00:00 2001 From: andres-portainer <91705312+andres-portainer@users.noreply.github.com> Date: Tue, 22 Aug 2023 17:59:46 -0300 Subject: [PATCH] fix(docker): use version negotiation for the Docker client EE-5797 (#9251) --- api/docker/client/client.go | 12 ++++++------ api/internal/upgrade/upgrade_docker.go | 5 ++++- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/api/docker/client/client.go b/api/docker/client/client.go index bc0ae68c4..91073829b 100644 --- a/api/docker/client/client.go +++ b/api/docker/client/client.go @@ -57,20 +57,20 @@ func (factory *ClientFactory) CreateClient(endpoint *portainer.Endpoint, nodeNam func createLocalClient(endpoint *portainer.Endpoint) (*client.Client, error) { return client.NewClientWithOpts( client.WithHost(endpoint.URL), - client.WithVersion(dockerClientVersion), + client.WithAPIVersionNegotiation(), ) } func CreateClientFromEnv() (*client.Client, error) { return client.NewClientWithOpts( client.FromEnv, - client.WithVersion(dockerClientVersion), + client.WithAPIVersionNegotiation(), ) } func CreateSimpleClient() (*client.Client, error) { return client.NewClientWithOpts( - client.WithVersion(dockerClientVersion), + client.WithAPIVersionNegotiation(), ) } @@ -82,7 +82,7 @@ func createTCPClient(endpoint *portainer.Endpoint, timeout *time.Duration) (*cli return client.NewClientWithOpts( client.WithHost(endpoint.URL), - client.WithVersion(dockerClientVersion), + client.WithAPIVersionNegotiation(), client.WithHTTPClient(httpCli), ) } @@ -116,7 +116,7 @@ func createEdgeClient(endpoint *portainer.Endpoint, signatureService portainer.D return client.NewClientWithOpts( client.WithHost(endpointURL), - client.WithVersion(dockerClientVersion), + client.WithAPIVersionNegotiation(), client.WithHTTPClient(httpCli), client.WithHTTPHeaders(headers), ) @@ -144,7 +144,7 @@ func createAgentClient(endpoint *portainer.Endpoint, signatureService portainer. return client.NewClientWithOpts( client.WithHost(endpoint.URL), - client.WithVersion(dockerClientVersion), + client.WithAPIVersionNegotiation(), client.WithHTTPClient(httpCli), client.WithHTTPHeaders(headers), ) diff --git a/api/internal/upgrade/upgrade_docker.go b/api/internal/upgrade/upgrade_docker.go index 03cea50c4..b399dc054 100644 --- a/api/internal/upgrade/upgrade_docker.go +++ b/api/internal/upgrade/upgrade_docker.go @@ -90,7 +90,10 @@ func (service *service) upgradeDocker(licenseKey, version, envType string) error } func (service *service) checkImageForDocker(ctx context.Context, image string, skipPullImage bool) error { - cli, err := client.NewClientWithOpts(client.FromEnv) + cli, err := client.NewClientWithOpts( + client.FromEnv, + client.WithAPIVersionNegotiation(), + ) if err != nil { return errors.Wrap(err, "failed to create docker client") }