Commit Graph

5356 Commits

Author SHA1 Message Date
Daniel J Walsh
5b7dce8a3d Add support for confined users
The original SELinux support in Docker and Podman does not follow the
default SELinux rules for how label transitions are supposed to be
handled. Containers always switch their user and role to
system_u:system_r, rather then maintain the collers user and role.
For example
unconfined_u:unconfined_r:container_t:s0:c1,c2

Advanced SELinux administrators want to confine users but still allow
them to create containers from their role, but not allow them to launch
a privileged container like spc_t.

This means if a user running as
container_user_u:container_user_r:container_user_t:s0

Ran a container they would get

container_user_u:container_user_r:container_t:s0:c1,c2

If they run a privileged container they would run it with:

container_user_u:container_user_r:container_user_t:s0

If they want to force the label they would get an error

podman run --security-opt label=type:spc_t ...

Should fail. Because the container_user_r can not run with the spc_t.

SELinux rules would also prevent the user from forcing system_u user and
the sytem_r role.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
Signed-off-by: Chris Evich <cevich@redhat.com>
2023-08-01 11:25:00 -04:00
OpenShift Merge Robot
57aa4850fc Merge pull request #19434 from rhatdan/userns
Set default userns from containers.conf file
2023-08-01 12:00:57 +02:00
OpenShift Merge Robot
a9948dafc9 Merge pull request #19455 from jakecorrenti/qemu-machine-funcs-to-methods
Convert new QEMU functions to methods with documentation
2023-08-01 09:43:17 +02:00
OpenShift Merge Robot
0ecda592c9 Merge pull request #19350 from jakecorrenti/breakup-applehv-machine-funcs
Breakup applehv machine funcs
2023-08-01 09:22:20 +02:00
Jake Correnti
d6847b19c8 Convert QEMU functions to methods with documentation
Converts new functions added in #19311 to methods and adds
documentation.

[NO NEW TESTS NEEDED]

Signed-off-by: Jake Correnti <jakecorrenti+github@proton.me>
2023-07-31 15:55:47 -04:00
OpenShift Merge Robot
0d21f8986b Merge pull request #19419 from Romain-Geissler-1A/remove-EOF-error-empty-context-with-podman-remote
Don't log EOF error when using podman --remote build with an empty context directory.
2023-07-31 21:43:36 +02:00
OpenShift Merge Robot
ad9015f478 Merge pull request #19096 from BlackHole1/support-new-line
feat(env): support multiline in env-file
2023-07-31 21:40:13 +02:00
OpenShift Merge Robot
3ddde2023a Merge pull request #19413 from vrothberg/fix-19368
API: kill: return 409 on invalid state
2023-07-31 21:37:21 +02:00
OpenShift Merge Robot
6b404759f2 Merge pull request #19422 from rhatdan/read-only
make /dev & /dev/shm read/only when --read-only --read-only-tmpfs=false
2023-07-31 20:24:16 +02:00
Daniel J Walsh
39341f283c Set default userns from containers.conf file
Fixed: https://github.com/containers/podman/issues/19432

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-07-31 14:21:06 -04:00
OpenShift Merge Robot
9e91873c26 Merge pull request #19435 from rhatdan/codespell
Codespell fixups
2023-07-31 17:50:00 +02:00
Jake Correnti
ff7d287fc0 Breakup AppleHV machine funcs
The functions for AppleHV's VM interface implementation (machine.go) had
quite large functions. Pulls out some code that could be moved to its
own function for easier readability and maintainability.

[NO NEW TESTS NEEDED]

Signed-off-by: Jake Correnti <jakecorrenti+github@proton.me>
2023-07-31 10:41:18 -04:00
OpenShift Merge Robot
330e51960e Merge pull request #19364 from jakecorrenti/breakup-hyperv-machine-funcs
Breakup hyperv machine funcs
2023-07-31 16:25:03 +02:00
Daniel J Walsh
64873e322c Codespell fixups
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-07-31 09:38:46 -04:00
Romain Geissler
4ee31dc37f Don't log EOF error when using podman --remote build with an empty context directory.
Closes #15921.

Signed-off-by: Romain Geissler <romain.geissler@amadeus.com>
2023-07-31 12:00:01 +00:00
Valentin Rothberg
f2794f9a82 API: kill: return 409 on invalid state
If the container isn't running, make sure to return 409 as specified in
the Docker API [1] and the Podman reference.

[1] https://docs.docker.com/engine/api/v1.43/#tag/Container/operation/ContainerKill

Fixes: #19368
Signed-off-by: Valentin Rothberg <vrothberg@redhat.com>
2023-07-31 11:17:58 +02:00
Black-Hole1
170a78631b feat(env): support multiline in env-file
Close: https://github.com/containers/podman/issues/18724

