summaryrefslogtreecommitdiff
path: root/cmd
diff options
context:
space:
mode:
Diffstat (limited to 'cmd')
-rw-r--r--cmd/podman/main.go11
-rw-r--r--cmd/podman/run.go2
-rw-r--r--cmd/podman/search.go5
-rw-r--r--cmd/podman/start.go2
-rw-r--r--cmd/podman/wait.go16
5 files changed, 32 insertions, 4 deletions
diff --git a/cmd/podman/main.go b/cmd/podman/main.go
index 8d470e10d..a532bc26e 100644
--- a/cmd/podman/main.go
+++ b/cmd/podman/main.go
@@ -138,6 +138,17 @@ func main() {
logrus.SetLevel(level)
}
+ // Only if not rootless, set rlimits for open files.
+ // We open numerous FDs for ports opened
+ if !rootless.IsRootless() {
+ rlimits := new(syscall.Rlimit)
+ rlimits.Cur = 1048576
+ rlimits.Max = 1048576
+ if err := syscall.Setrlimit(syscall.RLIMIT_NOFILE, rlimits); err != nil {
+ return errors.Wrapf(err, "error setting new rlimits")
+ }
+ }
+
if logLevel == "debug" {
debug = true
diff --git a/cmd/podman/run.go b/cmd/podman/run.go
index 42aa81cd5..2a031de05 100644
--- a/cmd/podman/run.go
+++ b/cmd/podman/run.go
@@ -117,7 +117,7 @@ func runCmd(c *cli.Context) error {
return err
}
- if ecode, err := ctr.Wait(); err != nil {
+ if ecode, err := ctr.Wait(libpod.WaitTimeout); err != nil {
if errors.Cause(err) == libpod.ErrNoSuchCtr {
// The container may have been removed
// Go looking for an exit file
diff --git a/cmd/podman/search.go b/cmd/podman/search.go
index 009ff8ba9..f64b822fc 100644
--- a/cmd/podman/search.go
+++ b/cmd/podman/search.go
@@ -345,6 +345,11 @@ func matchesOfficialFilter(filter searchFilterParams, result docker.SearchResult
}
func getRegistry(image string) (string, error) {
+ // It is possible to only have the registry name in the format "myregistry/"
+ // if so, just trim the "/" from the end and return the registry name
+ if strings.HasSuffix(image, "/") {
+ return strings.TrimSuffix(image, "/"), nil
+ }
imgRef, err := reference.Parse(image)
if err != nil {
return "", err
diff --git a/cmd/podman/start.go b/cmd/podman/start.go
index cb65ec6d4..a80d0e1e8 100644
--- a/cmd/podman/start.go
+++ b/cmd/podman/start.go
@@ -115,7 +115,7 @@ func startCmd(c *cli.Context) error {
return errors.Wrapf(err, "unable to start container %s", ctr.ID())
}
- if ecode, err := ctr.Wait(); err != nil {
+ if ecode, err := ctr.Wait(libpod.WaitTimeout); err != nil {
logrus.Errorf("unable to get exit code of container %s: %q", ctr.ID(), err)
} else {
exitCode = int(ecode)
diff --git a/cmd/podman/wait.go b/cmd/podman/wait.go
index e919ab3ca..48d3885e7 100644
--- a/cmd/podman/wait.go
+++ b/cmd/podman/wait.go
@@ -3,8 +3,10 @@ package main
import (
"fmt"
"os"
+ "time"
"github.com/containers/libpod/cmd/podman/libpodruntime"
+ "github.com/containers/libpod/libpod"
"github.com/pkg/errors"
"github.com/urfave/cli"
)
@@ -15,7 +17,14 @@ var (
Block until one or more containers stop and then print their exit codes
`
- waitFlags = []cli.Flag{LatestFlag}
+ waitFlags = []cli.Flag{
+ cli.UintFlag{
+ Name: "interval, i",
+ Usage: "Milliseconds to wait before polling for completion",
+ Value: uint(libpod.WaitTimeout),
+ },
+ LatestFlag,
+ }
waitCommand = cli.Command{
Name: "wait",
Usage: "Block on one or more containers",
@@ -57,7 +66,10 @@ func waitCmd(c *cli.Context) error {
if err != nil {
return errors.Wrapf(err, "unable to find container %s", container)
}
- returnCode, err := ctr.Wait()
+ if c.Uint("interval") == 0 {
+ return errors.Errorf("interval must be greater then 0")
+ }
+ returnCode, err := ctr.Wait(time.Duration(c.Uint("interval")))
if err != nil {
if lastError != nil {
fmt.Fprintln(os.Stderr, lastError)