Por que não usar um serviço de registro em nível de host para registrar os contêineres com portas para o etcd? Algo como link pode ser capaz de fazer o que você está tentando fazer no shell. Além disso, tive sucesso registrando pares de IP e porta no CoreOS usando algo assim:
ExecStart=/bin/sh -c "port=$(docker inspect -f '{{range $i, $e := .NetworkSettings.Ports }}{{$p := index $e 0}}{{$p.HostPort}}{{end}}' %n); while netstat -lnt | grep :$port >/dev/null; do etcdctl set /app/upstream/%n $COREOS_PRIVATE_IPV4:$port --ttl 300 >/dev/null; sleep 200; done"
Você pode adaptar isso apenas para a porta.