Signed-off-by: Black-Hole1 <bh@bugs.cc>
2023-07-31 09:59:45 +08:00
Jake Correnti
19deb6a346 Adds documentation to new functions that were added
Signed-off-by: Jake Correnti <jakecorrenti+github@proton.me>
2023-07-30 19:58:03 -04:00
Jake Correnti
481143e584 startHostNetworking: get DevNull files
[NO NEW TESTS NEEDED]

Signed-off-by: Jake Correnti <jakecorrenti+github@proton.me>
2023-07-30 18:39:45 -04:00
Jake Correnti
13da82466a Remove: remove network and ready sockets from registry
Signed-off-by: Jake Correnti <jakecorrenti+github@proton.me>
2023-07-30 18:39:41 -04:00
Jake Correnti
d896431b28 Remove: remove files and connections
Signed-off-by: Jake Correnti <jakecorrenti+github@proton.me>
2023-07-30 18:31:30 -04:00
Jake Correnti
32265e1f64 Remove: collect files to destroy
Signed-off-by: Jake Correnti <jakecorrenti+github@proton.me>
2023-07-30 18:24:13 -04:00
Jake Correnti
381b103dd1 Init: read and split ign file
Signed-off-by: Jake Correnti <jakecorrenti+github@proton.me>
2023-07-30 18:22:49 -04:00
Jake Correnti
aa6827a67a Init: write ign config
Signed-off-by: Jake Correnti <jakecorrenti+github@proton.me>
2023-07-30 18:21:48 -04:00
Jake Correnti
cc30639d7b Init: add network and registry socks to registry
Signed-off-by: Jake Correnti <jakecorrenti+github@proton.me>
2023-07-30 18:19:34 -04:00
Jake Correnti
78d3b549cd Init: add SSH conns to podman sock
Signed-off-by: Jake Correnti <jakecorrenti+github@proton.me>
2023-07-30 18:16:32 -04:00
Daniel J Walsh
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
Jake Correnti
837bc25681 Fix HyperV loadMachineFromJSON function name
Re-names HyperV function that was copied from the applehv
implementation and not changed. Makes the function a method of
`HyperVMachine`.

[NO NEW TESTS NEEDED]

Signed-off-by: Jake Correnti <jakecorrenti+github@proton.me>
2023-07-28 11:14:13 -04:00
Valentin Rothberg
416a471eed machine: QEMU: lock VM on stop/rm/set
Lock the machine when stopping, removing or changing its attributes to
make sure write accesses are serialized which should prevent a number of
issues and inconsistencies reported.

[NO NEW TESTS NEEDED]

Signed-off-by: Valentin Rothberg <vrothberg@redhat.com>
2023-07-28 13:57:59 +02:00
OpenShift Merge Robot
bd0fe69cad Merge pull request #19385 from jakecorrenti/breakup-qemu-config-funcs
Breakup qemu config funcs
2023-07-28 08:37:42 +02:00
Daniel J Walsh
538ac5dc8f Merge pull request #19309 from rhatdan/volumes
Add glob support to podman run/create --mount
2023-07-27 15:22:12 -04:00
Jake Correnti
3523b9b052 Break QEMU config.go code into its own functions
Breaks some of the code in QEMU's `VirtProvider` implementation located
at `pkg/machine/qemu/config.go` into its own functions. Aids in
improving the readability of the code.

[NO NEW TESTS NEEDED]

Signed-off-by: Jake Correnti <jakecorrenti+github@proton.me>
2023-07-27 09:53:21 -04:00
Valentin Rothberg
c341a0ffe0 machine: QEMU: lock VM on start
Lock the VM on start.  If the machine is in the "starting" state we know
that a previous start has failed and guide the user into resolving the
issue.

Concurrent starts will busy wait and return the expected "already
running" error.

