colima icon indicating copy to clipboard operation
colima copied to clipboard

Rosetta emulation not working in Colima

Open jannetak opened this issue 1 year ago • 3 comments

Description

I have been trying to run x86 images in Docker using my M2-Mac. Previously it has been working, but currently I have some issues and system is detected as arm64 instead of x86.

As an example, I have been using Tensorflow serving image https://www.tensorflow.org/tfx/serving/docker

When I run it, I got following error:

docker run -t --rm -p 8501:8501
-v "$TESTDATA/saved_model_half_plus_two_cpu:/models/half_plus_two"
-e MODEL_NAME=half_plus_two
tensorflow/serving WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested /usr/bin/tf_serving_entrypoint.sh: line 3: 7 Illegal instruction (core dumped) tensorflow_model_server --port=8500 --rest_api_port=8501 --model_name=${MODEL_NAME} --model_base_path=${MODEL_BASE_PATH}/${MODEL_NAME} "$@"

Version

colima version && limactl --version && qemu-img --version colima version 0.6.8 git commit: 9b0809d0ed9ad3ff1e57c405f27324e6298ca04f limactl version 0.20.1 qemu-img version 8.2.1 Copyright (c) 2003-2023 Fabrice Bellard and the QEMU Project developers

Operating System

  • [ ] macOS Intel <= 13 (Ventura)
  • [ ] macOS Intel >= 14 (Sonoma)
  • [ ] Apple Silicon <= 13 (Ventura)
  • [X] Apple Silicon >= 14 (Sonoma)
  • [ ] Linux

Output of colima status

FATA[0000] colima is not running

Reproduction Steps

  1. brew install colima
  2. colima start --profile rosetta --cpu 2 --memory 6 --arch aarch64 --vm-type=vz --vz-rosetta
  3. docker context use colima-rosetta
  4. docker pull --platform=linux/amd64 tensorflow/serving
  5. git clone https://github.com/tensorflow/serving
  6. TESTDATA="$(pwd)/serving/tensorflow_serving/servables/tensorflow/testdata"
  7. docker run -t --rm -p 8501:8501
    -v "$TESTDATA/saved_model_half_plus_two_cpu:/models/half_plus_two"
    -e MODEL_NAME=half_plus_two
    tensorflow/serving

Expected behaviour

TensorFlow Serving container and open the REST API port

Additional context

No response

jannetak avatar Feb 23 '24 11:02 jannetak

By reinstalling everything, status is now ok: colima status INFO[0000] colima is running using QEMU
INFO[0000] arch: aarch64
INFO[0000] runtime: docker
INFO[0000] mountType: sshfs
INFO[0000] socket: unix:///Users/profilename/.colima/default/docker.sock

and it uses right context: docker context ls NAME DESCRIPTION DOCKER ENDPOINT ERROR colima colima unix:///Users/profilename/.colima/default/docker.sock
colima-rosetta * colima [profile=rosetta] unix:///Users/profilename/.colima/rosetta/docker.sock
default Current DOCKER_HOST based configuration unix:///var/run/docker.sock

still the same issue:

_WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested /usr/bin/tf_serving_entrypoint.sh: line 3: 7 Illegal instruction (core dumped) tensorflow_model_server --port=8500 --rest_api_port=8501 --model_name=${MODEL_NAME} --model_base_path=${MODEL_BASE_PATH}/${MODEL_NAME} "$@" _

jannetak avatar Feb 23 '24 12:02 jannetak

colima list PROFILE STATUS ARCH CPUS MEMORY DISK RUNTIME ADDRESS default Running aarch64 2 2GiB 60GiB docker
rosetta Running aarch64 2 6GiB 60GiB docker

If I delete default profile and leave only rosetta profile, colima status gives: _colima delete default are you sure you want to delete colima and all settings? [y/N] y INFO[0000] deleting colima
INFO[0001] deleting ... context=docker INFO[0002] done

colima status
FATA[0000] colima is not running_

jannetak avatar Feb 23 '24 12:02 jannetak

colima start --profile rosetta --cpu 2 --memory 6 --arch aarch64 --vm-type=vz --vz-rosetta

I'm not a maintainer and, tbh colima newbie, but shouldn't you use x86_64 instead of aarch64?

dmchmk avatar Apr 09 '24 13:04 dmchmk