Commit graph

3174 commits

Author SHA1 Message Date
Brent Baude
3c3fa6fac4 implement init containers in podman
this is the first pass at implementing init containers for podman pods.
init containersare made popular by k8s as a way to run setup for pods
before the pods standard containers run.

unlike k8s, we support two styles of init containers: always and
oneshot.  always means the container stays in the pod and starts
whenever a pod is started.  this does not apply to pods restarting.
oneshot means the container runs onetime when the pod starts and then is
removed.

Signed-off-by: Brent Baude <bbaude@redhat.com>
2021-08-04 14:14:36 -05:00
openshift-ci[bot]
bdbc21095a
Merge pull request #10828 from cdoern/scp
Created image scp feature
2021-08-02 17:15:54 +00:00
openshift-ci[bot]
1f43e82d38
Merge pull request #11072 from matejvasek/header-timeout
Remove ReadHeaderTimeout
2021-08-02 12:25:19 +00:00
cdoern
1d10ca739f Created scp.go image_scp_test.go and podman-image-scp.1.md
added functionality for image secure copying from local to remote.
Also moved system connection add code around a bit so functions within that file
can be used by scp.

Signed-off-by: cdoern <cdoern@redhat.com>
2021-07-30 17:19:24 -04:00
flouthoc
2a484e782a ps: support the container notation for ps --filter network=...
Signed-off-by: flouthoc <flouthoc.git@gmail.com>
2021-07-30 19:31:05 +05:30
Matej Vasek
872c442e67 Remove ReadHeaderTimeout
Effectively sets timeout to infinity.
This is needed in order to make `podman` work with `pack`.
The `pack` CLI is keeping one connection for prolonged time.
Closing the connection breaks `pack`'s functionality.

[NO TESTS NEEDED]

Signed-off-by: Matej Vasek <mvasek@redhat.com>
2021-07-29 14:07:47 +02:00
OpenShift Merge Robot
0f42cce2f2
Merge pull request #11073 from giuseppe/fix-zombie-process-first-run
rootless: avoid zombie process on first launch
2021-07-29 07:06:12 -04:00
Giuseppe Scrivano
724d048234
rootless: avoid zombie process on first launch
avoid a zombie process if on the first launch Podman creates a long
living process, such as "podman system service -t 0".

The `r` variable was overriden thus causing the waitpid to fail and
not clean up the intermediate process.

Closes: https://github.com/containers/podman/issues/10575

[NO TESTS NEEDED]

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2021-07-29 11:07:17 +02:00
OpenShift Merge Robot
f9395ddc5a
Merge pull request #11067 from vrothberg/fix-10154-2
remote build: fix streaming and error handling
2021-07-28 16:17:45 +02:00
OpenShift Merge Robot
1176c41a60
Merge pull request #11056 from giuseppe/warning-root-no-shared
rootless: check that / is mounted as shared
2021-07-28 15:06:27 +02:00
OpenShift Merge Robot
6c5966cf3c
Merge pull request #10910 from adrianreber/2021-07-12-checkpoint-restore-into-pod
Add support for checkpoint/restore into and out of pods
2021-07-28 14:48:28 +02:00
Valentin Rothberg
4df6e31ccb remote build: fix streaming and error handling
Address a number of issues in the streaming logic in remote build, most
importantly an error in using buffered channels on the server side.

The pattern below does not guarantee that the channel is entirely read
before the context fires.

for {
	select {
		case <- bufferedChannel:
		...
		case <- ctx.Done():
		...
	}
}

Fixes: #10154
Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2021-07-28 14:46:15 +02:00
Giuseppe Scrivano
67d439197e
rootless: check that / is mounted as shared
if the root mount '/' is not mounted as MS_SHARED, print a
warning, otherwise new mounts that are created in the host won't be
propagated to the rootless mount namespace.

Closes: https://github.com/containers/podman/issues/10946

[NO TESTS NEEDED]

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2021-07-28 11:04:36 +02:00
OpenShift Merge Robot
a5de831418
Merge pull request #11049 from vrothberg/fix-7370
support container to container copy
2021-07-27 22:20:45 +02:00
OpenShift Merge Robot
a6a0f6c192
Merge pull request #11061 from giuseppe/migrate-no-move-to-cgroup
command: migrate doesn't move process to cgroup
2021-07-27 20:46:46 +02:00
Adrian Reber
eb94467780
Support checkpoint/restore with pods
This adds support to checkpoint containers out of pods and restore
container into pods.

It is only possible to restore a container into a pod if it has been
checkpointed out of pod. It is also not possible to restore a non pod
container into a pod.

