summaryrefslogtreecommitdiff
path: root/libpod/util.go
diff options
context:
space:
mode:
authorPaul Holzinger <pholzing@redhat.com>2021-08-24 10:23:10 +0200
committerPaul Holzinger <pholzing@redhat.com>2021-08-24 15:44:26 +0200
commit4b2dc48d0bcde9d9dccb05f829019a52f3eddec7 (patch)
tree71ea2ef8e45e73de5ba47c707ab15d7edb8a15e3 /libpod/util.go
parent2de56a5f41473e8f759972ec568089e9cddc0f98 (diff)
downloadpodman-4b2dc48d0bcde9d9dccb05f829019a52f3eddec7.tar.gz
podman-4b2dc48d0bcde9d9dccb05f829019a52f3eddec7.tar.bz2
podman-4b2dc48d0bcde9d9dccb05f829019a52f3eddec7.zip
podman inspect show exposed ports
Podman inspect has to show exposed ports to match docker. This requires storing the exposed ports in the container config. A exposed port is shown as `"80/tcp": null` while a forwarded port is shown as `"80/tcp": [{"HostIp": "", "HostPort": "8080" }]`. Also make sure to add the exposed ports to the new image when the container is commited. Fixes #10777 Signed-off-by: Paul Holzinger <pholzing@redhat.com>
Diffstat (limited to 'libpod/util.go')
-rw-r--r--libpod/util.go13
1 files changed, 11 insertions, 2 deletions
diff --git a/libpod/util.go b/libpod/util.go
index 3b32fb264..ed5c4e6c6 100644
--- a/libpod/util.go
+++ b/libpod/util.go
@@ -295,8 +295,8 @@ func writeHijackHeader(r *http.Request, conn io.Writer) {
}
// Convert OCICNI port bindings into Inspect-formatted port bindings.
-func makeInspectPortBindings(bindings []ocicni.PortMapping) map[string][]define.InspectHostPort {
- portBindings := make(map[string][]define.InspectHostPort)
+func makeInspectPortBindings(bindings []ocicni.PortMapping, expose map[uint16][]string) map[string][]define.InspectHostPort {
+ portBindings := make(map[string][]define.InspectHostPort, len(bindings))
for _, port := range bindings {
key := fmt.Sprintf("%d/%s", port.ContainerPort, port.Protocol)
hostPorts := portBindings[key]
@@ -309,6 +309,15 @@ func makeInspectPortBindings(bindings []ocicni.PortMapping) map[string][]define.
})
portBindings[key] = hostPorts
}
+ // add exposed ports without host port information to match docker
+ for port, protocols := range expose {
+ for _, protocol := range protocols {
+ key := fmt.Sprintf("%d/%s", port, protocol)
+ if _, ok := portBindings[key]; !ok {
+ portBindings[key] = nil
+ }
+ }
+ }
return portBindings
}