ATUALIZAÇÃO 3
Libswarm foi renomeado como swarm e agora é um aplicativo separado.
Aqui está a demonstração da página do github para usar como ponto de partida:
# create a cluster
$ swarm create
6856663cdefdec325839a4b7e1de38e8
# on each of your nodes, start the swarm agent
# <node_ip> doesn't have to be public (eg. 192.168.0.X),
# as long as the other nodes can reach it, it is fine.
$ swarm join --token=6856663cdefdec325839a4b7e1de38e8 --addr=<node_ip:2375>
# start the manager on any machine or your laptop
$ swarm manage --token=6856663cdefdec325839a4b7e1de38e8 --addr=<swarm_ip:swarm_port>
# use the regular docker cli
$ docker -H <swarm_ip:swarm_port> info
$ docker -H <swarm_ip:swarm_port> run ...
$ docker -H <swarm_ip:swarm_port> ps
$ docker -H <swarm_ip:swarm_port> logs ...
...
# list nodes in your cluster
$ swarm list --token=6856663cdefdec325839a4b7e1de38e8
http://<node_ip:2375>
ATUALIZAÇÃO 2
A abordagem oficial agora é usar o libswarm; veja uma demonstração aqui
ATUALIZAR
Há uma boa essência para a comunicação de hosts openvswitch no docker usando a mesma abordagem.
Para permitir a descoberta de serviço, há uma abordagem interessante baseada em DNS chamada skydock .
Também há um screencast .
Este também é um bom artigo usando as mesmas peças do quebra-cabeça, mas adicionando também vlans no topo:
http://fbevmware.blogspot.it/2013/12/coupling-docker-and-open-vswitch.html
O patching não tem nada a ver com a robustez da solução. O Docker é, na verdade, apenas uma espécie de DSL nos contêineres do Linux e ambas as soluções nestes artigos simplesmente ignoram algumas configurações automáticas do Docker e recorrem diretamente aos contêineres do Linux.
Portanto, você pode usar as soluções com segurança e esperar para poder fazer isso de uma maneira mais simples, uma vez que o Docker irá implementá-las.