I've found it's best to specify the IP explicitly. For our Docker containers, we actually have our run script query the AWS metadata (though you definitely could do it via the EurekaInstanceConfigBean listed in spring-cloud/spring-cloud-netflix#432)
We use the private IPs for the docker hosts on everything except our Zuul reverse proxy, which is nice because it prevents outside traffic from hitting the services directly AND doesn't require hitting the public internet
Does anyone hav experience setting up consul and spring cloud applications through docker. I have hit a problem where I have finally gotten all the services to run but the ip address that consul returns when quering from a service appears to be one of the docker containers rather than the host machine. I have been unable to figure out how to modify consuls settings to fix this.