731 Commits

Author SHA1 Message Date
375eb045ca Merge pull request #19661 from dfr/freebsd-var-run
libpod: use /var/run instead of /run on FreeBSD
2023-08-21 12:24:50 -02:30
67756ac604 use container restart policy if user specifies one
Fixes: https://github.com/containers/podman/issues/19671

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-08-18 06:19:49 -04:00
27b41f0877 libpod: use /var/run instead of /run on FreeBSD
This changes /run to /var/run for .containerenv and secrets in FreeBSD
containers for consistency with FreeBSD path conventions. Running Linux
containers on FreeBSD hosts continue to use /run for compatibility.

[NO NEW TESTS NEEDED]

Signed-off-by: Doug Rabson <dfr@rabson.org>
2023-08-17 14:04:53 +01:00
53dd37cc43 pkg/specgen: add support for read-only root on FreeBSD
This just sets the flag in the runtime spec - the actual implementation
is in the OCI runtime.

[NO NEW TESTS NEEDED]

Signed-off-by: Doug Rabson <dfr@rabson.org>
2023-08-16 13:41:04 +01:00
2de22ebf0d Ensure volumes-from mounts override image volumes
We do not allow volumes and mounts to be placed at the same
location in the container, with create-time checks to ensure this
does not happen. User-added conflicts cannot be resolved (if the
user adds two separate mounts to, say, /myapp, we can't resolve
that contradiction and error), but for many other volume sources,
we can solve the contradiction ourselves via a priority
hierarchy. Image volumes come first, and are overridden by the
`--volumes-from` flag, which are overridden by user-added mounts,
etc, etc. The problem here is that we were not properly handling
volumes-from overriding image volumes. An inherited volume from
--volumes-from would supercede an image volume, but an inherited
mount would not. Solution is fortunately simple - just clear out
the map entry for the other type when adding volumes-from
volumes.

Makes me wish for Rust sum types - conflict resolution would be a
lot simpler if we could use a sum type for volumes and bind
mounts and thus have a single map instead of two maps, one for
each type.

Fixes #19529

Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2023-08-07 15:04:33 -04:00
0fb5b3acf0 Merge pull request #19483 from dfr/freebsd-devices
pkg/specgen: Add device support for FreeBSD
2023-08-04 14:35:33 +02:00
d50054f1e4 pkg/specgen: Add device support for FreeBSD
On FreeBSD, each container has its own devfs instance with a ruleset
that controls what the container can see. To expose devices to a
container we add rules to its devfs to make the requested devices
visible. For privileged containers, we use 'ruleset=0' which makes
everything visible.

This shares the ParseDevice function with Linux so it moves to
config_common.go from config_linux.go.

Signed-off-by: Doug Rabson <dfr@rabson.org>
2023-08-04 10:11:14 +01:00
53d44a65e5 Check tty flag to set default terminal in Env
First, all the defaults for TERM=xterm were removed from c/common, then accordingly the same will be added if encountered a set tty flag.

Signed-off-by: Chetan Giradkar <cgiradka@redhat.com>
2023-08-03 12:29:21 +01:00
22a8b68866 make /dev & /dev/shm read/only when --read-only --read-only-tmpfs=false
The intention of --read-only-tmpfs=fals when in --read-only mode was to
not allow any processes inside of the container to write content
anywhere, unless the caller also specified a volume or a tmpfs. Having
/dev and /dev/shm writable breaks this assumption.

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

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-07-30 06:09:30 -04:00
9706147089 Merge pull request #19353 from vrothberg/fix-6160
add "healthy" sdnotify policy
2023-07-26 09:18:57 +02:00
0cfd12786f add "healthy" sdnotify policy
Add a new "healthy" sdnotify policy that instructs Podman to send the
READY message once the container has turned healthy.

Fixes: #6160
Signed-off-by: Valentin Rothberg <vrothberg@redhat.com>
2023-07-25 11:17:44 +02:00
eee2817dec pkg/specgen: Don't crash for device spec with...
...empty destination path

