Estou no coreos e iniciei três contêineres.
docker run --rm -ti -p 80 --name one ubuntu /bin/bash
docker run --rm --link one:one -p $HOST_IP::80 -ti --name two ubuntu /bin/bash
docker run --rm -ti -p 80 --name three ubuntu /bin/bash
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
57b76ef98d16 ubuntu:14.04 "/bin/bash" 8 minutes ago Up 8 minutes 0.0.0.0:49154->80/tcp three
a3160a19c377 ubuntu:14.04 "/bin/bash" 9 minutes ago Up 9 minutes $HOST_IP:$DOCKER_PORT->80/tcp two
0ac743ae3a1a ubuntu:14.04 "/bin/bash" 9 minutes ago Up 9 minutes 0.0.0.0:49153->80/tcp one,two/one
Eu posso verificar se o contêiner 2 pode falar com o contêiner 1.
# container one, listen on port 80
$ hostname -i
172.17.0.2
$ nc -l 80
# container two, writing to port 80 (typing foo results in foo appearing on container one)
$ hostname -i
172.17.0.3
$ nc 172.17.0.2 80
foo
Se eu tentar o mesmo para a comunicação do contêiner três para o contêiner dois, a conexão "será bem-sucedida", mas será fechada imediatamente.
# container two, listen on port 80
$ hostname -i
172.17.0.3
$ nc -l 80
# container three, writing to port 80 (connection gets just closed)
$ hostname -i
172.17.0.4
$ nc $HOST_IP $DOCKER_PORT -v
Connection to $HOST_IP $DOCKER_PORT port [tcp/*] succeeded!
$
Algumas informações sobre o ambiente
# coreos version
$ cat /etc/lsb-release
DISTRIB_ID=CoreOS
DISTRIB_RELEASE=459.0.0
DISTRIB_CODENAME="Red Dog"
DISTRIB_DESCRIPTION="CoreOS 459.0.0"
# docker info
$ docker info
Containers: 4
Images: 278
Storage Driver: btrfs
Execution Driver: native-0.2
Kernel Version: 3.16.2+
Operating System: CoreOS 459.0.0
# ubuntu container info
$ uname -a
Linux 57b76ef98d16 3.16.2+ #2 SMP Fri Oct 3 07:45:37 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
Minha pergunta é por que não consigo escrever mensagens do contêiner três para o contêiner dois e por que a conexão pode ser estabelecida, mas ainda será fechada automaticamente.