Commit Graph

295 Commits

Author SHA1 Message Date
Valentin Rothberg 8569ed0305 AppArmor: runtime check if it's enabled on the host
Check at runtime if AppArmor is enabled on the host.

Signed-off-by: Valentin Rothberg <vrothberg@suse.com>

Closes: #1128
Approved by: mheon
2018-07-23 18:11:09 +00:00
Daniel J Walsh 2c11e38b24 Add format descriptors infor to podman top
Trying to play with podman top, I had a hard time
finding info on format options.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>

Closes: #1134
Approved by: umohnani8
2018-07-23 17:02:12 +00:00
haircommander 8f48e60840 Fix error handling in pod start/stop.
Before, errors in containers would never be printed, and a generic error would only be shown.

Signed-off-by: haircommander <pehunt@redhat.com>

Closes: #1132
Approved by: mheon
2018-07-23 14:22:07 +00:00
Matthew Heon 72c82fb79e
Merge pull request #1117 from haircommander/pod-start-stop1
Add pod start and stop
2018-07-20 13:50:54 -04:00
Matthew Heon 15a1e9c951
Merge pull request #1120 from haircommander/pod-ps-status-hotfix
Pod ps now uses pod.Status()
2018-07-20 13:26:09 -04:00
Matthew Heon 6cae4a0e94
Merge pull request #1103 from haircommander/load_dockerless
Podman load/tag/save prepends localhost when no registry is present
2018-07-20 12:50:18 -04:00
Matthew Heon 7944bca468
Merge pull request #1104 from rhatdan/mounting
Let containers/storage keep track of mounts
2018-07-20 12:31:32 -04:00
haircommander 0fecfeee63 Podman load/tag/save prepend localhost when no repository is present
Instead of having docker.io/library as its repository. Test included.

Signed-off-by: haircommander <pehunt@redhat.com>
2018-07-20 11:46:11 -04:00
haircommander 7716628e6f Pod ps now uses pod.Status()
It used to call ctr.State() to figure out what the pod status was, which certainly locked/unlocked excessively. Status now uses the libpod/pod function that bypasses this.

Signed-off-by: haircommander <pehunt@redhat.com>
2018-07-20 11:38:54 -04:00
haircommander 17f257140e Added pod start and stop
As well as added tests, man pages, and completions.
Also reformatted and refactored a couple of other small things in the other pod commands.

Signed-off-by: haircommander <pehunt@redhat.com>
2018-07-20 08:44:44 -04:00
Giuseppe Scrivano 067ae31095
rootless: allow a per-user storage.conf file
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2018-07-20 11:00:50 +02:00
Daniel J Walsh 85db3f09bf
Let containers/storage keep track of mounts
Currently we unmount storage that is still in use.
We should not be unmounting storeage that we mounted
via a different command or by podman mount. This
change relies on containers/storage to umount keep track of
how many times the storage was mounted before really unmounting
it from the system.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2018-07-19 17:01:07 -04:00
Valentin Rothberg ba1871dac0 podman-top: use containers/psgo
Use github.com/containers/psgo instead of execing `ps (1)`.  The psgo
library enables a much more flexible interface with respect to which
data to be printed (e.g., capabilities, seccomp mode, PID, PCPU, etc.)
while the output can be parsed reliably.  The library does not use
ps (1) but parses /proc and /dev instead.  To list the processes of a
given container, psgo will join the mount namespace of the given
container and extract all data from there.

Notice that this commit breaks compatibility with docker-top.

Signed-off-by: Valentin Rothberg <vrothberg@suse.com>

Closes: #1113
Approved by: rhatdan
2018-07-19 20:47:52 +00:00
Joshua Roys ea5fad6c8b Fix ps filter with key=value labels
Closes: #1101
Approved by: rhatdan
2018-07-16 18:27:02 +00:00
Matthew Heon 259136c36c Change logic for detecting conflicting flags in ps
There's no reason --size cannot be used together with a Go
template - in fact, using a Go template for {{.Size}} without
--size being passed will not work.