This fixes a server-side crash for command lines like:

  # podman run -ti --rm --device /dev/mem::rw alpine sh

Fixes #19335.

Signed-off-by: Doug Rabson <dfr@rabson.org>
2023-07-24 17:22:36 +01:00
d7e25e14aa Add missing reserved annotation support to play
Adds any required "wiring" to ensure the reserved annotations are supported by
`podman kube play`.

Addtionally fixes a bug where, when inspected, containers created using
the `--publish-all` flag had a field `.HostConfig.PublishAllPorts` whose
value was only evaluated as `false`.

Signed-off-by: Jake Correnti <jakecorrenti+github@proton.me>
2023-07-17 14:06:23 -04:00
d1ddd03a64 Merge pull request #19241 from rhatdan/bind
Use constants for mount types
2023-07-14 16:05:30 +02:00
f256f4f954 Use constants for mount types
Inspired by https://github.com/containers/podman/pull/19238

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-07-14 07:17:21 -04:00
960a764c59 Merge pull request #19173 from hedayat/support-port-name-in-probes
Better support for Kubernetes health probes
2023-07-14 13:15:14 +02:00
a8d8c9497a Add more tests for liveness probes with default hostname & named ports
Signed-off-by: Hedayat Vatankhah <hedayat.fwd@gmail.com>
2023-07-13 18:23:39 +03:30
e43127e0b4 pkg/specgen: fix support for --rootfs on FreeBSD
When using 'podman run --rootfs ...', the image passed to SpecGenToOCI
may be nil - in this case, fall back to "freebsd" for the container OS.

[NO NEW TESTS NEEDED]

Signed-off-by: Doug Rabson <dfr@rabson.org>
2023-07-13 10:51:58 +01:00
441af003ac fix(deps): update container-device-interface to v0.6.0
[NO NEW TESTS NEEDED]

Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Signed-off-by: Valentin Rothberg <vrothberg@redhat.com>
2023-07-12 11:37:59 +02:00
600de05e3b Fix TCP probes when the optional host field is not given
Signed-off-by: Hedayat Vatankhah <hedayat.fwd@gmail.com>
2023-07-11 01:00:57 +03:30
ac3a115c33 Add support for using port names in Kubernetes health probes
Closes #18645

Signed-off-by: Hedayat Vatankhah <hedayat.fwd@gmail.com>
2023-07-11 01:00:57 +03:30
644f7cd9be pkg/specgen: properly identify image OS on FreeBSD
When working on Linux emulation on FreeBSD, I assumed that
SpecGenerator.ImageOS was always populated from the image's OS value but
in fact, this value comes from the CLI --os flag if set, otherwise "".
This broke running FreeBSD native containers unless --os=freebsd was
also set. Fix the problem by getting the value from the image itself.

This is a strong incentive for me to complete a stalled project to enable
podman system tests on FreeBSD.

[NO NEW TESTS NEEDED]

Signed-off-by: Doug Rabson <dfr@rabson.org>
2023-07-04 13:53:42 +01:00
92db6a871a Merge pull request #19032 from Luap99/def-rootless-network
rootless: use default_rootless_network_cmd config
2023-06-29 15:27:31 +02:00
f64a1a1cc8 rootless: use default_rootless_network_cmd config
Make sure we use the config field to know if we should use pasta or
slirp4netns as default.

While at it fix broken code which sets the default at two different
places, also do not set in Validate() as this should not modify the
specgen IMO, so set it directly before that.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2023-06-29 09:46:25 +02:00
865d77e942 pkg/specgen: add support for 'podman run --init' on FreeBSD
This adds define.BindOptions to declare the mount options for bind-like
mounts (nullfs on FreeBSD). Note: this mirrors identical declarations in
buildah and it may be preferable to use buildah's copies throughout
podman.

[NO NEW TESTS NEEDED]

