That's because Docker was really designed to replace Vagrant, and that shows.
The use case is an individual developer who wants to get a test environment up and running quickly without needing to understand how IP routing works. It's great for that use, not so much for workloads in production.