From de845a5b427b82004130f27fec5c27f397722c27 Mon Sep 17 00:00:00 2001 From: Florian Bezannier Date: Sat, 10 Feb 2024 12:33:07 +0100 Subject: [PATCH] feat: make inspect compatible with docker v1.44 Signed-off-by: Florian Bezannier --- libpod/container_inspect.go | 12 +++++++++--- libpod/define/container_inspect.go | 4 ++-- libpod/util.go | 6 +++++- 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/libpod/container_inspect.go b/libpod/container_inspect.go index de1d059ecf..439aa47753 100644 --- a/libpod/container_inspect.go +++ b/libpod/container_inspect.go @@ -5,10 +5,13 @@ package libpod import ( "errors" "fmt" + "strconv" "strings" + "syscall" "github.com/containers/podman/v5/libpod/define" "github.com/containers/podman/v5/libpod/driver" + "github.com/containers/podman/v5/pkg/signal" "github.com/containers/podman/v5/pkg/util" "github.com/containers/storage/types" "github.com/docker/go-units" @@ -388,7 +391,7 @@ func (c *Container) generateInspectContainerConfig(spec *spec.Spec) *define.Insp // Leave empty if not explicitly overwritten by user if len(c.config.Entrypoint) != 0 { - ctrConfig.Entrypoint = strings.Join(c.config.Entrypoint, " ") + ctrConfig.Entrypoint = c.config.Entrypoint } if len(c.config.Labels) != 0 { @@ -404,8 +407,11 @@ func (c *Container) generateInspectContainerConfig(spec *spec.Spec) *define.Insp ctrConfig.Annotations[k] = v } } - - ctrConfig.StopSignal = c.config.StopSignal + var signal, err = signal.ParseSysSignalToName(syscall.Signal(c.config.StopSignal)) + if err != nil { + signal = strconv.FormatUint(uint64(c.config.StopSignal), 10) + } + ctrConfig.StopSignal = fmt.Sprintf("SIG%s", signal) // TODO: should JSON deep copy this to ensure internal pointers don't // leak. ctrConfig.Healthcheck = c.config.HealthCheckConfig diff --git a/libpod/define/container_inspect.go b/libpod/define/container_inspect.go index dbb7a06c91..b6144de396 100644 --- a/libpod/define/container_inspect.go +++ b/libpod/define/container_inspect.go @@ -44,7 +44,7 @@ type InspectContainerConfig struct { // Container working directory WorkingDir string `json:"WorkingDir"` // Container entrypoint - Entrypoint string `json:"Entrypoint"` + Entrypoint []string `json:"Entrypoint"` // On-build arguments - presently unused. More of Buildah's domain. OnBuild *string `json:"OnBuild"` // Container labels @@ -52,7 +52,7 @@ type InspectContainerConfig struct { // Container annotations Annotations map[string]string `json:"Annotations"` // Container stop signal - StopSignal uint `json:"StopSignal"` + StopSignal string `json:"StopSignal"` // Configured healthcheck for the container Healthcheck *manifest.Schema2HealthConfig `json:"Healthcheck,omitempty"` // HealthcheckOnFailureAction defines an action to take once the container turns unhealthy. diff --git a/libpod/util.go b/libpod/util.go index 3b30b100d1..fa9e0aae60 100644 --- a/libpod/util.go +++ b/libpod/util.go @@ -235,8 +235,12 @@ func makeInspectPorts(bindings []types.PortMapping, expose map[uint16][]string) for i := uint16(0); i < port.Range; i++ { key := fmt.Sprintf("%d/%s", port.ContainerPort+i, protocol) hostPorts := portBindings[key] + var host = port.HostIP + if len(port.HostIP) == 0 { + host = "0.0.0.0" + } hostPorts = append(hostPorts, define.InspectHostPort{ - HostIP: port.HostIP, + HostIP: host, HostPort: strconv.FormatUint(uint64(port.HostPort+i), 10), }) portBindings[key] = hostPorts