Dns only handles to domain but not the port. So if you have a client that normally just checks 80 or 443, that's what it'll assume you want, which is a pain.
There are two paths I'd say would be reasonable. The first is adding more IP addresses to the host so you can publish the docker port to a specific access. Then you don't need the port. You will have to specify specific addresses to listen on so services like nginx don't just listen on all IPs on the host.
The other thing would be to change your nginx config to have multiple server
directives that looks for specific Host headers and point each server to what you want via upstream
directives that can have the port specified. http://nginx.org/en/docs/http/ngx_http_upstream_module.html for details.
If you need more than that, let me know and I'll see if I can paint you in the right direction.