diff --git a/generator.go b/generator.go index f357befb..c567e12c 100644 --- a/generator.go +++ b/generator.go @@ -397,21 +397,34 @@ func (g *generator) getContainers() ([]*RuntimeContainer, error) { IP6LinkLocal: container.NetworkSettings.LinkLocalIPv6Address, IP6Global: container.NetworkSettings.GlobalIPv6Address, } - for k, v := range container.NetworkSettings.Ports { - address := Address{ - IP: container.NetworkSettings.IPAddress, - IP6LinkLocal: container.NetworkSettings.LinkLocalIPv6Address, - IP6Global: container.NetworkSettings.GlobalIPv6Address, - Port: k.Port(), - Proto: k.Proto(), + if len(container.NetworkSettings.Ports) > 0 { + for k, v := range container.NetworkSettings.Ports { + address := Address{ + IP: container.NetworkSettings.IPAddress, + IP6LinkLocal: container.NetworkSettings.LinkLocalIPv6Address, + IP6Global: container.NetworkSettings.GlobalIPv6Address, + Port: k.Port(), + Proto: k.Proto(), + } + if len(v) > 0 { + address.HostPort = v[0].HostPort + address.HostIP = v[0].HostIP + } + runtimeContainer.Addresses = append(runtimeContainer.Addresses, + address) } - if len(v) > 0 { - address.HostPort = v[0].HostPort - address.HostIP = v[0].HostIP + } else if len(container.Config.ExposedPorts) > 0 { // internal docker network has empty 'container.NetworkSettings.Ports' + for k := range container.Config.ExposedPorts { + address := Address{ + IP: container.NetworkSettings.IPAddress, + IP6LinkLocal: container.NetworkSettings.LinkLocalIPv6Address, + IP6Global: container.NetworkSettings.GlobalIPv6Address, + Port: k.Port(), + Proto: k.Proto(), + } + runtimeContainer.Addresses = append(runtimeContainer.Addresses, + address) } - runtimeContainer.Addresses = append(runtimeContainer.Addresses, - address) - } for k, v := range container.NetworkSettings.Networks { network := Network{