From a0e1cf8376ca0d96e4a63d4893e274333ae31000 Mon Sep 17 00:00:00 2001 From: NicoMen Date: Mon, 30 Oct 2017 14:36:04 +0100 Subject: [PATCH] Fix IP address when Docker container network mode is container --- provider/docker/docker.go | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/provider/docker/docker.go b/provider/docker/docker.go index 4d4938790..1e6f24c60 100644 --- a/provider/docker/docker.go +++ b/provider/docker/docker.go @@ -594,10 +594,25 @@ func (p *Provider) getIPAddress(container dockerData) string { // If net==host, quick n' dirty, we return 127.0.0.1 // This will work locally, but will fail with swarm. - if "host" == container.NetworkSettings.NetworkMode { + if container.NetworkSettings.NetworkMode.IsHost() { return "127.0.0.1" } + if container.NetworkSettings.NetworkMode.IsContainer() { + dockerClient, err := p.createClient() + if err != nil { + log.Warnf("Unable to get IP address for container %s, error: %s", container.Name, err) + return "" + } + ctx := context.Background() + containerInspected, err := dockerClient.ContainerInspect(ctx, container.NetworkSettings.NetworkMode.ConnectedContainer()) + if err != nil { + log.Warnf("Unable to get IP address for container %s : Failed to inspect container ID %s, error: %s", container.Name, container.NetworkSettings.NetworkMode.ConnectedContainer(), err) + return "" + } + return p.getIPAddress(parseContainer(containerInspected)) + } + if p.UseBindPortIP { port := p.getPort(container) for netport, portBindings := range container.NetworkSettings.Ports {