Commit Graph

5748 Commits

Author SHA1 Message Date
OpenShift Merge Robot 7b0d6fcf0e
Merge pull request #3225 from haraldh/virtwriter
pkg/varlinkapi/virtwriter/virtwriter.go: simplify func Reader
2019-06-04 15:50:48 +02:00
OpenShift Merge Robot 67c50ab63d
Merge pull request #3249 from baude/testtiming
fix timing issues with some tests
2019-06-04 14:51:32 +02:00
OpenShift Merge Robot db1e422461
Merge pull request #3251 from giuseppe/join-block-signals
rootless: block signals on re-exec
2019-06-04 14:39:39 +02:00
Divyansh Kamboj ef1a025356 Add warning while untagging an image podman-load
Signed-off-by: Divyansh Kamboj <kambojdivyansh2000@gmail.com>
2019-06-04 17:54:07 +05:30
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
OpenShift Merge Robot 88eefaecb6
Merge pull request #3156 from TomSweeneyRedHat/dev/tsweeney/podmanimage
Create Dockerfiles for podmanimage
2019-06-04 07:49:47 +02:00
Lawrence Chan 8fe22d48fb Inherit rootless init_path from system libpod.conf
Signed-off-by: Lawrence Chan <element103@gmail.com>
2019-06-03 18:44:36 -05:00
Qi Wang c1b4060bdd podman copy files to the volume with a container
enabls podman to cpoy files between the host machine and the volume related with a container.
Close #3059

Signed-off-by: Qi Wang <qiwan@redhat.com>
2019-06-03 17:36:34 -04:00
Adrian Reber 0e072f9a97
Also download container images during restore
If restoring a container from a checkpoint it was necessary that the
image the container is based was already available (podman pull).

This commit adds the image download to podman container restore if it
does not exist.

Signed-off-by: Adrian Reber <areber@redhat.com>
2019-06-03 22:05:13 +02:00
Adrian Reber a4d33330d6
Include container migration into tutorial
Signed-off-by: Adrian Reber <areber@redhat.com>
2019-06-03 22:05:13 +02:00
Adrian Reber 42e903decb
Add man-pages for container migration
Signed-off-by: Adrian Reber <areber@redhat.com>
2019-06-03 22:05:13 +02:00
Adrian Reber 7b1ab8a0f4
Added bash completion for container migration
Signed-off-by: Adrian Reber <areber@redhat.com>
2019-06-03 22:05:13 +02:00
Adrian Reber 2aa3261744
Add test case for container migration
The difference between container checkpoint/restore and container
migration is that for migration the container which was checkpointed
must not exist during restore. To simulate migration the container
is remove ('podman rm -fa') before being restored. The migration test
does following steps:

 * podman run
 * podman container checkpoint -l -e /tmp/checkpoint.tar.gz
 * podman rm -fa
 * podman container restore -i /tmp/checkpoint.tar.gz

Signed-off-by: Adrian Reber <areber@redhat.com>
2019-06-03 22:05:12 +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 a05cfd24bb
Added helper functions for container migration
This adds a couple of function in structure members needed in the next
commit to make container migration actually work. This just splits of
the function which are not modifying existing code.

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 0ede794da9
Merge pull request #3217 from edsantiago/cirrus_cleanup
cirrus: minor cleanup and refactoring
2019-06-03 21:51:09 +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
baude c727cd1dc6 fix timing issues with some tests
some integration tests are inherently problematic due to timing issues.
one such case is running a valid health check on container that runs
nginx.  while the container may be running, nginx may not have finished
executing itself and therefore the healthcheck fails.

Signed-off-by: baude <bbaude@redhat.com>
2019-06-03 11:06:46 -05:00
Harald Hoyer 939f8150da
pkg/varlinkapi/virtwriter/virtwriter.go: simplify func Reader
Signed-off-by: Harald Hoyer <harald@redhat.com>
2019-06-03 16:31:45 +02:00
OpenShift Merge Robot 7c465d4d97
Merge pull request #3250 from marcusmueller/podman_man_page_mixup
Manpage: fix podman-varlink and -version mixup
2019-06-03 14:51:20 +02:00
Giuseppe Scrivano 6b0e1a3091
rootless: block signals on re-exec
we are allowed to use only signal safe functions between a fork of a
multithreaded application and the next execve.  Since setenv(3) is not
signal safe, block signals.  We are already doing it for creating a
new namespace.

This is mostly a cleanup since reexec_in_user_namespace_wait is used
only only to join existing namespaces when we have not a pause.pid
file.

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2019-06-03 14:25:10 +02:00
Ed Santiago a47bb4d29f cirrus: minor cleanup and refactoring
...with the goal of (very soon) reusing this code, in #2947,
to run system tests in CI. This is the cleanest way I can
think of to do so without duplication or a large maintenance
burden.