Allow use of --namespace and --size with Go templates, but not
with --quiet. Do not allow --namespace and --size at the same
time.

Signed-off-by: Matthew Heon <mheon@redhat.com>
2018-07-13 16:00:23 -04:00
Matthew Heon 5b43a6a7ee Only print container size JSON if --size was requested
To do this, move it into a separate struct, and embed that in
the JSON we return.

Signed-off-by: Matthew Heon <mheon@redhat.com>
2018-07-13 14:28:41 -04:00
Matthew Heon f08fffa306 Don't print rootfs and rw sizes if they're empty
We're printing them unconditionally now, even if --size is not
passed, which is confusing (you see a pair of 0s for container
size, when it is clearly not 0).

This may introduce bugs related to containers with an rwsize of 0
(freshly created from an image) and --size specified, but is
definitely better than what we have now.

Signed-off-by: Matthew Heon <mheon@redhat.com>
2018-07-13 14:28:41 -04:00
Matthew Heon 4c44185199 Major fixes to podman ps --format=json output
A number of fields were never being populated. Populate them as
best we can.

Add a new field, exited, to indicate whether the exit code has
meaning (IE, the container has exited).

Fix handling of running time - it stops ticking when the
container stops. There is further work needed here, I suspect.

Signed-off-by: Matthew Heon <mheon@redhat.com>
2018-07-13 14:28:41 -04:00
Matthew Heon d25ebcc35b Ignore running containers in ps exit-code filters
Signed-off-by: Matthew Heon <mheon@redhat.com>
2018-07-13 14:28:41 -04:00
Matthew Heon 028374b99e Record whether the container has exited
Use this to supplement exit codes returned from containers, to
make sure we know when exit codes are invalid (as the container
has not yet exited)

Signed-off-by: Matthew Heon <mheon@redhat.com>
2018-07-13 14:28:41 -04:00
Daniel J Walsh 673465a747
Merge pull request #1075 from giuseppe/rootless-no-symlinks-into-storage-path
rootless: fix usage on Fedora Silverblue/CoreOS
2018-07-13 14:15:54 -04:00
Daniel J Walsh 827359c8e6
Merge pull request #1065 from haircommander/pod-start-create-rm
Podman pod create/rm/ps commands with man pages and tests
2018-07-13 13:57:04 -04:00
Giuseppe Scrivano 62e48e5b71
rootless: correctly propagate the exit status from the container
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2018-07-13 16:41:11 +02:00
Daniel J Walsh 35b7a875fd Need to wait for container to exit before completing run/start completes
This fixes a race condition where conmon is still writing the exit
file and the container is exiting.

Also we should not be ignoring the -a stdin flag if the user specifies
--interactive mode.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>

Closes: #1086
Approved by: baude
2018-07-13 14:14:42 +00:00
Daniel J Walsh 299f471d1f If proxy fails then then signal should be sent to the main process
This way ^c will actually kill the host process if the container is not
actually running.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>

Closes: #1086
Approved by: baude
2018-07-13 14:14:42 +00:00
haircommander a04a8d1dd4 Added full podman pod ps, with tests and man page
Signed-off-by: haircommander <pehunt@redhat.com>
2018-07-13 09:17:33 -04:00
haircommander 1aad3fd96b Podman pod create/rm commands with man page and tests.
Includes a very stripped down version of podman pod ps, just for testing

Signed-off-by: haircommander <pehunt@redhat.com>
2018-07-13 09:05:03 -04:00
Daniel J Walsh e615b7d671 Log all output of logrus to syslog as well as stdout/stderr
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>

Closes: #1084
Approved by: baude
2018-07-12 21:19:05 +00:00
umohnani8 4f188aa191 podman rmi should only untag image if parent of another
podman rmi was deleting an image even if it was a parent of
another image. This fix just untags the image instead.
This also fixes podman rmi to remove intermediate images of
an image when the image is removed.

