| It can't easily, Docker should not be naively treated as a security solution. It's very easy to misconfigure it: - The Docker daemon runs as root: any user in the docker group effectively also has sudo (--privileged) - Ports exposed by Docker punch through the firewall - In general, you can break the security boundary towards root (not your user!) by mounting the wrong things, setting the wrong flags etc. What Docker primarily gives you is a stupid (good!) solution for having a reproducible, re-settable environment.
But containers (read: magic isolated box) are not really a good tool to reason about security in Linux imo. If you are a beginner, instead make sure you don't run services as the sudo-capable/root user as a first step.
Then, I would recommend you look into Systemd services: you can configure all the Linux sandboxing features Docker uses and more.
This composes well with Podman, which gives you a reproducible environment (drop-in replacement for Docker) but contained to an unprivileged user. |
It's unfortunately very common to install, for example, a project as the "ubuntu" user and also run it as the "ubuntu" user. But this arrangement effectively turns any kind of file-overwrite vulnerability into a remote-execution vulnerability.
Owning executables as root:root, perms 0755, and running as a separate unprivileged user, is a standard approach.