Skip to content

[Bug]: GCloud default container image is not arm/aarch64 compatible and runs via Rosetta #6421

Closed
@jamesdh

Description

@jamesdh

Module

GCloud

Testcontainers version

1.17.6

Using the latest Testcontainers version?

Yes

Host OS

MacOS

Host Arch

ARM/aarch64

Docker version

Client:
 Cloud integration: v1.0.29
 Version:           20.10.21
 API version:       1.41
 Go version:        go1.18.7
 Git commit:        baeda1f
 Built:             Tue Oct 25 18:01:18 2022
 OS/Arch:           darwin/arm64
 Context:           desktop-linux
 Experimental:      true

Server: Docker Desktop 4.15.0 (93002)
 Engine:
  Version:          20.10.21
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.18.7
  Git commit:       3056208
  Built:            Tue Oct 25 17:59:41 2022
  OS/Arch:          linux/arm64
  Experimental:     true
 containerd:
  Version:          1.6.10
  GitCommit:        770bd0108c32f3fb5c73ae1264f7e503fe7b2661
 runc:
  Version:          1.1.4
  GitCommit:        v1.1.4-0-g5fd4c4d
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

What happened?

Currently the GCloud module defines gcr.io/google.com/cloudsdktool/cloud-sdk as the default image name. However, Google has transitioned to gcr.io/google.com/cloudsdktool/google-cloud-cli, which now also contain multi-arch support for any released images there.

I confirmed when running a test suite using gcr.io/google.com/cloudsdktool/cloud-sdk:emulators that the running container was in fact an AMD (x86) container running via Rosetta. However, when running w/ the google-cloud-cli image, e.g.

DockerImageName.parse("gcr.io/google.com/cloudsdktool/google-cloud-cli:emulators").asCompatibleSubstituteFor("gcr.io/google.com/cloudsdktool/cloud-sdk")

...then the container used is correctly arm/aarch64 compatible.

Relevant log output

No response

Additional Information

Using a correct arm/aarch64 compatible image amounts to a reduction of ~25% in our total test suite run time. As far as I can tell, the only difference between published cloud-sdk images versus the google-cloud-cli images is that one is built w/ multi arch support. Therefore I'd propose changing the default image name to gcr.io/google.com/cloudsdktool/google-cloud-cli:emulators

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions