Skip to content

"Use Rosetta" makes build for platform linux/amd64 extremely slow #7075

@a6z6

Description

@a6z6

Description

I am using MacBook Pro M2 Max chip. For building an image, a nextjs app, to use on Ubuntu server,

Case 1:

If check ✅ Use Rosetta for x86/amd64 emulation on Apple Silicon,
then run docker buildx build --platform linux/amd64 -t my_docker_repo/test_image:latest .
After a whole night, the build was still running after 30k seconds:

[+] Building 33656.6s (15/22)                                                                        docker:desktop-linux
 => [deps 5/5] RUN yarn install                                                                                    463.3s
...
 => [builder 5/5] RUN yarn build         33186.8s 
...                                                                                     
 => => #    Creating an optimized production build ...                                                                    
 => => # Warning: For production Image Optimization with Next.js, the optional 'sharp' package is strongly recommended. R 
 => => # un 'npm i sharp', and Next.js will use it automatically for Image Optimization.                                  
 => => # Read more: https://nextjs.org/docs/messages/sharp-missing-in-production 
Case 2:

If uncheck ❌ Use Rosetta for x86/amd64 emulation on Apple Silicon,
run the same command: docker buildx build --platform linux/amd64 -t my_docker_repo/test_image:latest .
done the job in around 300s:

...
 => [builder 5/5] RUN yarn build                            324.1s
...
 => => writing image sha256:b311...                         0.0s
Case 3:

If check ✅ Use Rosetta for x86/amd64 emulation on Apple Silicon,
run without specifying --platform tag (which would build an arm64 image): docker buildx build -t my_docker_repo/test_image:latest .
takes only 37 seconds:

...
 => [builder 5/5] RUN yarn build                            37.1s
...

Sure, this arm64 image could not be used in Ubuntu. But Case 3 proved this image is not very large. The build time in Case 2 is already very slow. ✅ Use Rosetta is expected to accelerate Case 2, but unfortunately, it stuck image building as shown in Case 1.

Reproduce

  1. Go to Docker Desktop for mac Settings, check ✅ Use Rosetta for x86/amd64 emulation on Apple Silicon
  2. git clone https://github.com/Yidadaa/ChatGPT-Next-Web.git
  3. cd ChatGPT-Next-Web
  4. docker buildx build --platform linux/amd64 -t test_image:latest .

Expected behavior

No response

docker version

Client:
 Cloud integration: v1.0.35+desktop.5
 Version:           24.0.6
 API version:       1.43
 Go version:        go1.20.7
 Git commit:        ed223bc
 Built:             Mon Sep  4 12:28:49 2023
 OS/Arch:           darwin/arm64
 Context:           desktop-linux

Server: Docker Desktop 4.25.0 (126437)
 Engine:
  Version:          24.0.6
  API version:      1.43 (minimum version 1.12)
  Go version:       go1.20.7
  Git commit:       1a79695
  Built:            Mon Sep  4 12:31:36 2023
  OS/Arch:          linux/arm64
  Experimental:     false
 containerd:
  Version:          1.6.22
  GitCommit:        8165feabfdfe38c65b599c4993d227328c231fca
 runc:
  Version:          1.1.8
  GitCommit:        v1.1.8-0-g82f18fe
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

docker info

Client:
 Version:    24.0.6
 Context:    desktop-linux
 Debug Mode: false
 Plugins:
  buildx: Docker Buildx (Docker Inc.)
    Version:  v0.11.2-desktop.5
    Path:     /Users/a6z6/.docker/cli-plugins/docker-buildx
  compose: Docker Compose (Docker Inc.)
    Version:  v2.23.0-desktop.1
    Path:     /Users/a6z6/.docker/cli-plugins/docker-compose
  dev: Docker Dev Environments (Docker Inc.)
    Version:  v0.1.0
    Path:     /Users/a6z6/.docker/cli-plugins/docker-dev
  extension: Manages Docker extensions (Docker Inc.)
    Version:  v0.2.20
    Path:     /Users/a6z6/.docker/cli-plugins/docker-extension
  init: Creates Docker-related starter files for your project (Docker Inc.)
    Version:  v0.1.0-beta.9
    Path:     /Users/a6z6/.docker/cli-plugins/docker-init
  sbom: View the packaged-based Software Bill Of Materials (SBOM) for an image (Anchore Inc.)
    Version:  0.6.0
    Path:     /Users/a6z6/.docker/cli-plugins/docker-sbom
  scan: Docker Scan (Docker Inc.)
    Version:  v0.26.0
    Path:     /Users/a6z6/.docker/cli-plugins/docker-scan
  scout: Docker Scout (Docker Inc.)
    Version:  v1.0.9
    Path:     /Users/a6z6/.docker/cli-plugins/docker-scout

Server:
 Containers: 0
  Running: 0
  Paused: 0
  Stopped: 0
 Images: 5
 Server Version: 24.0.6
 Storage Driver: overlay2
  Backing Filesystem: extfs
  Supports d_type: true
  Using metacopy: false
  Native Overlay Diff: true
  userxattr: false
 Logging Driver: json-file
 Cgroup Driver: cgroupfs
 Cgroup Version: 2
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
 Swarm: inactive
 Runtimes: runc io.containerd.runc.v2
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: 8199c4993d2273eabfdf65fe38c65b528c231fca
 runc version: v1.1.8-0-g82f18fe
 init version: de40ad0
 Security Options:
  seccomp
   Profile: unconfined
  cgroupns
 Kernel Version: 6.4.16-linuxkit
 Operating System: Docker Desktop
 OSType: linux
 Architecture: aarch64
 CPUs: 12
 Total Memory: 7.66GiB
 Name: linuxkit-65284a35044c
 ID: 222df668-01d2-4438-9a1b-ba6f0a67ef7c
 Docker Root Dir: /var/lib/docker
 Debug Mode: false
 HTTP Proxy: http.docker.internal:3128
 HTTPS Proxy: http.docker.internal:3128
 No Proxy: hubproxy.docker.internal
 Experimental: false
 Insecure Registries:
  hubproxy.docker.internal:5555
  127.0.0.0/8
 Live Restore Enabled: false

WARNING: daemon is not using the default seccomp profile

Diagnostics ID

a9d15c7e-33c8-4c10-9513-d0f62d4186fd/20231112055512

Additional Info

No response

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