Commit Graph

1226 Commits

Author SHA1 Message Date
Matthew Heon d40b450afd Default 'pause' to false for 'podman cp'
Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2019-06-07 15:17:40 -04:00
OpenShift Merge Robot 346128792c
Merge pull request #2272 from adrianreber/migration
Add support to migrate containers
2019-06-07 14:33:20 +02:00
baude 13a961a2cf remove -c for podman remote global options
it conflicts with commit

Signed-off-by: baude <bbaude@redhat.com>
2019-06-04 18:06:24 -05:00
OpenShift Merge Robot 3fb9669a63
Merge pull request #3231 from baude/remoteclientconf
podman-remote.conf enablement
2019-06-04 20:02:01 +02:00
TomSweeneyRedHat 14ec550ec3 Vendor Buildah v1.8.3
Vendor in Buildah v1.8.3

Signed-off-by: TomSweeneyRedHat <tsweeney@redhat.com>
2019-06-04 13:05:19 -04:00
Adrian Reber bef83c42ea
migration: add possibility to restore a container with a new name
The option to restore a container from an external checkpoint archive
(podman container restore -i /tmp/checkpoint.tar.gz) restores a
container with the same name and same ID as id had before checkpointing.

This commit adds the option '--name,-n' to 'podman container restore'.
With this option the restored container gets the name specified after
'--name,-n' and a new ID. This way it is possible to restore one
container multiple times.

If a container is restored with a new name Podman will not try to
request the same IP address for the container as it had during
checkpointing. This implicitly assumes that if a container is restored
from a checkpoint archive with a different name, that it will be
restored multiple times and restoring a container multiple times with
the same IP address will fail as each IP address can only be used once.

Signed-off-by: Adrian Reber <areber@redhat.com>
2019-06-04 14:02:51 +02:00
Adrian Reber 0028578b43
Added support to migrate containers
This commit adds an option to the checkpoint command to export a
checkpoint into a tar.gz file as well as importing a checkpoint tar.gz
file during restore. With all checkpoint artifacts in one file it is
possible to easily transfer a checkpoint and thus enabling container
migration in Podman. With the following steps it is possible to migrate
a running container from one system (source) to another (destination).

 Source system:
  * podman container checkpoint -l -e /tmp/checkpoint.tar.gz
  * scp /tmp/checkpoint.tar.gz destination:/tmp

 Destination system:
  * podman pull 'container-image-as-on-source-system'
  * podman container restore -i /tmp/checkpoint.tar.gz

The exported tar.gz file contains the checkpoint image as created by
CRIU and a few additional JSON files describing the state of the
checkpointed container.

Now the container is running on the destination system with the same
state just as during checkpointing. If the container is kept running
on the source system with the checkpoint flag '-R', the result will be
that the same container is running on two different hosts.

Signed-off-by: Adrian Reber <areber@redhat.com>
2019-06-03 22:05:12 +02:00
Adrian Reber e0c8c14f5b
Fix restore options help text and comments
Signed-off-by: Adrian Reber <areber@redhat.com>
2019-06-03 22:05:12 +02:00
OpenShift Merge Robot e41162076a
Merge pull request #3081 from baude/remotecommit
podman remote-client commit
2019-06-03 20:58:13 +02:00
OpenShift Merge Robot 38c4a1322d
Merge pull request #3227 from giuseppe/fix-warning-rootless
rootless: skip check fo /etc/containers/registries.conf
2019-05-31 15:55:48 +02:00
baude 2df462024b podman remote-client commit
add the ability to commit a container to an image using the remote
client.

Signed-off-by: baude <bbaude@redhat.com>
2019-05-30 10:14:23 -05:00
baude dc7ae31171 podman-remote.conf enablement
add the ability for the podman remote client to use a configuration file
which describes its connections. users can now define a connection the
configuration and then call it by name like:

podman-remote -c connection1

and the destination and user will be derived from the configuration
file.  if no -c is provided, we look for a connection in the
configuration file designated as 'default'.  If the configuration file
has only one connection, it will be deemed the 'default'.