NOTE: this change is only looking at the start issue (#18662).  Other
commands such as stop and update should also lock and will be updated
in a future change.  I expect the underlying issue to apply to all
machine providers, not only QEMU.  It's desirable to aim for extending
the machine interface to also allow to `Lock()` and `Unlock()`.  After
acquiring the lock, the VM should automatically be reloaded/updated.

[NO NEW TESTS NEEDED]

Fixes: #18662
Signed-off-by: Valentin Rothberg <vrothberg@redhat.com>
2023-07-27 14:16:02 +02:00
Daniel J Walsh
0fefcf8a4f Add glob support to podman run/create --mount
HPC Community asked for this support specifically for using GPUs
within containers. Nvidia requires the correct shared library to
to be present in the directory that matches the device mounted
into the container. These libraries have random suffixes based
on versions of the installed libraries on the host.

podman run --mount type=glob:src=/usr/lib64/nvidia\*:ro=true. This helps
quadlets be more portable for this use case.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-07-27 06:32:54 -04:00
Daniel J Walsh
db0ba9b250 Add support for mounts listed in containers.conf
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-07-26 17:13:41 -04:00
OpenShift Merge Robot
63a0d013ae Merge pull request #19254 from boaz0/closes_19252
Fix: use --all in podman stats to get all containers stats
2023-07-26 16:27:14 +02:00
OpenShift Merge Robot
9706147089 Merge pull request #19353 from vrothberg/fix-6160
add "healthy" sdnotify policy
2023-07-26 09:18:57 +02:00
Boaz Shuster
de122bb44e Fix: use --all in podman stats to get all containers stats
* Set query all when options.All is true
* Update API to support the "all" option in stats

Signed-off-by: Boaz Shuster <boaz.shuster.github@gmail.com>
2023-07-26 09:41:14 +03:00
OpenShift Merge Robot
42e44795b4 Merge pull request #19339 from dfr/validate-device
pkg/specgen: Don't crash for device spec with empty destination path
2023-07-25 11:45:13 +02:00
Valentin Rothberg
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
OpenShift Merge Robot
22cb23b41e Merge pull request #19297 from vrothberg/RUN-1865
add a podman-compose command
2023-07-25 03:30:38 +02:00
Daniel J Walsh
2a559dc1a1 Merge pull request #19230 from rhatdan/quadlet
Add support for ShmSize to quadlet
2023-07-24 14:11:36 -04:00
Valentin Rothberg
e596b17fbe add a podman-compose command
**podman compose** is a thin wrapper around an external compose provider
such as docker-compose or podman-compose.  This means that `podman
compose` is executing another tool that implements the compose
functionality but sets up the environment in a way to let the compose
provider communicate transparently with the local Podman socket.  The
specified options as well the command and argument are passed directly
to the compose provider.

The default compose providers are `docker-compose` and `podman-compose`.
If installed, `docker-compose` takes precedence since it is the original
implementation of the Compose specification and is widely used on the
supported platforms (i.e., Linux, Mac OS, Windows).

If you want to change the default behavior or have a custom installation
path for your provider of choice, please change the `compose_provider`
field in `containers.conf(5)`.  You may also set the
`PODMAN_COMPOSE_PROVIDER` environment variable.

Signed-off-by: Valentin Rothberg <vrothberg@redhat.com>
2023-07-24 19:23:04 +02:00
Doug Rabson
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
Daniel J Walsh
03ea93c21b Merge pull request #19323 from eriksjolund/fix_language_typos_markdown_layout
Fix language, typos and markdown layout
2023-07-24 10:56:11 -04:00
Daniel J Walsh
17496592e4 Merge pull request #19311 from jakecorrenti/breakup-qemu-machine-funcs
Reduce qemu machine function sizes
2023-07-24 10:04:22 -04:00
Jake Correnti
b57091ac92 Reduce qemu machine function sizes
The functions for QEMU's `VM` interface implementation (`machine.go`)
had quite large functions. Pulls out some code that could be moved to
its own function for easier readability.

[NO NEW TESTS NEEDED]

Signed-off-by: Jake Correnti <jakecorrenti+github@proton.me>
2023-07-24 09:31:58 -04:00
Erik Sjölund
b5ce0ab2de Fix language, typos and markdown layout
[NO NEW TESTS NEEDED]

Signed-off-by: Erik Sjölund <erik.sjolund@gmail.com>
2023-07-24 11:18:25 +02:00
Daniel J Walsh
9b7de8d411 Merge pull request #19231 from ariasmn/trust-local-policy
Fix `trust` not using local policy file
2023-07-22 07:33:42 -04:00
Daniel J Walsh
3e534eff9d Add support for ShmSize to quadlet
I am working on running android auto in a quadlet.

[Container]
AddDevice=/dev/dri/renderD128
AddDevice=/dev/kvm
DropCapability=all
Environment=PULSE_SERVER=$XDG_RUNTIME_DIR/pulse/native
Environment=WAYLAND_DISPLAY=wayland-0
Environment=XDG_RUNTIME_DIR
Image=quay.io/slopezpa/qemu-aaos
ContainerName=Android
PodmanArgs=--shm-size=5g
SecurityLabelDisable=true
Volume=$XDG_RUNTIME_DIR:$XDG_RUNTIME_DIR

And I need to be able to set the --shm-size option.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-07-22 06:41:39 -04:00