Restrict portallocator to Docker allocated ports

Port allocation status is stored in a global map: a port detected in use will remain as such for the lifetime of the daemon. Change the behaviour to only mark as allocated ports which are claimed by Docker itself (which we can trust to properly remove from the allocation map once released). Ports allocated by other applications will always be retried to account for the eventuality of the port having been released.

Fixes #6476.
But caller already knows about `hostIP` and `hostPort`, because he passed this args :) Also, this is just my feeling about Go error handling, if you supply sort of valid reply on error, then we have non-zero chances, that caller just skip the error.