Rosetta emulation not working in Colima
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
- brew install colima
- colima start --profile rosetta --cpu 2 --memory 6 --arch aarch64 --vm-type=vz --vz-rosetta
- docker context use colima-rosetta
- docker pull --platform=linux/amd64 tensorflow/serving
- git clone https://github.com/tensorflow/serving
- TESTDATA="$(pwd)/serving/tensorflow_serving/servables/tensorflow/testdata"
- 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
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} "$@" _
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_
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?