The main reason this does not work is the PID namespace. If a non pod
container is being restored in a pod with a shared PID namespace, at
least one process in the restored container uses PID 1 which is already
in use by the infrastructure container. If someone tries to restore
container from a pod with a shared PID namespace without a shared PID
namespace it will also fail because the resulting PID namespace will not
have a PID 1.

Signed-off-by: Adrian Reber <areber@redhat.com>
2021-07-27 16:10:44 +02:00
Adrian Reber
3375cbb198
Vendor in go-criu v5.1.0 for Pod checkpoint/restore support
Signed-off-by: Adrian Reber <areber@redhat.com>
2021-07-27 16:10:44 +02:00
Adrian Reber
92dce3e2fe
Prepare CRIU version check to work with multiple versions
The upcoming commit to support checkpointing out of Pods requires CRIU
3.16. This changes the CRIU version check to support checking for
different versions.

Signed-off-by: Adrian Reber <areber@redhat.com>
2021-07-27 16:10:44 +02:00
Mehul Arora
6fe03b25ab support container to container copy
Implement container to container copy.  Previously data could only be
copied from/to the host.

Fixes: #7370
Co-authored-by: Mehul Arora <aroram18@mcmaster.ca>
Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2021-07-27 15:32:23 +02:00
Giuseppe Scrivano
63ef5576ed
command: migrate doesn't move process to cgroup
add a new annotation for the "system migrate" command to not move the
pause process to a separate cgroup.

The operation is not needed since "system migrate" destroys the pause
process, so there won't be any process left to move to a cgroup.

[NO TESTS NEEDED]

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2021-07-27 14:26:23 +02:00
Giuseppe Scrivano
a0313ef92b
rootless: do not overwrite err variable
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2021-07-27 14:26:22 +02:00
Valentin Rothberg
7689783ae5 exec: fix cleanup
Commit 341e6a1 made sure that all exec sessions are getting cleaned up.
But it also came with a peformance penalty.  Fix that penalty by
spawning the cleanup process to really only cleanup the exec session
without attempting to remove the container.

[NO TESTS NEEDED] since we have no means to test such performance
issues in CI.

Fixes: #10701
Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2021-07-27 12:00:15 +02:00
OpenShift Merge Robot
d7b2f03f8a
Merge pull request #10983 from vrothberg/fix-dangling
refine dangling checks
2021-07-27 10:57:21 +02:00
OpenShift Merge Robot
89853a30eb
Merge pull request #11036 from caarlos0/fix-podman-manifest-push
fix: podman manifest push respect --tls-verify flag
2021-07-26 16:01:21 +02:00
Carlos Alexandro Becker
5473490c6e fix: podman manifest push respect --tls-verify flag
[NO TESTS NEEDED]

Signed-off-by: Carlos Alexandro Becker <caarlos0@gmail.com>
2021-07-26 08:56:30 -03:00
Valentin Rothberg
c197d19fe8 play kube: support capitalized pull policy
Pull policies in K8s yaml may be capitalized, so lower them before
parsing.

Fixes: bugzilla.redhat.com/show_bug.cgi?id=1985905
Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2021-07-26 10:28:45 +02:00
Valentin Rothberg
1b6423e9f1 refine dangling checks
By proxy by vendoring containers/common. Previously, a "dangling" image
was an untagged image; just a described in the Docker docs. The
definition of dangling has now been refined to an untagged image without
children to be compatible with Docker.

Further update a redundant image-prune test.

Fixes: #10998
Fixes: #10832
Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2021-07-26 09:28:17 +02:00
OpenShift Merge Robot
ec5c7c1f6a
Merge pull request #10895 from rhatdan/devices
Support DeviceCgroupRules to actually get added.
2021-07-24 06:09:17 -04:00
OpenShift Merge Robot
d956500743
Merge pull request #10996 from cdoern/untilLog
Implemented --until flag for Libpod's Container Logs
2021-07-24 05:56:18 -04:00
OpenShift Merge Robot
365775489f
Merge pull request #11015 from jmguzik/until-list-volume
Add until filter to volume ls filters list
2021-07-22 14:11:24 -04:00
cdoern
0f708efd8b Implemented --until flag for libpod's container logs
compat containers/logs was missing actual usage of until query param.
This led me to implement the until param for libpod's container logs as well. Added e2e tests.

Signed-off-by: cdoern <cdoern@redhat.com>
2021-07-22 10:56:56 -04:00
Jakub Guzik
2d8e837a9b Add until filter to volume ls filters list
As a conclusion of a discussion in #10861, until filter is added
by this commit to volume ls filters.

