Sfoglia il codice sorgente

Merge pull request #34021 from nishanttotla/dont-set-architecture-constraint

Clear Architecture field in platform constraint for arm architectures
Vincent Demeester 7 anni fa
parent
commit
ea220e70a1
1 ha cambiato i file con 11 aggiunte e 0 eliminazioni
  1. 11 0
      client/service_create.go

+ 11 - 0
client/service_create.go

@@ -3,6 +3,7 @@ package client
 import (
 	"encoding/json"
 	"fmt"
+	"strings"
 
 	"github.com/docker/distribution/reference"
 	"github.com/docker/docker/api/types"
@@ -98,6 +99,16 @@ func imageDigestAndPlatforms(ctx context.Context, cli DistributionAPIClient, ima
 	if len(distributionInspect.Platforms) > 0 {
 		platforms = make([]swarm.Platform, 0, len(distributionInspect.Platforms))
 		for _, p := range distributionInspect.Platforms {
+			// clear architecture field for arm. This is a temporary patch to address
+			// https://github.com/docker/swarmkit/issues/2294. The issue is that while
+			// image manifests report "arm" as the architecture, the node reports
+			// something like "armv7l" (includes the variant), which causes arm images
+			// to stop working with swarm mode. This patch removes the architecture
+			// constraint for arm images to ensure tasks get scheduled.
+			arch := strings.ToLower(p.Architecture)
+			if arch == "arm" {
+				arch = ""
+			}
 			platforms = append(platforms, swarm.Platform{
 				Architecture: p.Architecture,
 				OS:           p.OS,