From 85b260fba8785e7cb767f14c58c533f21843de5e Mon Sep 17 00:00:00 2001 From: Rob Murray Date: Mon, 24 Nov 2025 20:26:30 +0000 Subject: [PATCH] PublishAllPorts: create port mappings for exposed ports Signed-off-by: Rob Murray --- daemon/network.go | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/daemon/network.go b/daemon/network.go index 7851bb3b68..40352f66be 100644 --- a/daemon/network.go +++ b/daemon/network.go @@ -1036,7 +1036,20 @@ func buildPortsRelatedCreateEndpointOptions(c *container.Container, n *libnetwor exposedPorts []lntypes.TransportPort publishedPorts []lntypes.PortBinding ) - for p, bindings := range c.HostConfig.PortBindings { + + ports := c.HostConfig.PortBindings + if c.HostConfig.PublishAllPorts { + // Add exposed ports to a copy of the map to make sure a "publishedPorts" entry is created + // for each exposed port, even if there's no specific binding. + ports = maps.Clone(c.HostConfig.PortBindings) + for p := range c.Config.ExposedPorts { + if _, exists := ports[p]; !exists { + ports[p] = nil + } + } + } + + for p, bindings := range ports { protocol := lntypes.ParseProtocol(string(p.Proto())) exposedPorts = append(exposedPorts, lntypes.TransportPort{ Proto: protocol,