Signed-off-by: Jakub Guzik <jakubmguzik@gmail.com>
2021-07-22 00:01:07 +02:00
Daniel J Walsh
3e79296a81
Support DeviceCgroupRules to actually get added.
Fixes: https://github.com/containers/podman/issues/10302

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2021-07-21 16:10:09 -04:00
OpenShift Merge Robot
c0cb664581
Merge pull request #11008 from dpward/main
[CI:DOCS] Fix GitHub URL to Podman logo
2021-07-21 14:37:31 -04:00
OpenShift Merge Robot
e3816ddb11
Merge pull request #10992 from rhatdan/play
Fix handling of selinux labels in podman play kube
2021-07-21 12:42:32 -04:00
David Ward
ac588c751b [CI:DOCS] Fix GitHub URL to Podman logo
The Podman logo is not rendered on docs.podman.io with the current URL.

Signed-off-by: David Ward <david.ward@ll.mit.edu>
2021-07-21 11:22:01 -04:00
OpenShift Merge Robot
0ef01c881f
Merge pull request #10999 from rhatdan/quota1
Drop support for the --storage-opt container flag
2021-07-21 06:11:10 -04:00
OpenShift Merge Robot
a7dcae5abc
Merge pull request #10970 from vikas-goel/prepare-volume
Copy the content from the underlying image into the newly created volume
2021-07-21 05:52:09 -04:00
Daniel J Walsh
db2f474284
Drop podman create --storage-opt container flag
The global flag will work in either location, and this flag just breaks
users expectations, and is basically a noop.

Also fix global storage-opt so that podman-remote can use it.

[NO TESTS NEEDED] Since it would be difficult to test in ci/cd.

Fixes: https://github.com/containers/podman/issues/10264

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2021-07-20 16:36:10 -04:00
Vikas Goel
064bd9d19f Copy the content from the underlying image into the newly created volume.
Fixes: #10262

Signed-off-by: Vikas Goel <vikas.goel@gmail.com>
2021-07-20 11:39:32 -04:00
Daniel J Walsh
117850e6eb
Fix handling of selinux labels in podman play kube
Fixes: https://github.com/containers/podman/issues/10969

[NO TESTS NEEDED] We added tests for this, but they don't seem to be
running.  If I run the local system tests, they fail with the current
Podman and work with this version.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2021-07-20 08:42:07 -04:00
OpenShift Merge Robot
f4e81d0b88
Merge pull request #10979 from vrothberg/fix-10977
compat: image create: handle platform correctly
2021-07-20 05:26:35 -04:00
Valentin Rothberg
eaaca49992 compat: image create: handle platform correctly
Handle the platform parameter correctly.  The parameter was only parsed
in presence of credentials and the code was a bit complex.  Also add a
regression test.

Fixes: #10977
Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2021-07-20 09:00:44 +02:00
OpenShift Merge Robot
4e9ccb30c1
Merge pull request #10956 from flouthoc/kube-liveness-probe-systemd
Kube: Add liveness probe for containers backed by native (systemd) healthchecks instead of kubelet.
2021-07-19 14:03:57 -04:00
flouthoc
81e32b1808 Kube: Add liveness probe for containers.
Signed-off-by: flouthoc <flouthoc.git@gmail.com>
2021-07-17 18:35:22 +05:30
OpenShift Merge Robot
3ef124b03f
Merge pull request #10962 from vrothberg/fix-10655
systemd: require network*-online*.target
2021-07-16 11:13:46 -04:00
OpenShift Merge Robot
68585b0168
Merge pull request #10848 from vrothberg/update-libimage
vendor containers/common@main
2021-07-16 11:12:44 -04:00
Valentin Rothberg
6f1c7a0b6b systemd: require network*-online*.target
Require the network to be online in all (generated) systemd units to
make sure that containers and Podman run only after the network has been
fully configured.

Fixes: #10655
Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2021-07-16 14:58:08 +02:00
Valentin Rothberg
e1ac0c3033 vendor containers/common@main
The `IgnorePlatform` options has been removed from the
`LookupImageOptions` in libimage to properly support multi-arch images.

Skip one buildah-bud test which requires updated CI images.  This is
currently being done in github.com/containers/podman/pull/10829 but
we need to unblock merging common and buildah into podman.

[NO TESTS NEEDED]

Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2021-07-16 14:19:56 +02:00
OpenShift Merge Robot
ce28dc3c4c
Merge pull request #10820 from jvanz/indfra-container-name-issue-10794
--infra-name command line argument
2021-07-16 07:53:43 -04:00