Signed-off-by: Doug Rabson <dfr@rabson.org>
2023-06-28 14:43:50 +01:00
609c47ae6c pkg/specgen: Add support for Linux emulation on FreeBSD
This is limited to images that don't depend on complex cgroup or capability
setups but does cover enough functionality to be useful.

[NO NEW TESTS NEEDED]

Signed-off-by: Doug Rabson <dfr@rabson.org>
2023-06-27 17:36:28 +01:00
68f71f49d6 Merge pull request #19002 from giuseppe/skip-devices-userns
specgen: raise error with --device-cgroup-rule in a userns
2023-06-26 22:34:54 +02:00
227c07aebc specgen: honor --device-cgroup-rule with a new user namespace
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2023-06-26 17:36:55 +02:00
0220f33384 specgen, rootless: raise error with --device-cgroup-rule
we were silently ignoring --device-cgroup-rule in rootless mode.  Make
sure an error is returned if the user tries to use it.

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

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2023-06-26 17:36:55 +02:00
bd69b151fa run,create: modify --env-merge behavior for non-existent vars
Signed-off-by: danishprakash <danish.prakash@suse.com>
2023-06-22 15:42:55 +05:30
3cae574ab2 Merge pull request #18507 from mheon/fix_rm_depends
Fix `podman rm -fa` with dependencies
2023-06-12 13:27:34 -04:00
d734fcbff2 style(specgen): omit nil check
len(nil) == 0

[NO NEW TESTS NEEDED]

Signed-off-by: xtex <xtexchooser@duck.com>
2023-06-11 10:00:27 +08:00
53834ef0dc fix(specgen): index out of range when unmask=[]
Fixes #18848

Signed-off-by: xtexChooser <xtexchooser@duck.com>
2023-06-11 08:58:35 +08:00
398e48a24a Change Inherit to use a pointer to a container
This fixes a lint issue, but I'm keeping it in its own commit so
it can be reverted independently if necessary; I don't know what
side effects this may have. I don't *think* there are any
issues, but I'm not sure why it wasn't a pointer in the first
place, so there may have been a reason.

Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2023-06-07 14:09:07 -04:00
8cb5d39d43 Pods now return what containers were removed with them
This probably should have been in the API since the beginning,
but it's not too late to start now.

The extra information is returned (both via the REST API, and to
the CLI handler for `podman rm`) but is not yet printed - it
feels like adding it to the output could be a breaking change?

Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2023-06-01 16:24:59 -04:00
f097728891 set max ulimits for rootless on each start
Signed-off-by: Jan Hendrik Farr <github@jfarr.cc>
2023-05-31 09:20:31 +00:00
fcc3f47c7a Merge pull request #18595 from containers/renovate/github.com-docker-docker-24.x
fix(deps): update module github.com/docker/docker to v24
2023-05-22 11:54:12 -04:00
6b48e9962c fix(deps): update module github.com/docker/docker to v24
Also reflect removed/deprecated fields in the compat API.

[NO NEW TESTS NEEDED]

Signed-off-by: Renovate Bot <bot@renovateapp.com>
Signed-off-by: Valentin Rothberg <vrothberg@redhat.com>
2023-05-22 15:32:12 +02:00
685c736185 source code comments and docs: fix typos, language, Markdown layout
- fix a/an before noun
- fix loose -> lose
- fix "the the"
- fix lets -> let's
- fix Markdown layout
- fix a few typos
- remove unnecessary text in troubleshooting.md

Signed-off-by: Erik Sjölund <erik.sjolund@gmail.com>
2023-05-22 07:52:16 +02:00
d989c63751 Merge pull request #18542 from mheon/remove_image_annotations
Do not include image annotations when building spec
2023-05-13 06:04:35 -04:00
2c0f404826 Do not include image annotations when building spec
These annotations can have security implications - crun, for
example, allows rootless containers to preserve the user's groups
through an annotation. We absolutely should not include
annotations from an untrusted image off the internet by default.

