The big thing Docker solves is repeatability and isolation. If you create a Docker instance on your Mac, you are more or less guaranteed it will work the same in production.
If you were to create a Linux VM to replace Docker, you would need it to also recreate the Docker build tools for that VM so you could recreate that VM on the server. At that point, you’ve more or less come full circle and essentially recreated Docker.