Signed-off-by: umohnani8 <umohnani@redhat.com>

Closes: #1055
Approved by: mheon
2018-07-12 18:56:33 +00:00
haircommander a1f3d44497 Changed container status of Unknown from being printed as Dead to Error in Ps
Signed-off-by: haircommander <pehunt@redhat.com>

Closes: #1083
Approved by: rhatdan
2018-07-12 17:21:06 +00:00
Valentin Rothberg 06ab343bd7 podman/libpod: add default AppArmor profile
Make users of libpod more secure by adding the libpod/apparmor package
to load a pre-defined AppArmor profile.  Large chunks of libpod/apparmor
come from github.com/moby/moby.

Also check if a specified AppArmor profile is actually loaded and throw
an error if necessary.

The default profile is loaded only on Linux builds with the `apparmor`
buildtag enabled.

Signed-off-by: Valentin Rothberg <vrothberg@suse.com>

Closes: #1063
Approved by: rhatdan
2018-07-11 16:36:24 +00:00
Giuseppe Scrivano 340becf542
rootless: propagate errors from GetRootlessRuntimeDir()
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2018-07-11 09:38:04 +02:00
Giuseppe Scrivano 7e3c0d493e
rootless: resolve the user home directory
Closes: https://github.com/projectatomic/libpod/issues/1073

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2018-07-11 09:23:00 +02:00
umohnani8 4855998f1c Add --volumes-from flag to podman run and create
podman now supports --volumes-from flag, which allows users
to add all the volumes an existing container has to a new one.

Signed-off-by: umohnani8 <umohnani@redhat.com>

Closes: #931
Approved by: mheon
2018-07-09 19:30:03 +00:00
haircommander 32dd520606 Podman stats with no containers listed is the same as podman stats --all
Signed-off-by: haircommander <pehunt@redhat.com>

Closes: #1031
Approved by: rhatdan
2018-07-07 19:52:51 +00:00
baude 6092955783 remove buildah requirement for the libpod image library
if we snip the requirement to use a buildah const in the libpod image library,
we can save something on the order of 85 vendored files in consumers of the
the library.

Signed-off-by: baude <bbaude@redhat.com>

Closes: #1054
Approved by: mheon
2018-07-06 17:03:19 +00:00
Marco Vedovati 9eef9eb212 Refactor podman/utils with a single container start and attach function
Use a single function startAttachCtr() to handle both container start
with attach and attach to running containers, as the code handling the
attach is common for the 2 use cases.

Signed-off-by: Marco Vedovati <mvedovati@suse.com>

Closes: #1025
Approved by: rhatdan
2018-07-06 16:02:46 +00:00
TomSweeneyRedHat 6d8fac87ed Allow multiple mounts
Signed-off-by: TomSweeneyRedHat <tsweeney@redhat.com>

Closes: #1030
Approved by: rhatdan
2018-07-03 18:02:45 +00:00
Daniel J Walsh 7fc1a329bd Add `podman container cleanup` to CLI
When we run containers in detach mode, nothing cleans up the network stack or
the mount points.  This patch will tell conmon to execute the cleanup code when
the container exits.

It can also be called to attempt to cleanup previously running containers.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>

Closes: #942
Approved by: mheon
2018-06-29 15:25:21 +00:00
TomSweeneyRedHat 41bd607c12 Allow multiple containers and all for umount
Signed-off-by: TomSweeneyRedHat <tsweeney@redhat.com>

Closes: #1012
Approved by: rhatdan
2018-06-29 15:01:21 +00:00
Daniel J Walsh 183cde0c68
Merge pull request #1020 from giuseppe/resize-fix-loop
utils: fix endless write of resize event
2018-06-28 17:43:58 -04:00
umohnani8 3b9046a170 Remove the --registry flag from podman search
Instead of setting the --registry flag to search a single registry,
prefix the registry before the image name in the input, an example is
`podman search registry.fedoraproject.org/fedora` and this will search for
the fedora image in only registry.fedoraproject.org.

