I think @candlerb covered this. I also think that you need several people covering the same issue in their own way so that you get more confidence in all this.
In the beginning there were virtual machines (VMs), where you would install services on the same actual physical server. It was a big improvement from having several physical servers with one service per server (a real waste). Those virtual machines require certain hardware support from the physical server (CPU, etc) and need lots of memory and disk-space. Then, some workloads did not justify a separate virtual machine because it was taking too many resources. Would it be possible to have some sort of software-only virtual machines? Yep, and those are the containers.
The Linux kernel provides certain generic functionality (primitives) that can be used together to enable Linux containers. This functionality includes namespaces and cgroups. They provide container isolation and resource management. A container is a process tree, that is launch from the host, and as soon it is launched, it becomes isolated from the rest of the system (it’s configurable). The container cannot revert this isolation from within. That is, if your container is compromised, it cannot revert back to a non-isolated state.
The best containers are the unprivileged containers. In the following setup, when you create an unprivileged container, UID 0 (from within the container) is mapped to UID 100000 from the point of view of the host. In the container you would think you are running as root, but in reality, it’s just some non-root account with UID 100000. Then, your non-root account ubuntu in the container with UID 1000, has a real UID 100000+1000 = 101000 on the host.
$ cat /etc/subuid
root:100000:65536
$
When creating unprivileged containers, you are giving back some privileges to make them useful. It’s up to you to decide what is really needed. For example, you may share a directory from the host to the container. If you do so, then you are opening up a bit your attack surface and give the opportunity to a possibly compromised container to add some file in the shared directory and hopefully get some user from the host to execute.
To get back to your Traefik question, you would install the service in the way it requires (from the packaging) in an unprivileged container. A root in an unprivileged container is a non-root user on the host. Your concern might be about network access of that container. Can that container network access the host (by default it does), or all other containers (it also does). Does Traefik actually need network access to all these? Most likely not. This is an area that you could look into. In most cases it is not a first priority. If you want to go deeper into this, start a new thread about something like Network isolation of containers.