Except that it's not clean environment. Make it a properly built DEB or RPM
package, and then we're starting (but just starting) to talk about clean.
Note also that binary packages help with repeatable deployment that uses
Docker, deployment tools (e.g. Ansible or Salt), configuration management
tools (CFEngine, Puppet), even manual -- and mix of all these. Docker images
only help with Docker deployment.
Well, we need to differentiate between application containers (Docker) and Linux containers (old:openVZ, new:LXD/LXC). Then there are application containers which are even more "limited," like Flatpack.
I'd argue that only Linux containers are like VMs.
Docker was LXC wrapper in the past. Now it just handles cgroup stuff itself. You can run full system in the Docker but purists regard this as antipattern.