No se puede conectar al servidor Go GRPC que se ejecuta en el contenedor Docker local

Tengo un servicio go grpc. Estoy desarrollando en una mac, sierra. Cuando ejecuto un cliente grpc contra el servicio localmente, todo está bien, pero cuando ejecuto el mismo cliente contra el mismo servicio en el contenedor docker obtengo este error:

transport: http2Client.notifyError got notified that the client transport was broken EOF.
FATA[0000] rpc error: code = Internal desc = transport is closing

Este es mi archivo acoplable:

FROM golang:1.7.5

RUN mkdir -p /go/src/github.com/foo/bar
WORKDIR /go/src/github.com/foo/bar

COPY . /go/src/github.com/foo/bar
# ONBUILD RUN go-wrapper download
RUN go install

ENTRYPOINT /go/bin/bar

EXPOSE 51672

mi comando para construir la imagen:

docker build -t bar .

mi comando para lanzar el contenedor docker:

docker run -p 51672:51672 --name bar-container bar
Otra información:El programa cliente funciona bien desde el contenedor acoplableconectarse a un punto final de reposo normal funciona bien (http2, ¿relacionado con grpc?)

corriendo ellsof comando en OS X produce estos resultados

$lsof -i | grep 51672
com.docke   984 oldDave   21u  IPv4 0x72779547e3a32c89      0t0  TCP *:51672 (LISTEN)
com.docke   984 oldDave   22u  IPv6 0x72779547cc0fd161      0t0  TCP localhost:51672 (LISTEN)

Aquí hay un fragmento de mi código de servidor:

server := &Server{}
endpoint := "localhost:51672"
lis, err := net.Listen("tcp", endpoint)
if err != nil {
    log.Fatalf("failed to listen: %v", err)
}

s := grpc.NewServer(grpc.Creds(creds))

pb.RegisterExpServiceServer(s, server)

// Register reflection service on gRPC server.
reflection.Register(s)

log.Info("Starting Exp server: ", endpoint)

if err := s.Serve(lis); err != nil {
    log.Fatalf("failed to serve: %v", err)
}

Respuestas a la pregunta(1)

Su respuesta a la pregunta