Tim Curtis
Member
- Thread Starter
- #61
Docker for me is like this:
In the old days, running on bare metal, a user could say, "it's not working for me, and I don't know why" and the developer would say, "it works on my machine..." Running in Docker removes this problem, because running in Docker is *running the same as the developer's machine.*
With Docker, you store all the personal configuration options on a mapped volume to local storage outside the container, so that they persist.
When it comes time to upgrade, the container gets erased and upgraded, and uses that same mapped local storage, so you can easily move the container from hardware to hardware, upgrade, downgrade, and it just keeps working. Running in a container makes it easy to add, easy to upgrade, easy to destroy, easy to migrate.
If the container is maintained for both intel and arm, it becomes easy to become more platform agnostic - pi here, intel NUC with USB DAC there, and the container doesn't care, because the hardware that is handled by the OS (network, storage, etc.) gets abstracted away.
Easier install, easier deleting, easier upgrade, easier portability from device to device.
This statement
In the old days, running on bare metal, a user could say, "it's not working for me, and I don't know why" and the developer would say, "it works on my machine..." Running in Docker removes this problem, because running in Docker is *running the same as the developer's machine.*
doesn't really apply to how the moode project works because the devs run the exact same Raspberry Pi hardware, RaspiOS and Linux kernel as our users and in many cases the exact same peripherals as the user including audio devices, storage drives, power supplies, local displays, etc. This has obvious advantages when troubleshooting a user's issue.
There are also hardware features of the Raspberry Pi for example the GPIO / I2S interfaces that are integral to moode and that don't exist on x86 platform. AFAIK docker doesn't solve that type of issue, rather the application (moode) code would have to incorporate platform detection and then factor the feature set thats exposed to the user for that particular platform. Thats a very significant undertaking.