compose icon indicating copy to clipboard operation
compose copied to clipboard

On apple M1, docker-compose does not honor the `platform: ` tag for amd64 if only the arm64 version of the same image is present

Open pcallahan-r7 opened this issue 3 years ago • 0 comments

Description

If an arm64 version of an image is present but not the amd64 version, the platform tag when set to amd64 in docker-compose is not honored. If both or neither are present, then platform is honored.

Steps to reproduce the issue:

  1. Create a test service in a docker-compose file with the linux/amd64 architecture platform specified.
version: '3'
services:

  my-test-service:
    platform: linux/amd64
    image: openjdk:11

Ensure the image does not exist in docker. Then pull the image for the arm64 architecture (but not the amd64 image):

$ docker pull --platform linux/arm64 openjdk:11

Run the test service with uname and observe the wrong architecture:

$ DOCKER_BUILDKIT=1 COMPOSE_DOCKER_CLI_BUILD=1 docker-compose run --rm   my-test-service  uname -a

Linux ... aarch64 GNU/Linux

This only appears to happen if the arm64 image is already there and the amd64 image is not. If there is no image, docker-compose will pull the correct amd64 image.

Describe the results you received: docker-compose runs the arm64 image

Describe the results you expected: docker-compose runs the amd64 image.

Output of docker compose version:

Docker Compose version v2.7.0

Output of docker info:

Client:
 Context:    default
 Debug Mode: false
 Plugins:
  buildx: Docker Buildx (Docker Inc., v0.8.2)
  compose: Docker Compose (Docker Inc., v2.7.0)
  extension: Manages Docker extensions (Docker Inc., v0.2.8)
  sbom: View the packaged-based Software Bill Of Materials (SBOM) for an image (Anchore Inc., 0.6.0)
  scan: Docker Scan (Docker Inc., v0.17.0)

Server:
 Containers: 11
  Running: 0
  Paused: 0
  Stopped: 11
 Images: 32
 Server Version: 20.10.17
 Storage Driver: overlay2
  Backing Filesystem: extfs
  Supports d_type: true
  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: io.containerd.runc.v2 io.containerd.runtime.v1.linux runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: 10c12954828e7c7c9b6e0ea9b0c02b01407d3ae1
 runc version: v1.1.2-0-ga916309
 init version: de40ad0
 Security Options:
  seccomp
   Profile: default
  cgroupns
 Kernel Version: 5.10.104-linuxkit
 Operating System: Docker Desktop
 OSType: linux
 Architecture: aarch64
 CPUs: 5
 Total Memory: 15.6GiB
 Name: docker-desktop
 ID: XA6U:B2LX:OK77:JHUI:PGJX:EC7I:TH26:F2UH:LNCP:JFYI:N2TY:7KJ5
 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
 Registry: https://index.docker.io/v1/
 Labels:
 Experimental: false
 Insecure Registries:
  hubproxy.docker.internal:5000
  127.0.0.0/8
 Live Restore Enabled: false

Additional environment details:

pcallahan-r7 avatar Aug 10 '22 23:08 pcallahan-r7