Commit graph

318 commits

Author SHA1 Message Date
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
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
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
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
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
68585b0168
Merge pull request #10848 from vrothberg/update-libimage
vendor containers/common@main
2021-07-16 11:12:44 -04: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
José Guilherme Vanz
af40dfc2bf
--infra-name command line argument
Adds the new --infra-name command line argument allowing users to define
the name of the infra container

Issue #10794

Signed-off-by: José Guilherme Vanz <jvanz@jvanz.com>
2021-07-15 21:27:51 -03:00
cdoern
f7321681d0 podman pod create --pid flag
added support for --pid flag. User can specify ns:file, pod, private, or host.
container returns an error since you cannot point the ns of the pods infra container
to a container outside of the pod.

Signed-off-by: cdoern <cdoern@redhat.com>
2021-07-15 10:34:09 -04:00
Daniel J Walsh
092902b455
Handle advanced --network options in podman play kube
Since Podman create/run can support this, so should play.

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

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2021-06-30 13:32:27 -04:00
OpenShift Merge Robot
da33fc45b6
Merge pull request #10583 from rhatdan/log
Support log_tag defaults from containers.conf
2021-06-24 05:47:10 -04:00
OpenShift Merge Robot
3f3feaa015
Merge pull request #10716 from cdoern/podFlags
Podman Pod Create --cpus and --cpuset-cpus flags
2021-06-23 15:51:29 -04:00
cdoern
bbd085ad1e Podman Pod Create --cpus and --cpuset-cpus flags
Added logic and handling for two new Podman pod create Flags.

--cpus specifies the total number of cores on which the pod can execute, this
is a combination of the period and quota for the CPU.

 --cpuset-cpus is a string value which determines of these available cores,
how many we will truly execute on.

Signed-off-by: cdoern <cbdoer23@g.holycross.edu>
2021-06-23 13:47:57 -04:00
Daniel J Walsh
f2dff41dbc
Support log_tag defaults from containers.conf
Fixes: https://github.com/containers/podman/issues/10204

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2021-06-23 12:54:25 -04:00
Valentin Rothberg
5fc622f945 create: support images with invalid platform
Much to my regret, there is a number of images in the wild with invalid
platforms breaking the platform checks in libimage that want to make
sure that a local image is matching the expected platform.

Imagine a `podman run --arch=arm64 fedora` with a local amd64 fedora
image.  We really shouldn't use the local one in this case and pull down
the arm64 one.

The strict platform checks in libimage in combination with invalid
platforms in images surfaced in Podman being able to pull an image but
failing to look it up in subsequent presence checks.  A `podman run`
would hence pull such an image but fail to create the container.

Support images with invalid platforms by vendoring the latest HEAD from
containers/common.  Also remove the partially implemented pull-policy
logic from Podman and let libimage handle that entirely.  However,
whenever --arch, --os or --platform are specified, the pull policy will
be forced to "newer".  This way, we pessimistically assume that the
local image has an invalid platform and we reach out to the registry.
If there's a newer image (i.e., one with a different digest), we'll pull
it down.

Please note that most of the logic has either already been implemented
in libimage or been moved down which allows for removing some clutter
from Podman.

[NO TESTS NEEDED] since c/common has new tests.  Podman can rely on the
existing tests.

Fixes: #10648
Fixes: #10682
Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2021-06-23 15:42:13 +02:00
Adrian Reber
1ac9198d75
Allow changing of port forward rules on restore
Restored containers, until now, had the same port mappings as the
original started container. This commit adds the parameter '--publish'
to 'podman container restore' with the same semantic as during
create/run.

With this change it is possible to create a copy from a container with a
'--publish' rule and replace the original '--publish' setting with a new
one.

 # podman run -p 2345:8080 container
 # podman container checkpoint -l --export=dump.tar
 # podman container restore -p 5432:8080 --import=dump.tar

The restored container will now listen on localhost:5432 instead of
localhost:2345 as the original created container.

Signed-off-by: Adrian Reber <areber@redhat.com>
2021-06-04 13:29:02 +02:00
OpenShift Merge Robot
3d8f37120d
Merge pull request #10383 from rhatdan/kube
Handle image user and exposed ports in podman play kube
2021-05-27 21:18:05 +02:00
Daniel J Walsh
de293c9802
Handle image user and exposed ports in podman play kube
Currently if a user runs an image with a user specified or
exposed ports with podman play kube, the fields are ignored.

Fixed: https://github.com/containers/podman/issues/9609

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2021-05-26 16:39:04 -04:00
Matthew Heon
533d88b656 Add the option of Rootless CNI networking by default
When the containers.conf field "NetNS" is set to "Bridge" and the
"RootlessNetworking" field is set to "cni", Podman will now
handle rootless in the same way it does root - all containers
will be joined to a default CNI network, instead of exclusively
using slirp4netns.

