Commit Graph

984 Commits

Author SHA1 Message Date
Daniel J Walsh 52df1fa7e0
Fix volume handling in podman
iFix builtin volumes to work with podman volume

Currently builtin volumes are not recored in podman volumes when
they are created automatically. This patch fixes this.

Remove container volumes when requested

Currently the --volume option on podman remove does nothing.
This will implement the changes needed to remove the volumes
if the user requests it.

When removing a volume make sure that no container uses the volume.

Signed-off-by: Daniel J Walsh dwalsh@redhat.com
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2019-02-14 13:21:52 -05:00
OpenShift Merge Robot 0cd2243596
Merge pull request #2321 from baude/remotebuild
podman-remote build
2019-02-14 15:40:52 +01:00
OpenShift Merge Robot dfc64e15d7
Merge pull request #2319 from mheon/unconditional_cleanup
Fix manual detach from containers to not wait for exit
2019-02-13 22:55:52 +01:00
baude ef85dd7950 podman-remote build
add the ability to build images using files local to the remote-client
but over a varlink interface to a "remote" server.

Signed-off-by: baude <bbaude@redhat.com>
2019-02-13 15:36:36 -06:00
OpenShift Merge Robot e86aec7855
Merge pull request #2331 from baude/issue846
show container ports of network namespace
2019-02-13 21:30:00 +01:00
baude dd74467fd8 show container ports of network namespace
in cases where a container is part of a network namespace, we should
show the network namespace's ports when dealing with ports. this
impacts ps, kube, and port.

fixes: #846

Signed-off-by: baude <bbaude@redhat.com>
2019-02-13 13:51:23 -06:00
baude 4f60f79a27 podman-remote volume inspect|ls
add the ability to list and inspect volumes using the remote
client and varlink

Signed-off-by: baude <bbaude@redhat.com>
2019-02-13 12:43:51 -06:00
OpenShift Merge Robot 8a16f83b0a
Merge pull request #2327 from baude/issue2175
Parse fq name correctly for images
2019-02-13 19:20:10 +01:00
baude f29a11c201 Parse fq name correctly for images
When parsing a string name for repo and tag (for images output), we
should be using parsenormalizedname and reference.Canonical to
get the proper output.

Resolves: #2175

Signed-off-by: baude <bbaude@redhat.com>
2019-02-13 11:05:20 -06:00
baude 7dcc21f213 podman-remote push
enable podman-remote push so that users can push images from a
remote client.

change in push API to deal with the need to see output over the
varlink connection.

Signed-off-by: baude <bbaude@redhat.com>
2019-02-13 08:44:12 -06:00
Matthew Heon 19a03976f7 Retain a copy of container exit file on cleanup
When cleaning up containers, we presently remove the exit file
created by Conmon, to ensure that if we restart the container, we
won't have conflicts when Conmon tries writing a new exit file.

Unfortunately, we need to retain that exit file (at least until
we get a workable events system), so we can read it in cases
where the container has been removed before 'podman run' can read
its exit code.

So instead of removing it, rename it, so there's no conflict with
Conmon, and we can still read it later.

Fixes: #1640

