summaryrefslogtreecommitdiff
path: root/cmd/podman
diff options
context:
space:
mode:
Diffstat (limited to 'cmd/podman')
-rw-r--r--cmd/podman/create.go17
-rw-r--r--cmd/podman/ps.go21
2 files changed, 27 insertions, 11 deletions
diff --git a/cmd/podman/create.go b/cmd/podman/create.go
index 28bd0a60e..80cb7f432 100644
--- a/cmd/podman/create.go
+++ b/cmd/podman/create.go
@@ -299,15 +299,26 @@ func isPortInPortBindings(pb map[nat.Port][]nat.PortBinding, port nat.Port) bool
}
func exposedPorts(c *cli.Context, imageExposedPorts map[string]struct{}) (map[nat.Port]struct{}, map[nat.Port][]nat.PortBinding, error) {
- // TODO Handle exposed ports from image
- // Currently ignoring imageExposedPorts
+ var exposedPorts []string
var ports map[nat.Port]struct{}
ports = make(map[nat.Port]struct{})
_, portBindings, err := nat.ParsePortSpecs(c.StringSlice("publish"))
if err != nil {
return nil, nil, err
}
- for _, e := range c.StringSlice("expose") {
+
+ // Parse the ports from the image itself
+ for i := range imageExposedPorts {
+ fields := strings.Split(i, "/")
+ if len(fields) > 2 {
+ return nil, nil, errors.Errorf("invalid exposed port format in image")
+ }
+ exposedPorts = append(exposedPorts, fields[0])
+ }
+
+ // Add the ports from the image to the ports from the user
+ exposedPorts = append(exposedPorts, c.StringSlice("expose")...)
+ for _, e := range exposedPorts {
// Merge in exposed ports to the map of published ports
if strings.Contains(e, ":") {
return nil, nil, fmt.Errorf("invalid port format for --expose: %s", e)
diff --git a/cmd/podman/ps.go b/cmd/podman/ps.go
index 944664c68..d68abeb53 100644
--- a/cmd/podman/ps.go
+++ b/cmd/podman/ps.go
@@ -10,6 +10,7 @@ import (
"strings"
"time"
+ "github.com/cri-o/ocicni/pkg/ocicni"
"github.com/docker/go-units"
specs "github.com/opencontainers/runtime-spec/specs-go"
"github.com/pkg/errors"
@@ -400,7 +401,7 @@ func getTemplateOutput(containers []*libpod.Container, opts psOptions) ([]psTemp
//command := getStrFromSquareBrackets(ctr.ImageCreatedBy)
command := strings.Join(ctr.Spec().Process.Args, " ")
//mounts := getMounts(ctr.Mounts, opts.noTrunc)
- //ports := getPorts(ctr.Config.ExposedPorts)
+ ports := getPorts(ctr.Config().PortMappings)
//size := units.HumanSize(float64(ctr.SizeRootFs))
labels := formatLabels(ctr.Labels())
ns := getNamespaces(pid)
@@ -433,7 +434,7 @@ func getTemplateOutput(containers []*libpod.Container, opts psOptions) ([]psTemp
CreatedAt: createdAt,
RunningFor: runningFor,
Status: status,
- //Ports: ports,
+ Ports: ports,
//Size: size,
Names: ctr.Name(),
Labels: labels,
@@ -592,15 +593,19 @@ func getMounts(mounts []specs.Mount, noTrunc bool) string {
}
return strings.Join(arr, ",")
}
+*/
// getPorts converts the ports used to a string of the from "port1, port2"
-func getPorts(ports map[string]struct{}) string {
- var arr []string
+func getPorts(ports []ocicni.PortMapping) string {
+ var portDisplay []string
if len(ports) == 0 {
return ""
}
- for key := range ports {
- arr = append(arr, key)
+ for _, v := range ports {
+ hostIP := v.HostIP
+ if hostIP == "" {
+ hostIP = "0.0.0.0"
+ }
+ portDisplay = append(portDisplay, fmt.Sprintf("%s:%d->%d/%s", hostIP, v.HostPort, v.ContainerPort, v.Protocol))
}
- return strings.Join(arr, ",")
+ return strings.Join(portDisplay, ", ")
}
-*/