Commit Graph

1238 Commits

Author SHA1 Message Date
Daniel J Walsh
3bbb692d80 If container is not in correct state podman exec should exit with 126
This way a tool can determine if the container exists or not, but is in the
wrong state.

Since 126 is documeted as:
**_126_** if the **_contained command_** cannot be invoked

It makes sense that the container would exit with this state.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2019-06-12 05:15:58 -04:00
OpenShift Merge Robot
d4681fafe5 Merge pull request #3298 from ashley-cui/username
Fix podman-remote to user default username
2019-06-12 08:49:12 +02:00
OpenShift Merge Robot
c385f33cdf Merge pull request #3290 from edsantiago/bats
BATS tests - get working again
2019-06-11 21:21:33 +02:00
OpenShift Merge Robot
130f6cba8c Merge pull request #3293 from mheon/add_test_for_play_kube
Add a test for 'podman play kube' to prevent regression
2019-06-11 18:48:25 +02:00
Matthew Heon
f909b745ec Add --filename option to generate kube
This allows writing output directly to a file, instead of STDOUT.
Makes things easier for some scripting tasks. Like the unit tests
for 'play kube'.

Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2019-06-11 11:26:46 -04:00
Ashley Cui
91ce129eab Fix podman-remote to user default username
Currently, you have to specify the username every time, rather than default like SSH does.

Signed-off-by: Ashley Cui <ashleycui16@gmail.com>
2019-06-11 10:09:37 -04:00
Ed Santiago
9f49c1af46 Prohibit use of positional args with --import
I took the liberty of combining related checks together
so as to avoid a little duplication; if this is not a
Go best practice, I will revert. I also made a minor
wording adjustment to an error message for clarity.

Also: update wording of man page.

Signed-off-by: Ed Santiago <santiago@redhat.com>
2019-06-11 06:53:03 -06:00
Ed Santiago
bd0582dd34 BATS tests - get working again
Various small fixes to get BATS tests working again.
Split from #2947 because that one keeps getting stalled,
and I'm hoping these separate changes get approved.

I consider these changes urgent because RHEL8 gating
tests are failing, and will fail even more if/when #2272
gets picked up and packaged for RHEL8, and I consider
it important to have clean passing tests for RHEL8.

  * info test: 'insecure registries' is gone. A recent
    commit (d1a7378aa) changed the format of 'podman info',
    removing the 'insecure registries' key. Deal with it.

  * info test: remove check for .host.{Conmon,OCIRuntime}.package;
    the value on f28 and f29 is 'Unknown' (instead of an NVR).
    We can live without this check.

  * 'load' test: skip when running in CI, because stdin
    is not a tty.

  * container restore: fix arg processing. #2272 broke argument
    processing: 'podman container restore', with no args, should
    exit with 'argument required' error. Root cause is that the
    new --import option takes the place of an argument, so the
    checkAllAndLatest() call had to be changed to not exit on error.
    Workaround is (sigh) to copy/paste the skipped checkAllAndLatest()
    code, with minor tweaks to accommodate --import.

Signed-off-by: Ed Santiago <santiago@redhat.com>
2019-06-11 06:53:03 -06:00
OpenShift Merge Robot
c93b8d6b02 Merge pull request #3240 from rhatdan/storageopts
When you change the storage driver we ignore the storage-options
2019-06-10 20:33:46 +02:00
OpenShift Merge Robot
39f5ea4c04 Merge pull request #3180 from mheon/inspect_volumes
Begin to break up pkg/inspect
2019-06-08 14:45:24 +02:00
Daniel J Walsh
629017bb19 When you change the storage driver we ignore the storage-options
The storage driver and the storage options in storage.conf should
match, but if you change the storage driver via the command line
then we need to nil out the default storage options from storage.conf.

If the user wants to change the storage driver and use storage options,
they need to specify them on the command line.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2019-06-08 06:20:31 -04:00
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
Matthew Heon
1be345bd9d Begin to break up pkg/inspect
Let's put inspect structs where they're actually being used. We
originally made pkg/inspect to solve circular import issues.
There are no more circular import issues.

Image structs remain for now, I'm focusing on container inspect.

Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2019-06-03 15:54:53 -04: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