Just limit memory and cpu usage of each container.
In portainer you can easily do that by recreating the container and going into the runtime & ressources section and set max memory and cpu usage.
You can also limit the the whole docker setup with memory slice
Create a file to /etc/systemd/system/docker_limit.slice
[Unit]
Description=Slice that limits docker resources
Before=slices.target
[Slice]
CPUAccounting=true
CPUQuota=200% <-- cpu limit (each core is 100%, limit to 2 to keep the rest available to kodi)
#Memory Management
MemoryAccounting=true
MemoryLimit=2G <-- mem limit, keep 1.5g for kodi
Start unit: systemctl start docker_limit.slice
Edit /etc/docker/daemon.json
{
"cgroup-parent": "docker_limit.slice"
}
Restart Docker daemon: systemctl restart docker
Personnaly i would move all that stuff to a RPI or desktop machine with a stronger CPU.
The Vero CPU is not that powerful and can get easily overload with the parsing done by the *arr software.
Also yo can easily replace the *arr with flexget that can handle all that stuff.
Have a look at : [HowTo] Flexget, "the lazy couch" fully automated watching experience