Signed-off-by: Matthew Heon <mheon@redhat.com>
2019-02-12 12:57:11 -05:00
Matthew Heon b6775d5d22 Fix manual detach from containers to not wait for exit
At present, when manually detaching from an attached container
(using the detach hotkeys, default C-p C-q), Podman will still
wait for the container to exit to obtain its exit code (so we can
set Podman's exit code to match). This is correct in the case
where attach finished because the container exited, but very
wrong for the manual detach case.

As a result of this, we can no longer guarantee that the cleanup
and --rm functions will fire at the end of 'podman run' - we may
be exiting before we get that far. Cleanup is easy enough - we
swap to unconditionally using the cleanup processes we've used
for detached and rootless containers all along. To duplicate --rm
we need to also teach 'podman cleanup' to optionally remove
containers instead of cleaning them up.

(There is an argument for just using 'podman rm' instead of
'podman cleanup --rm', but cleanup does have different semantics
given that we only ever expect it to run when the container has
just exited. I think it might be useful to keep the two separate
for things like 'podman events'...)

Signed-off-by: Matthew Heon <mheon@redhat.com>
2019-02-12 10:14:57 -05:00
Lars Karlitski 8a51b11058 varlink: Rename `ImageInList` to `Image`
Image more clearly describes what the type represents.

Also, only include the image name in the `ImageNotFound` error returned
by `GetImage()`, not the full error message.

Signed-off-by: Lars Karlitski <lars@karlitski.net>
2019-02-12 14:48:19 +01:00
Lars Karlitski 29392b77e9 varlink: Return all times in RFC 3339 format
This is more consistent and eaiser to parse than the format that
golang's time.String() returns.

Fixes #2260

Signed-off-by: Lars Karlitski <lars@karlitski.net>
2019-02-12 14:47:49 +01:00
baude 3101364a3c podman-remote volume rm
add the ability to remove/delete volumes with the podman remote
client.

Signed-off-by: baude <bbaude@redhat.com>
2019-02-11 20:14:50 -06:00
OpenShift Merge Robot ea20ead35b
Merge pull request #2313 from baude/remotevolumecreate
podman-remote volume create
2019-02-12 02:54:34 +01:00
baude 358da6c8c0 podman-remote volume create
create a volume using the remote client over varlink

Signed-off-by: baude <bbaude@redhat.com>
2019-02-11 14:48:07 -06:00
OpenShift Merge Robot b7a3685cba
Merge pull request #2281 from rhatdan/deleteContainer
Remove container from storage on --force
2019-02-11 20:31:03 +01:00
baude 440dd8c2ed lock and sync container before checking mountpoint
when checking for a container's mountpoint, you must lock and sync
the container or the result may be "".

Fixes: #2304

Signed-off-by: baude <bbaude@redhat.com>
2019-02-11 09:20:30 -06:00
Giuseppe Scrivano 41967e2601
oci: do not set XDG_RUNTIME_DIR twice
we are doing it few lines above.

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2019-02-11 12:38:09 +01:00
Daniel J Walsh 233ba5bd89
Remove container from storage on --force
Currently we can get into a state where a container exists in
storage but does not exist in libpod.  If the user forces a
removal of this container, then we should remove it from storage
even if the container is owned by another tool.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2019-02-09 05:33:14 -07:00
baude 25a3923b61 Migrate to cobra CLI
We intend to migrate to the cobra cli from urfave/cli because the
project is more well maintained.  There are also some technical reasons
as well which extend into our remote client work.

Signed-off-by: baude <bbaude@redhat.com>
2019-02-08 10:26:43 -06:00
OpenShift Merge Robot c7350721bf
Merge pull request #2252 from rhatdan/system
Add podman system prune and info commands
2019-02-06 23:03:21 +01:00
OpenShift Merge Robot a9f75bf87b
Merge pull request #2273 from mheon/preserve_exited_state
Preserve exited state across reboot
2019-02-06 14:00:43 +01:00
Matthew Heon 3c52accbc9 Preserve exited state across reboot
Instead of unconditionally resetting to ContainerStateConfigured
after a reboot, allow containers in the Exited state to remain
there, preserving their exit code in podman ps after a reboot.

This does not affect the ability to use and restart containers
after a reboot, as the Exited state can be used (mostly)
interchangeably with Configured for starting and managing
containers.

Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2019-02-05 15:37:56 -05:00
Daniel J Walsh 74d984e056
Add podman system prune and info commands
We are missing the equivalence of the docker system commands

This patch set adds `podman system prune`
and `podman system info`

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2019-02-05 10:41:55 -08:00
baude 64c8fb7c24 podman-remote import|export
addition of import and export for the podman-remote client.  This includes
the ability to send and receive files between the remote-client and the
"podman" host using an upgraded varlink connection.

Signed-off-by: baude <bbaude@redhat.com>
2019-02-05 10:05:41 -06:00
Daniel J Walsh 3554bfce98
Merge pull request #2196 from baude/toolbox
Changes to container runlabel for toolbox project
2019-02-05 10:34:40 -05:00
Giuseppe Scrivano 61979d8ac2
rootless: copy some settings from the global configuration
if some paths are overriden in the global configuration file, be sure
that rootless podman honors them.

Closes: https://github.com/containers/libpod/issues/2174

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2019-02-05 11:37:33 +01:00
W. Trevor King 40943586d2 libpod/image: Use RepoDigests() in Inspect()
To get the more-robust handling from 0f6535cf (libpod/image: Use
ParseNormalizedNamed in RepoDigests, 2019-01-08, #2106) here too.

Signed-off-by: W. Trevor King <wking@tremily.us>
2019-01-31 11:01:19 -08:00
baude 735f0de633 Changes to container runlabel for toolbox project
The toolbox project would benefit from a few changes to more closely
resembe the original atomic cli project.  Changes made are:

* only pull image for container runlabel if the label exists in the image
* if a container image does not have the desired label, exit with non-zero

Signed-off-by: baude <bbaude@redhat.com>
2019-01-30 08:44:58 -06:00
baude 656033ca96 podman image prune -- implement all flag
we now, by default, only prune dangling images.  if --all is passed, we
prune dangling images AND images that do not have an associated containers.

also went ahead and enabled the podman-remote image prune side of things.

Fixes: #2192

Signed-off-by: baude <bbaude@redhat.com>
2019-01-29 16:51:48 -06:00
OpenShift Merge Robot c9e1f365e2
Merge pull request #2069 from mheon/warn_on_overriding_driver
Warn on overriding user-specified storage driver w/ DB
2019-01-23 22:15:16 +01:00
OpenShift Merge Robot 7838a13b61
Merge pull request #2199 from baude/remoteversion
enable podman-remote version
2019-01-22 15:28:19 +01:00
Ryan Gonzalez 61216937e7 Show a better error message when podman info fails during a refresh
Signed-off-by: Ryan Gonzalez <rymg19@gmail.com>
2019-01-21 15:24:10 -06:00
baude 5c8e7ed0de enable podman-remote version
initial enablement of podman-remote version.  includes add a APIVersion const
that will allow us to check compatibility between host/client when connections
are made.

also added client related information to podman info.

Signed-off-by: baude <bbaude@redhat.com>
2019-01-21 15:23:30 -06:00
OpenShift Merge Robot 4afdfd5eab
Merge pull request #2187 from rhatdan/selinux
Vendor in latest opencontainers/selinux
2019-01-21 08:49:20 +01:00
OpenShift Merge Robot 74b85098cf
Merge pull request #2142 from giuseppe/expose-ports
rootless: support port redirection from the host
2019-01-20 13:25:37 +01:00
Giuseppe Scrivano f182946bef
rootless: support port redirection from the host
add support for ports redirection from the host.

It needs slirp4netns v0.3.0-alpha.1.

Closes: https://github.com/containers/libpod/issues/2081

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2019-01-19 20:45:07 +01:00
Daniel J Walsh 8cf929c095
Vendor in latest opencontainers/selinux
This will now verify labels passed in by the user.
Will also prevent users from accidently relabeling their homedir.

podman run -ti -v ~/home/user:Z fedora sh

Is not a good idea.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2019-01-18 17:08:46 -05:00
baude eadaa5fb42 podman-remote inspect
base enablement of the inspect command.

Signed-off-by: baude <bbaude@redhat.com>
2019-01-18 15:43:11 -06:00
Matthew Heon fc52b0423b Do not unmarshal into c.config.Spec
We try to keep c.config immutable, but Go doesn't really agree
with me that things other than strings and ints can be immutable,
so occasionally things like this slip through.

When unmarshalling the OCI spec from disk, do it into a separate
struct, to ensure we don't make lasting modifications to the
spec in the Container struct (which could affect container
restart).

Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2019-01-18 10:27:51 -05:00
OpenShift Merge Robot 7f19e5fb23
Merge pull request #2149 from afbjorklund/bridge
Add bridge support, for the varlink connection
2019-01-18 15:57:30 +01:00
OpenShift Merge Robot 4406e1cfee
Merge pull request #2169 from mheon/ensure_wait_doesnot_hang
Ensure that wait exits on state transition
2019-01-16 17:38:41 +01:00
Matthew Heon 33889c642d Ensure that wait exits on state transition
When waiting for a container, there is a long interval between
status checks - plenty long enough for the container in question
to start, then subsequently be cleaned up and returned to Created
state to be restarted. As such, we can't wait on container state
to go to Stopped or Exited - anything that is not Running or
Paused indicates the container is dead.

Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2019-01-16 10:33:01 -05:00
OpenShift Merge Robot d8683219d2
Merge pull request #2079 from giuseppe/multiple-runtimes
oci: allow to define multiple OCI runtimes
2019-01-16 12:44:10 +01:00
baude e68f03ae45 Embed runtime struct in super localRuntime
We clean up the code by eliminating stuttering references when we embed
the runtime struct into localRuntime.  Makes for less change in the future
as well.

++ jhonce

Signed-off-by: baude <bbaude@redhat.com>
2019-01-15 16:01:25 -06:00
baude 341f91da48 Collaberative podman-remote container exists
Began frameout of container super structs for adapted methods.  This allows for the use
of container exists.

Signed-off-by: baude <bbaude@redhat.com>
2019-01-15 14:50:30 -06:00
baude 9a23e285d3 add support for podman-remote history
this adds support to get the history for an image and its
layers using podman-remote.

Signed-off-by: baude <bbaude@redhat.com>
2019-01-15 10:29:24 -06:00
baude 1ffb0fc2d1 podman remote client -- add rmi
allow the podman remote client to delete images

Signed-off-by: baude <bbaude@redhat.com>
2019-01-14 15:40:33 -06:00