Signed-off-by: baude <bbaude@redhat.com>
2019-05-30 09:41:17 -05:00
Matthew Heon 57d4093979 Error when trying to copy into a running rootless ctr
We can't pause them, so if that's requested, throw an error.

Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2019-05-30 09:20:04 -04:00
Giuseppe Scrivano ad806f78e3
rootless: skip check fo /etc/containers/registries.conf
the warning can be confusing when used in rootless mode as the
unprivileged user has no way for setting it up.

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

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2019-05-30 09:01:55 +02:00
Matthew Heon 48e35f7da7 We can't pause rootless containers during cp
Rootless containers can't be paused (no CGroups, so no freezer).

We could try and emulate this with a SIGSTOP to all PIDs in the
container, but that's inherently racy, so let's avoid it for now.

Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2019-05-29 22:53:51 -04:00
Matthew Heon 79990b7364 Tolerate non-running containers in paused cp
Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2019-05-29 22:53:51 -04:00
Matthew Heon 49dc18552a Pause containers while copying into them
Should fix CVE-2018-15664 for Podman.

Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2019-05-29 22:53:50 -04:00
Matthew Heon 7b7d54242c Use securejoin to merge paths in `podman cp`
Securejoin ensures that paths are resolved in the container, not
on the host.

Fixes #3211

Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2019-05-29 22:53:50 -04:00
OpenShift Merge Robot 8422503f43
Merge pull request #3221 from josegonzalez/master
Add missing 'container cp' alias and document missing 'container update' command
2019-05-29 20:46:09 +02:00
Jose Diaz-Gonzalez 635c161f38 add missing container cp command
'docker cp' is an alias for 'docker container cp', and podman should have the equivalent alias.

Signed-off-by: Jose Diaz-Gonzalez <email@josediazgonzalez.com>
2019-05-29 12:44:25 -04:00
OpenShift Merge Robot 294448c2ea
Merge pull request #2709 from haircommander/journald
Add libpod journald logging
2019-05-29 17:51:27 +02:00
OpenShift Merge Robot aed91ce3bf
Merge pull request #3188 from giuseppe/fix-join-existing-containers
rootless: new function to join existing conmon processes
2019-05-29 17:12:40 +02:00
Peter Hunt 02f971131a Implement podman logs with log-driver journald
Add a journald reader that translates the journald entry to a k8s-file formatted line, to be added as a log line

Note: --follow with journald hasn't been implemented. It's going to be a larger undertaking that can wait.

Signed-off-by: Peter Hunt <pehunt@redhat.com>
2019-05-28 11:10:57 -04:00
Peter Hunt f61fa28d39 Added --log-driver and journald logging
Signed-off-by: Peter Hunt <pehunt@redhat.com>
2019-05-28 11:10:57 -04:00
OpenShift Merge Robot 08dd8b2d76
Merge pull request #3137 from giuseppe/unshare-fixes
unshare: some cleanups and define CONTAINERS_{RUNROOT,GRAPHROOT}
2019-05-28 17:01:04 +02:00
OpenShift Merge Robot 7b6dac300d
Merge pull request #3194 from QiWang19/cptar
fix bug dest path of copying tar
2019-05-28 16:44:58 +02:00
OpenShift Merge Robot 335a1ef160
Merge pull request #3189 from vrothberg/apparmor-fixes
Apparmor fixes
2019-05-28 16:23:48 +02:00
Giuseppe Scrivano ee11f3bce9
rootless: new function to join existing conmon processes
move the logic for joining existing namespaces down to the rootless
package.  In main_local we still retrieve the list of conmon pid files
and use it from the rootless package.

In addition, create a temporary user namespace for reading these
files, as the unprivileged user might not have enough privileges for
reading the conmon pid file, for example when running with a different
uidmap and root in the container is different than the rootless user.

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

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2019-05-25 13:47:57 +02:00
Qi Wang bb7b0aad0e fix bug dest path of copying tar
when podman cp tar without --extract flag, if the destination already exists, or ends with path seprator, cp the tar under the directory, otherwise copy the tar named with the destination