Signed-off-by: umohnani8 <umohnani@redhat.com>

Closes: #1011
Approved by: rhatdan
2018-06-28 16:55:29 +00:00
Giuseppe Scrivano 54e9a48c54
utils: fix endless write of resize event
issue introduced with c82166afab

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2018-06-28 18:53:09 +02:00
haircommander 650797c016 Start prints UUID or container name that user inputs on success
Signed-off-by: haircommander <pehunt@redhat.com>

Closes: #1019
Approved by: rhatdan
2018-06-28 16:13:42 +00:00
W. Trevor King c82166afab cmd/podman/utils.go: Cancel-able resize writes
On Thu, Jun 28, 2018 at 03:48:26AM -0700, Marco Vedovati wrote [1]:
> The root cause is a deadlock between two channel writes made by two
> different goroutines:
>
> 1. `resizeTty() : go func(){} : sendUpdate()` is sending a resize
>    message thru `resize` right at the beginning, but the channel is
>    never read if some startup error occurs.
>
> 2. Upon program termination, `startAttachCtr() : defer func(){} ` is
>    telling the goroutine in "1." to stop via the `resizeTerminate`
>    channel. But that guy is still waiting for the write to `resize`
>    to complete so the the termination message is never read.
>
> I think the go deadlock detection does not kick in because not all
> goroutines are seen as asleep. E.g. `os/signal Notify()` is enough
> to have the deadlock not detected.

333ab8c2 (Fix podman hangs when detecting startup error in container
attached mode, 2018-06-27, #1010) addressed this with a deferred
drain.  This commit adjusts that approach to use a single select to
cover "have we been canceled?", "has there been a resize signal?", and
(when we have one) "can we write the most recent resize event to the
resize channel?".

A side benefit to this approach is that if we have a slow resize
consumer and several resize signals, the resizeTty function will keep
updating its local resizeEvent.  Once the resize channel is able to
accept, only the most-recent event will be written.  Previously we'd
have written one resize event for every received signal, even if the
resize consumer was falling behind.

[1]: https://github.com/projectatomic/libpod/pull/1010#issuecomment-400994436

Signed-off-by: W. Trevor King <wking@tremily.us>

Closes: #1018
Approved by: rhatdan
2018-06-28 15:53:02 +00:00
Marco Vedovati 333ab8c211 Fix podman hangs when detecting startup error in container attached mode
Signed-off-by: Marco Vedovati <mvedovati@suse.com>

The initial resize command sent to the terminal window over the resize
channel may never be delivered in case of error.

Hence it is necessary to consume all data from the resize channel to
avoid a deadlock on startup.

Fixes: #1009

Closes: #1010
Approved by: giuseppe
2018-06-28 13:39:52 +00:00
Valentin Rothberg 04accf0eff podman-build --help: update description
Update the description of podman-build which was mentioning the initial
requirement of Buildah which doesn't apply anymore since Podman is
vendoring Buildah code.

Signed-off-by: Valentin Rothberg <vrothberg@suse.com>

Closes: #1005
Approved by: rhatdan
2018-06-28 13:07:31 +00:00
Giuseppe Scrivano 6f3208b599 runtime: change rootless data storage default path
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>

Closes: #936
Approved by: rhatdan
2018-06-27 14:07:17 +00:00
Giuseppe Scrivano 5ff90677c8 rootless: add management for the userNS
When running podman as non root user always create an userNS and let
the OCI runtime use it.

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>

Closes: #936
Approved by: rhatdan
2018-06-27 14:07:17 +00:00
umohnani8 c75f4d4e70 Add --authfile to podman search
Since podman search requires credentials to search private registries,
add the --authfile flag to allow users to pass in credentials from a
different authfile than the default one.

Signed-off-by: umohnani8 <umohnani@redhat.com>

Closes: #998
Approved by: rhatdan
2018-06-27 09:46:50 +00:00