In other words, it becomes the concern of the person shipping the code, rather than the concern of the person trying to run the code. That's exactly how it should be.
And if you're on Windows, your Docker host is in a virtual machine, so networking and volumes are not so simple anymore.
Replacing one kind of complexity by another is not a solution, it is a trade-off.
According to the user needs, your dockerized application will run with different base distro. Alpine and musl for small OS footprint ? Or Debia(or debian-slim) for glibc compatibility ?
Those concerns are the same with or without Docker. Docker makes things easy, just not those things because it is not its purpose.
The packager of an application is part of the project's team. It's not up to the user to package your application.