Let's try to bring this in sync with http://blog.docker.io/2013/10/docker-0-6-5-links-container-naming-advanced-port-redirects-host-integration/

-expose does not do any port redirection by itself. It only specifies which ports from the container to map to the outside world. It implies that some service is listening on those ports within the container when it runs. But the ports still aren't available to the outside world until either a -p or -link happens.

A -p parameter will do an implicit -expose if the container's port hasn't already been exposed. That is, if you specify ``docker run -p 127.0.0.1:80:8080`` and the container didn't already ``EXPOSE`` (as part of its construction) port 8080, then the -p does the expose for you as a convenience. A -link will only redirect ports that are already exposed.