We may consider whitelisting some annotations (e.g. the legacy
WASM annotations), but given that there is now a more explicit
way of specifying an image uses the WASM runtime in the OCI image
spec, I'm just tearing this out entirely for now.

Signed-off-by: Matt Heon <mheon@redhat.com>
2023-05-11 23:48:23 -04:00
53220717eb fix: initContainer restart policy overridden by pod
Restart policy of initContainers should not be overriden by pod and
the restart policy should always be "no".

See #16343

Signed-off-by: Tony Duan <tony.duan@gapp.nthu.edu.tw>
2023-05-05 15:40:56 +08:00
edbeee5238 Add --restart flag to pod create
Add --restart flag to pod create to allow users to set the
restart policy for the pod, which applies to all the containers
in the pod. This reuses the restart policy already there for
containers and has the same restart policy options.
Add "never" to the restart policy options to match k8s syntax.
It is a synonym for "no" and does the exact same thing where the
containers are not restarted once exited.
Only the containers that have exited will be restarted based on the
restart policy, running containers will not be restarted when an exited
container is restarted in the same pod (same as is done in k8s).

Signed-off-by: Urvashi Mohnani <umohnani@redhat.com>
2023-05-02 10:29:58 -04:00
d222a392cd rootless: support joining contianers that use host ns
The problem right now is that --ns contianer: syntax causes use to add
the namespace path to the spec which means the runtime will try to call
setns on that. This works fine for private namespaces but when the host
namspace is used by the container a rootless user is not allowed to
join that namespace so the setns call will return with permission
denied.

The fix is to effectively switch the container to the `host` mode
instead of `container:` when the mention container used the host ns. I
tried to fix this deep into the libpod call when we assign these
namespaces but the problem is that this does not work correctly because
these namespace require much more setup. Mainly different kind of mount
points to work correctly.

We already have similar work-arounds in place for pods because they also
need this.

For some reason this does not work with the user namespace, I don't know
why and I don't think it is really needed so I left this out just to get
at least the rest working. The original issue only reported this for the
network namespace.

Fixes #18027

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2023-04-25 15:21:31 +02:00
4f5f89cf88 Do not display the resource limits warning message
If resource limits is not set, do not display the following warning message:
`Resource limits are not supported and ignored on cgroups V1 rootless systems`

Ref: #17582

Signed-off-by: Toshiki Sonoda <sonoda.toshiki@fujitsu.com>
2023-04-11 19:30:59 +09:00
35165df37b chore: replace github.com/ghodss/yaml with sigs.k8s.io/yaml
At the time of making this commit, the package `github.com/ghodss/yaml`
is no longer actively maintained.

`sigs.k8s.io/yaml` is a permanent fork of `ghodss/yaml` and is actively
maintained by Kubernetes SIG.

Signed-off-by: Eng Zer Jun <engzerjun@gmail.com>
2023-04-06 21:11:17 +08:00
d7051d745e Add support for cgroup_config from containers.conf
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-04-01 11:12:13 -04:00
4d56292e7a libpod: mount safely subpaths
add a function to securely mount a subpath inside a volume.  We cannot
trust that the subpath is safe since it is beneath a volume that could
be controlled by a separate container.  To avoid TOCTOU races between
when we check the subpath and when the OCI runtime mounts it, we open
the subpath, validate it, bind mount to a temporary directory and use
it instead of the original path.

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2023-03-31 19:48:03 +02:00
8b6a7c1826 Use secret.items to create volume mounts if present
If the kube yaml volumes has secret.items set, then use
the values from that to set up the paths inside the container
similar to what we do for configMap.
Add tests for this as well.

Signed-off-by: Urvashi Mohnani <umohnani@redhat.com>
2023-03-31 11:49:47 -04:00
46d1650403 Add support for oom_score_adj value from containers.conf
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-03-17 12:04:37 -04:00