From e814936915d28286fa88f1211bc354687a358a7c Mon Sep 17 00:00:00 2001 From: baude Date: Wed, 14 Feb 2018 15:25:06 -0600 Subject: No entrpoint, cmd, or command When an image does not have an ENTRYPOINT nor a CMD and the user does not provide a command in the CLI, we should fail gracefully. This resolves issue #328 Signed-off-by: baude Closes: #333 Approved by: mheon --- cmd/podman/create.go | 4 ++++ test/e2e/run_entrypoint_test.go | 11 +++++++++++ 2 files changed, 15 insertions(+) diff --git a/cmd/podman/create.go b/cmd/podman/create.go index 2012aa6de..5e2ea3969 100644 --- a/cmd/podman/create.go +++ b/cmd/podman/create.go @@ -587,6 +587,10 @@ func parseCreateOpts(c *cli.Context, runtime *libpod.Runtime, imageName string, command = append(command, data.ContainerConfig.Cmd...) } + if len(command) == 0 { + return nil, errors.Errorf("No command specified on command line or as CMD or ENTRYPOINT in this image") + } + // EXPOSED PORTS portBindings, err := exposedPorts(c, data.ContainerConfig.ExposedPorts) if err != nil { diff --git a/test/e2e/run_entrypoint_test.go b/test/e2e/run_entrypoint_test.go index 2ae282967..e06f8bb3a 100644 --- a/test/e2e/run_entrypoint_test.go +++ b/test/e2e/run_entrypoint_test.go @@ -28,6 +28,17 @@ var _ = Describe("Podman run entrypoint", func() { }) + It("podman run no command, entrypoint, or cmd", func() { + dockerfile := `FROM docker.io/library/alpine:latest +ENTRYPOINT [] +CMD [] +` + podmanTest.BuildImage(dockerfile, "foobar.com/entrypoint:latest") + session := podmanTest.Podman([]string{"run", "foobar.com/entrypoint:latest"}) + session.WaitWithDefaultTimeout() + Expect(session.ExitCode()).To(Equal(125)) + }) + It("podman run entrypoint", func() { dockerfile := `FROM docker.io/library/alpine:latest ENTRYPOINT ["grep", "Alpine", "/etc/os-release"] -- cgit v1.2.3-54-g00ecf