If no CNI default network config is present for the user, one
will be auto-generated (this also works for root, but it won't be
nearly as common there since the package should already ship a
config).

I eventually hope to remove the "NetNS=Bridge" bit from
containers.conf, but let's get something in for Brent to work
with.

Signed-off-by: Matthew Heon <mheon@redhat.com>
2021-05-26 15:03:30 -04:00
OpenShift Merge Robot
3aa4746fb6
Merge pull request #10339 from rhatdan/selinux
Support automatic labeling of kube volumes
2021-05-17 16:27:20 -04:00
Ashley Cui
cf30f160ad Support uid,gid,mode options for secrets
Support UID, GID, Mode options for mount type secrets. Also, change
default secret permissions to 444 so all users can read secret.

Signed-off-by: Ashley Cui <acui@redhat.com>
2021-05-17 14:35:55 -04:00
Daniel J Walsh
4cc19f9e0f
Support automatic labeling of kube volumes
Allow users to specify options on the volume mount path.
This will trigger relabels of user specifies :z,:Z
Also will handle User Relabels if the user specifies :U

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

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2021-05-16 07:09:22 -04:00
flouthoc
14a1a4546c Kube like pods should share ipc,net,uts by default
Signed-off-by: flouthoc <flouthoc.git@gmail.com>
2021-05-10 11:29:11 +05:30
OpenShift Merge Robot
0c411278ce
Merge pull request #10202 from EduardoVega/9763-kube-auto-update
Add support to preserve auto-update labels in play / generate kube
2021-05-07 05:36:26 -04:00
OpenShift Merge Robot
141ba94f97
Merge pull request #10221 from ashley-cui/envsec
Add support for environment variable secrets
2021-05-07 05:34:26 -04:00
Eduardo Vega
72f4f389f0 Adds support to preserve auto update labels in generate and play kube
In the case of generate kube the auto-update labels will be converted into kube annotations and for play kube they will be converted back to labels since that's what podman understands

Signed-off-by: Eduardo Vega <edvegavalerio@gmail.com>
2021-05-06 21:21:43 -06:00
Ashley Cui
2634cb234f Add support for environment variable secrets
Env var secrets are env vars that are set inside the container but not
commited to and image. Also support reading from env var when creating a
secret.

Signed-off-by: Ashley Cui <acui@redhat.com>
2021-05-06 14:00:57 -04:00
OpenShift Merge Robot
404bc2684e
Merge pull request #10185 from rhatdan/volume
Add filepath glob support to --security-opt unmask
2021-05-05 15:38:11 -04:00
OpenShift Merge Robot
dbc4a5d85b
Merge pull request #10220 from giuseppe/rm-volatile
podman: set volatile storage flag for --rm containers
2021-05-05 14:28:10 -04:00
Giuseppe Scrivano
68fe1950fe
podman: set volatile storage flag for --rm containers
volatile containers are a storage optimization that disables *sync()
syscalls for the container rootfs.

If a container is created with --rm, then automatically set the
volatile storage flag as anyway the container won't persist after a
reboot or machine crash.

[NO TESTS NEEDED]

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2021-05-05 17:58:39 +02:00
Valentin Rothberg
0f7d54b026 migrate Podman to containers/common/libimage
Migrate the Podman code base over to `common/libimage` which replaces
`libpod/image` and a lot of glue code entirely.

Note that I tried to leave bread crumbs for changed tests.

