I have been trying to run a freeswitch container on a hAP ax3. All images I have found are for amd64, so they stop with error due to the router being arm64. Docker support platform emulation with the --platform command line parameter. Is this supported in RouterOS? Since not may images are available for arm64, this would be very useful, at least in cases where performance of the container is not of big importance.
While this is not the docker way to do it, you can use “alpine:latest” as the tag in /container, then /container/shell to it to then “apk add freeswitch”. That at least let you test it - not for regular use. You’d ideally want to use Dockerfile on PC/desktop and build an image with freeswitch and your config, if you want to use for a PBX in the real-world.
Maybe there is some pre-built one for armv7 on hAPax3, dunno… but there just not as many images on dockerhub for 32-bit arm.
@nkourtzis
If OS is supporting emulation Docker can run image for different architecture for supported OS emulation, like on Mac OS, Macs can run arm64 and amd64 images.
But this not related to ROS, under ROS you can run only CPU supported architecture images in containers.
FYI ROS doesn’t use Docker for containers.
If you search the forums, someone has made a docker container for the cli netinstall program.
They have put in a (x64 I think) emulator into the container (it is smaller than the netinstall executable)
The netinstall container use QEMU. Netinstall is tiny executable so the emulation would not matter. But freeswitch is certainly more CPU intensive than netinstall.
Since there is an armv7 build of freeswitch, emulation shouldn’t be needed – it just not in a pre-package dockerhub image is kinda the problem here.
In either case, I fear the OP may have to learn some of Docker’s toolchain to even try to run freeswitch.
Well if you put in container image QEMU build for ROS device CPU architecture and run service with other architecture supported with that QEMU then emulation is performed inside container, still on ROS side container is run on CPU supported architecture only. In such way you can run any architecture supported by QEMU, but it is not optimal for performance and it requires custom container image build, it is then better to find actual service build binary (or build by yourself) for ROS device CPU supported architecture and put it into custom container image if not available from repository instead using QEMU.