Changes are:
 - replace references to 'ginkgo' with 'integration'. That
   target is already in Makefile, and is not only more
   readable, it's also more abstract. There is no reason
   for this level of code to know about ginkgo.
 - allow rootless_test.sh to accept an argument,
   that being the name of the test suite to run
   (default: integration). #2947 will enable 'system'.
 - allow integration_test.sh to serve multiple purposes,
   by checking its filename. #2947 will add a symlink,
   system_test.sh, which will then cascade down to
   invoke system tests.

Signed-off-by: Ed Santiago <santiago@redhat.com>
2019-06-03 05:34:31 -06:00
Marcus Müller 39e4f53e6a manpage: podman-tool table: un-confuse version and varlink
Signed-off-by: Marcus Müller <marcus@hostalia.de>
2019-06-02 20:31:58 +02:00
TomSweeneyRedHat 54e1a3a103 Create Dockerfiles for podmanimage
The Dockerfiles necessary to create the stable, testing and upstream container images
on quay.io/user/podman.  Once this is commited, I will set up those images
such that they will be built with every git commit.

stable - Latest Fedora release image
testing - Latest release on bohdi Fedora testing
upstream - Latest version in upstream podman

Signed-off-by: TomSweeneyRedHat <tsweeney@redhat.com>
2019-06-01 14:22:38 -04:00
OpenShift Merge Robot 176a41c355
Merge pull request #3244 from giuseppe/cleanups-rootless-join
rootless: some cleanups for rootless_linux.c
2019-06-01 19:28:44 +02:00
OpenShift Merge Robot 2068919e9b
Merge pull request #3236 from baude/testsplitrootless
split rootless local and remote testing
2019-06-01 03:37:15 +02:00
Giuseppe Scrivano 27e47cb6d0
rootless: use TEMP_FAILURE_RETRY macro
avoid checking for EINTR for every syscall that could block.

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2019-05-31 22:05:25 +02:00
Giuseppe Scrivano b88dc3a41e
rootless: fix return type
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2019-05-31 22:05:25 +02:00
Giuseppe Scrivano 10983c363e
rootless: make sure the buffer is NUL terminated
after we read from the pause PID file, NUL terminate the buffer to
avoid reading garbage from the stack.

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2019-05-31 22:05:24 +02:00
baude d1c44ea856 split rootless local and remote testing
Signed-off-by: baude <bbaude@redhat.com>
2019-05-31 14:54:06 -05:00
OpenShift Merge Robot 503ed5fe03
Merge pull request #3246 from mheon/run_the_tests
Small fix to readme to force tests to run
2019-05-31 21:30:18 +02:00
Matthew Heon 25aac813bd Fix podman cp test by reordering operations
Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2019-05-31 12:58:44 -04:00
Matthew Heon a01349373a Small fix to readme to force tests to run
Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2019-05-31 11:59:50 -04: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
OpenShift Merge Robot 558ce8d141
Merge pull request #3224 from haraldh/varlink_upgrade
Fix for varlink upgrade connections
2019-05-31 04:53:29 +02:00
OpenShift Merge Robot 88b7a221a2
Merge pull request #3238 from mheon/no_tmpcopyup_dev
Do not set tmpcopyup on /dev
2019-05-31 04:15:31 +02:00
OpenShift Merge Robot b5b461ac28
Merge pull request #3147 from baude/testimagecache
use imagecaches for local tests
2019-05-30 21:56:26 +02:00
OpenShift Merge Robot 2dcfd3df0b
Merge pull request #3214 from mheon/resolve_symlinks_in_cp
Resolve symlinks in cp
2019-05-30 21:17:28 +02:00
Matthew Heon c520e34ea7 Do not set tmpcopyup on /dev
Fixes #3229

Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2019-05-30 14:02:14 -04:00
OpenShift Merge Robot 7358a4c590
Merge pull request #3235 from baude/testnoremoteinpodman
do not run remote tests inside container
2019-05-30 19:48:08 +02:00
Chris Evich 5369e45470
docs: Add CI section and links
Signed-off-by: Chris Evich <cevich@redhat.com>
2019-05-30 12:55:51 -04:00
baude ce6e3b80d1 do not run remote tests inside container
when running the podman integration tests inside a container, we should
not be running the remote tests.

Signed-off-by: baude <bbaude@redhat.com>
2019-05-30 10:30:14 -05: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
Matthew Heon 5a07311d9e Fix podman cp tests
Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2019-05-30 10:53:52 -04: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
W. Trevor King 317a5c72c6 libpod/container_internal: Make all errors loading explicitly configured hook dirs fatal
Remove this IsNotExist out which was added along with the rest of this
block in f6a2b6bf2b (hooks: Add pre-create hooks for runtime-config
manipulation, 2018-11-19, #1830).  Besides the obvious "hook directory
does not exist", it was swallowing the less-obvious "hook command does
not exist".  And either way, folks are likely going to want non-zero
podman exits when we fail to load a hook directory they explicitly
pointed us towards.

Signed-off-by: W. Trevor King <wking@tremily.us>
2019-05-29 20:19:41 -07:00