Miscellaneous changes:

 * Some errors yield different messages which required to alter some
   tests.

 * I fixed some pre-existing issues in the code.  Others were marked as
   `//TODO`s to prevent the PR from exploding.

 * The `NamesHistory` of an image is returned as is from the storage.
   Previously, we did some filtering which I think is undesirable.
   Instead we should return the data as stored in the storage.

 * Touched handlers use the ABI interfaces where possible.

 * Local image resolution: previously Podman would match "foo" on
   "myfoo".  This behaviour has been changed and Podman will now
   only match on repository boundaries such that "foo" would match
   "my/foo" but not "myfoo".  I consider the old behaviour to be a
   bug, at the very least an exotic corner case.

 * Futhermore, "foo:none" does *not* resolve to a local image "foo"
   without tag anymore.  It's a hill I am (almost) willing to die on.

 * `image prune` prints the IDs of pruned images.  Previously, in some
   cases, the names were printed instead.  The API clearly states ID,
   so we should stick to it.

 * Compat endpoint image removal with _force_ deletes the entire not
   only the specified tag.

Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2021-05-05 11:30:12 +02:00
Daniel J Walsh
4fd1965ab4
Add filepath glob support to --security-opt unmask
Want to allow users to specify --security-opt unmask=/proc/*.
This allows us to run podman within podman more securely, then
specifing umask=all, also gives the user more flexibilty.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2021-05-04 14:40:43 -04:00
OpenShift Merge Robot
f613a2a8d5
Merge pull request #10119 from rhatdan/timeout
Add podman run --timeout option
2021-04-27 16:47:32 -04:00
OpenShift Merge Robot
fef3ea80aa
Merge pull request #10081 from sjug/cdi_device_lib
Add support for CDI device configuration
2021-04-26 09:31:06 -04:00
Daniel J Walsh
3538815c5b
Add podman run --timeout option
This option allows users to specify the maximum amount of time to run
before conmon sends the kill signal to the container.

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

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2021-04-23 11:18:05 -04:00
Daniel J Walsh
9c8277247d
Fixes from make codespell
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2021-04-21 13:16:33 -04:00
Sebastian Jug
db7cff8c86
Add support for CDI device configuration
- Persist CDIDevices in container config
- Add e2e test
- Log HasDevice error and add additional condition for safety

Signed-off-by: Sebastian Jug <seb@stianj.ug>
2021-04-20 09:18:52 -04:00
OpenShift Merge Robot
a94360a3f7
Merge pull request #10041 from chenk008/add_pidfile_flag
Add flag "--pidfile" for podman create/run
2021-04-19 16:22:05 -04:00
Eduardo Vega
18d462c41b Ensure mount destination is clean, no trailing slash
Signed-off-by: Eduardo Vega <edvegavalerio@gmail.com>
2021-04-18 09:57:04 -06:00
wuhua.ck
8fbe06b8cb add flag "--pidfile" for podman create/run
Signed-off-by: chenkang <kongchen28@gmail.com>
2021-04-16 13:43:14 +08:00
Paul Holzinger
1685c2dc36 podman play kube apply correct log driver
The --log-driver flag was silently ignored by podman play kube. This
regression got introduced during the play kube rework.
Unfortunately the test for this was skipped for no good reason.

Fixes #10015

Signed-off-by: Paul Holzinger <paul.holzinger@web.de>
2021-04-15 18:24:22 +02:00
OpenShift Merge Robot
d83f49ef6b
Merge pull request #9754 from mheon/add_dep
Add --requires flag to podman run/create
2021-04-06 16:16:49 -04:00
Matthew Heon
6acd265306 Add --requires flag to podman run/create
Podman has, for a long time, had an internal concept of
dependency management, used mainly to ensure that pod infra
containers are started before any other container in the pod. We
also have the ability to recursively start these dependencies,
which we use to ensure that `podman start` on a container in a
pod will not fail because the infra container is stopped. We have
not, however, exposed these via the command line until now.

Add a `--requires` flag to `podman run` and `podman create` to
allow users to manually specify dependency containers. These
containers must be running before the container will start. Also,
make recursive starting with `podman start` default so we can
start these containers and their dependencies easily.

Fixes #9250

Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2021-04-06 14:01:31 -04:00
Matthew Heon
541252afa7 Ensure that --userns=keep-id sets user in config
One of the side-effects of the `--userns=keep-id` command is
switching the default user of the container to the UID of the
user running Podman (though this can still be overridden by the
`--user` flag). However, it did this by setting the UID and GID
in the OCI spec, and not by informing Libpod of its intention to
switch users via the `WithUser()` option. Because of this, a lot
of the code that should have triggered when the container ran
with a non-root user was not triggering. In the case of the issue
that this fixed, the code to remove capabilities from non-root
users was not triggering. Adjust the keep-id code to properly
inform Libpod of our intention to use a non-root user to fix
this.

Also, fix an annoying race around short-running exec sessions
where Podman would always print a warning that the exec session
had already stopped.

Fixes #9919

Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2021-04-06 09:18:46 -04:00
Paul Holzinger
0743ead712 Fix pod infra container cni network setup
For rootless users the infra container used the slirp4netns net mode
even when bridge was requested. We can support bridge networking for
rootless users so we have allow this. The default is not changed.

Signed-off-by: Paul Holzinger <paul.holzinger@web.de>
2021-04-01 17:27:03 +02:00
Paul Holzinger
00b2ec5e6f Add rootless support for cni and --uidmap
This is supported with the new rootless cni logic.

Signed-off-by: Paul Holzinger <paul.holzinger@web.de>
2021-04-01 17:27:03 +02:00
OpenShift Merge Robot
26b0ebd22f
Merge pull request #9516 from rhatdan/shrink
[NO TESTS NEEDED] Shrink the size of podman bindings
2021-03-29 17:14:26 +00:00
OpenShift Merge Robot
b7bb8a1fb9
Merge pull request #9842 from AlbanBedel/play-kube-env-from-secrets
Add support for env from secrets in play kube
2021-03-29 17:10:25 +00:00