Signed-off-by: Qi Wang <qiwan@redhat.com>
2019-05-24 11:51:30 -04:00
Giuseppe Scrivano 5eb321ac37
podman: honor env variable PODMAN_USERNS
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2019-05-24 17:34:13 +02:00
Giuseppe Scrivano f09370c68b
userns: add new option --userns=keep-id
it creates a namespace where the current UID:GID on the host is mapped
to the same UID:GID in the container.

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2019-05-24 17:34:12 +02:00
Valentin Rothberg 1910118de9 warn when --security-opt and --privileged
Log a warning when --security-opt and --privileged are used together to
indicate that it has no effect since --privileged will set everything.
To avoid regressions, only warn, do not error out and do not print on
error level.

Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2019-05-24 15:37:42 +02:00
OpenShift Merge Robot e0376b9c3f
Merge pull request #3108 from rhatdan/flags
Fixup Flags
2019-05-22 16:27:30 +02:00
OpenShift Merge Robot a4c42c6c6c
Merge pull request #3178 from mheon/fix_gen_kube
Fix a 'generate kube' bug on ctrs with named volumes
2019-05-22 09:47:44 +02:00
OpenShift Merge Robot 536fd6addd
Merge pull request #3084 from giuseppe/rootless-pause-process
rootless: use a pause process to keep namespaces alive
2019-05-21 22:08:08 +02:00
Matthew Heon cec56b0075
Merge pull request #3168 from rhatdan/vendor
Update vendor of buildah and containers/images
2019-05-21 15:54:26 -04:00
Matthew Heon e59083f41f Fix play kube when a pod is specified
We need to pass the Pod ID in as part of the CreateConfig.

Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2019-05-21 14:18:42 -04:00
OpenShift Merge Robot e6277b1a2d
Merge pull request #3167 from weirdwiz/filter
Minor fix filtering images by label
2019-05-21 17:39:27 +02:00
Daniel J Walsh baed81029b
Fixup Flags
Mark hidden all references to signature-policy
Default all uses of --authfile
Add --authfile support to podman run and podman create.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2019-05-20 13:53:32 -04:00
Divyansh Kamboj c6f7066e77 Minor fix filtering images by label
Added test to avoid future regressions

Fix #3163

Signed-off-by: Divyansh Kamboj <kambojdivyansh2000@gmail.com>
2019-05-20 23:11:48 +05:30
Daniel J Walsh 1d505f6875
Update vendor of buildah and containers/images
Mainly add support for podman build using --overlay mounts.

Updates containers/image also adds better support for new registries.conf
file.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2019-05-20 13:39:40 -04:00
OpenShift Merge Robot 8d5432932d
Merge pull request #3139 from jwhonce/wip/remote_info
Add connection information to podman-remote info
2019-05-20 17:20:59 +02:00
Nathaniel Kofalt f4a4c7cda0 Output name of process on runlabel command
Signed-off-by: Nathaniel Kofalt <nathaniel@kofalt.com>
2019-05-18 23:31:52 -05:00
Giuseppe Scrivano 9dabb16e65
system: migrate stops the pause process
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2019-05-17 20:48:25 +02:00
Giuseppe Scrivano 791d53a214
rootless: use a pause process
use a pause process to keep the user and mount namespace alive.

The pause process is created immediately on reload, and all successive
Podman processes will refer to it for joining the user&mount
namespace.

This solves all the race conditions we had on joining the correct
namespaces using the conmon processes.

As a fallback if the join fails for any reason (e.g. the pause process
was killed), then we try to join the running containers as we were
doing before.

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2019-05-17 20:48:24 +02:00
OpenShift Merge Robot 144244aeed
Merge pull request #3104 from giuseppe/initial-cgroup2
rootless: allow resource isolation with cgroup v2
2019-05-17 19:54:13 +02:00
Valentin Rothberg 8f7f86d8cd remote: version: fix nil dereference
Fix a nil dereference by passing the PodmanCommand to GetRuntime().

Fixes: #3145
Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2019-05-17 11:32:30 +02:00
Jhon Honce a1c654de94 Add connection information to podman-remote info
Refactor client code to break out building connection string from
making the connection.

Example:

client:
  Connection: unix:/run/podman/io.podman
  Connection Type: DirectConnection
  .
  :

Signed-off-by: Jhon Honce <jhonce@redhat.com>
2019-05-16 11:03:22 -07:00
Giuseppe Scrivano 8b344065d2
unshare: define CONTAINERS_GRAPHROOT and CONTAINERS_RUNROOT
define two environment variables, that simplify the task of cleaning
up the storage, as we can do something like:

podman unshare sh -c 'rm -rf $CONTAINERS_GRAPHROOT $CONTAINERS_RUNROOT'

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2019-05-16 16:31:21 +02:00
Giuseppe Scrivano 4b48024057
unshare: use rootless from libpod
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2019-05-16 15:58:46 +02:00