Could not connect to docker swarm manager. Consul error 'could find local IP: dial udp: too many colons in address'

I’ve already setup my docker swarm manager. Now, I want to join a node to a swarm with consul as service discovery. Service discovery seems fine. I tried consul members and they are all connected. However, when I try to join a node

docker swarm join --advertise-addr=<hostip>:2375 consul://<hostip>:8500/swarm

I got this error

Error response from daemon: could not find local IP address: dial udp: too many colons in address consul://<hostip>:8500/swarm

I’m using docker 1.12 and consul 0.6.4 protocol 2