diff --git a/cli/command/formatter/container.go b/cli/command/formatter/container.go index aeaa03a6d3b1..63c1a73b19da 100644 --- a/cli/command/formatter/container.go +++ b/cli/command/formatter/container.go @@ -5,6 +5,7 @@ package formatter import ( "fmt" + "net" "sort" "strconv" "strings" @@ -331,7 +332,8 @@ func DisplayablePorts(ports []types.Port) string { portKey := port.Type if port.IP != "" { if port.PublicPort != current { - hostMappings = append(hostMappings, fmt.Sprintf("%s:%d->%d/%s", port.IP, port.PublicPort, port.PrivatePort, port.Type)) + hAddrPort := net.JoinHostPort(port.IP, strconv.Itoa(int(port.PublicPort))) + hostMappings = append(hostMappings, fmt.Sprintf("%s->%d/%s", hAddrPort, port.PrivatePort, port.Type)) continue } portKey = port.IP + "/" + port.Type diff --git a/cli/command/formatter/container_test.go b/cli/command/formatter/container_test.go index 8f0d5e5c31d6..9ef64ec895ec 100644 --- a/cli/command/formatter/container_test.go +++ b/cli/command/formatter/container_test.go @@ -471,6 +471,16 @@ func TestDisplayablePorts(t *testing.T) { }, "0.0.0.0:0->9988/tcp", }, + { + []types.Port{ + { + IP: "::", + PrivatePort: 9988, + Type: "tcp", + }, + }, + "[::]:0->9988/tcp", + }, { []types.Port{ {