What is the point of the docker-proxy process? Why is a userspace tcp proxy needed?

Solution 1:

Apparently there are some edge cases without a better workaround (for now):

  • localhost<->localhost routing
  • docker instance calling into itself via its published port
  • and possibly more

https://github.com/docker/docker/issues/8356

UPDATE: Since 1.7.0 (2015-06-16) the userland proxy can be disabled in favor of hairpin NAT using the daemon’s --userland-proxy=false flag.