Commit graph

3823 commits

Author SHA1 Message Date
Valentin Rothberg
d2b26ac8a0 podman create: building local pause image: do not read ignore files
Make sure to ignore local {container,docker}ignore files when building a
local pause image.  Otherwise, we may mistakenly not be able to copy
catatonit into the build container.

Fixes: #13529
Signed-off-by: Valentin Rothberg <vrothberg@redhat.com>
2022-03-30 14:09:17 -04:00
Nirmal Patel
e01d9680ce Separator is no longer prepended when prefix is empty on podman generate systemd
When podman generate systemd is invoked, it previously did not check if
container-prefix or pod-prefix are empty. When these are empty, the file name
starts with the separator, which is hyphen by default. This results in files
like '-containername.service'.

The code now checks if these prefixes are empty. If they are, the filename no
longer adds a separator. Instead, it uses name or ID of the container or pod.

Closes #13272

Signed-off-by: Nirmal Patel <npate012@gmail.com>
2022-03-30 14:05:49 -04:00
Jason T. Greene
4a0d74495e Fixes TTY & resizing on Mac and Windows
Signed-off-by: Jason T. Greene <jason.greene@redhat.com>
2022-03-30 13:59:27 -04:00
Thibault Gagnaux
6d8d8fb718 Fixes: #13301 ("machine rm removes the mounted socket file on macos")
[NO NEW TESTS NEEDED]
Signed-off-by: Thibault Gagnaux <tgagnaux@gmail.com>
2022-03-30 13:41:15 -04:00
Urvashi Mohnani
5aa6b69198 Throw an error if kube yaml has duplicate ctr names
Error out if the kube yaml passed to play kube has more
than one container or init container with the same name.

Signed-off-by: Urvashi Mohnani <umohnani@redhat.com>
2022-03-30 13:38:08 -04:00
Giuseppe Scrivano
7b368768c2
do not set the inheritable capabilities
The kernel never sets the inheritable capabilities for a process, they
are only set by userspace.  Emulate the same behavior.

Closes: CVE-2022-27649

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
(cherry picked from commit aafa80918a)
2022-03-30 15:32:18 +02:00
Jason T. Greene
6878376c42 Handle incompatible machines
Start in a reduced mode for recovery, warn, and provide instructions to recreate them

Signed-off-by: Jason T. Greene <jason.greene@redhat.com>
2022-03-18 17:36:37 -05:00
Brent Baude
35b2d951b2 machine rm -f stops and removes machine
If you want to remove a running machine, you can now pass the --force/-f
to podman machine rm and the machine will be stopped and removed without
confirmations.

Fixes: #13448

[NO NEW TESTS NEEDED]

Signed-off-by: Brent Baude <bbaude@redhat.com>
2022-03-18 15:06:57 -05:00
Jason T. Greene
76a910b169 Improve agent install message to add restart instructions
Signed-off-by: Jason T. Greene <jason.greene@redhat.com>
2022-03-18 15:06:57 -05:00
Brent Baude
44e9b539ee MacOS improvements
* Enable support of virtfs in Podman and darwin.  At the time of this writing, it requires a special patch not yet included in upstream qemu.
* Prefer to use a specially built qemu to support virtfs.  The qemu is installed under libexec/podman.

[NO NEW TESTS NEEDED]
Signed-off-by: Brent Baude <bbaude@redhat.com>
2022-03-18 15:06:57 -05:00
tomsweeneyredhat
61f6e1300a [v4.0] Backport Set default rule at the head of dev config
Backports: #13421 Set default rule at the head of device configuration
by @hshiina

The default rule should be set at the head of device configuration.
Otherwise, rules for user devices are overridden by the default rule so
that any access to the user devices are denied.

This has been requested to backport and to include in RHEL 8.6 and 9.0.
The exception process is underway.

Addresses these BZs for the backport:

https://bugzilla.redhat.com/show_bug.cgi?id=2059296
https://bugzilla.redhat.com/show_bug.cgi?id=2062835

Signed-off-by: tomsweeneyredhat <tsweeney@redhat.com>
2022-03-10 18:18:11 -05:00
Brent Baude
791c8c347c Revert "use GetRuntimeDir() from c/common"
This reverts commit fc5cf812c8.

[NO NEW TESTS NEEDED]

Signed-off-by: Brent Baude <bbaude@redhat.com>
2022-03-01 13:24:39 -06:00
Paul Holzinger
2b85f62a23 use GetRuntimeDir() from c/common
To prevent duplication and potential bugs we should use the same
GetRuntimeDir function that is used in c/common.

[NO NEW TESTS NEEDED]

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2022-02-23 14:31:39 -05:00
Aditya R
82f4760dea kube: honor --build=false and make --build=true by default
`podman play kube` tries to build images even if `--build` is set to
false so lets honor that and make `--build` , `true` by default so it
matches the original behviour.

Signed-off-by: Aditya R <arajan@redhat.com>
2022-02-23 14:30:25 -05:00
Giuseppe Scrivano
eb9fe52a55 kube: honor mount propagation mode
convert the propagation mode specified for the mount to the expected
Linux mount option.

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2022-02-23 14:26:10 -05:00
Matthew Heon
15cb918556 Fix lint
Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2022-02-17 12:34:05 -05:00
Jhon Honce
ae9ad416a3 Fix manifest 4.0 Endpoints
Branch forced 4.0 only endpoints

Signed-off-by: Jhon Honce <jhonce@redhat.com>
2022-02-17 12:34:05 -05:00
Jason T. Greene
1a8c715f1f Introduce podman machine init --root=t|f and podman machine set --root=t|f
Switch default to rootless for mac and windows

Signed-off-by: Jason T. Greene <jason.greene@redhat.com>
2022-02-16 14:02:58 -05:00
Jason T. Greene
f71dfcb5da Initial implementation of mac forwarding using a privileged docker sock claim helper
Signed-off-by: Jason T. Greene <jason.greene@redhat.com>
2022-02-16 14:02:52 -05:00
esendjer
2128236da5 ignition: propagate proxy settings from a host into a vm
Set proxy settings (such as `HTTP_PROXY`, and others)
for the whole guest OS with setting up `DefaultEnvironment`
with a `systemd` configuration file `default-env.conf`,
a `profile.d` scenario file - `default-env.sh` and
a `environment.d` configuration file `default-env.conf`

The **actual** environment variables are read by podman
at a start, then they are encrypted with base64 into
a single string and after are provided into a VM through
QEMU Firmware Configuration (fw_cfg) Device

Inside a VM a systemd service `envset-fwcfg.service`
reads the providead encrypted string from fw_cfg, decrypts
and then adds to the files
 - `/etc/systemd/system.conf.d/default-env.conf`
 - `/etc/profile.d/default-env.sh`
 - `/etc/environment.d/default-env.conf`
At the end this service execute  `systemctl daemon-reload`
to propagate new variables for systemd manager

[NO NEW TESTS NEEDED]

Closes #13168

Signed-off-by: esendjer <esendjer@gmail.com>
2022-02-16 14:02:42 -05:00
Jason T. Greene
809da6b0ba Update to podman4 copr stream
Signed-off-by: Jason T. Greene <jason.greene@redhat.com>
2022-02-16 14:01:20 -05:00
Adrian Reber
d77b4f92c0 Fix checkpoint/restore pod tests
Checkpoint/restore pod tests are not running with an older runc and now
that runc 1.1.0 appears in the repositories it was detected that the
tests were failing. This was not detected in CI as CI was not using runc
1.1.0 yet.

Signed-off-by: Adrian Reber <areber@redhat.com>
2022-02-16 13:58:40 -05:00
Daniel J Walsh
a72e22160a Make sure building with relative paths work correctly.
Fixes: https://github.com/containers/podman/issues/12763

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2022-02-16 13:56:39 -05:00
Jhon Honce
975d79aedb Add 409 response to swagger godoc
When attempting to create a network with a name that already exists,
a 409 status code will be returned

[NO NEW TESTS NEEDED]

Signed-off-by: Jhon Honce <jhonce@redhat.com>
2022-02-16 13:55:56 -05:00
Brent Baude
629d864459 Temporarily pull machine images from side repo
Until podman4 is in the fcos trees, we need to pull the machine images
from a side repository.  There is a hard coded bit that forces the
side repo download right now.  Simple comment or removal of the bit will
revert to normal download behavior.

[NO NEW TESTS NEEDED]

Signed-off-by: Brent Baude <bbaude@redhat.com>
2022-02-14 15:10:40 -06:00
Tom Deseyn
e7998b1224 [NO NEW TEST NEEDED] Add schema for ImageCreate 200 response.
Signed-off-by: Tom Deseyn <tom.deseyn@gmail.com>
2022-02-10 14:03:26 -05:00
Aditya R
7e37c608f7 compat: endpoint /build must set header content type as application/json in reponse
Lot of clients are expecting proper `Content-type: application/json`
configured in response headers of `/build` compat api. Following commit
fixes that.

Fixes issues where code is setting header field after writing header
which is wrong. We must set `content-type` before we write and flush
http header.

Signed-off-by: Aditya R <arajan@redhat.com>
2022-02-10 13:58:12 -05:00
cdoern
b1bf91a22a Podman pod create --share-parent vs --share=cgroup
separated cgroupNS sharing from setting the pod as the cgroup parent,
made a new flag --share-parent which sets the pod as the cgroup parent for all
containers entering the pod

remove cgroup from the default kernel namespaces since we want the same default behavior as before which is just the cgroup parent.

resolves #12765

Signed-off-by: cdoern <cdoern@redhat.com>
Signed-off-by: cdoern <cbdoer23@g.holycross.edu>
Signed-off-by: cdoern <cdoern@redhat.com>
2022-02-10 13:49:46 -05:00
Jhon Honce
71d1514490 Add version guard to libpod API endpoints
* Ensure meaningful behaviour when called with /v3.x.x semantics
* Change return code to 409 from 500 when client attempts to use an
  existing network name
* Update API bats test runner to support /v4.0.0 endpoints by default

Signed-off-by: Jhon Honce <jhonce@redhat.com>
2022-02-09 14:38:51 -07:00
Daniel J Walsh
7499496f3d
idmap should be able to be specified along with other options
[NO NEW TESTS NEEDED] crun is not available everywhere to test idmap.
Kernel might not be recent enough and not all file systems support
idmap option.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2022-02-09 07:14:53 -05:00
Paul Holzinger
70623790d0 Revert "Move each search dns to its own line"
This reverts commit a1bc8cb52c.
Please see resolv.conf(5) search domains must be on the same line. If
you use multiple seach key words only the last one is used. I tested this
with alpine and it works correctly when they are on the same line so I
am not sure what issues Dan had with it but this is not correct.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2022-02-03 16:21:26 -05:00
Daniel J Walsh
48f10e1d0d Move each search dns to its own line
Alpine does not seem to use search correctly when there are multiple
search domains on the same line. It only uses the first with the advent.
When podman runs within a separate network we are appending on
dns.podman as a search, if you add a search domain, then this causes the
local search on network to fail.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2022-02-03 16:21:26 -05:00
Daniel J Walsh
cad6459b68 Fix size to match Docker selection
Fixes: https://github.com/containers/podman/issues/13096

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2022-02-03 14:54:29 -05:00
Daniel J Walsh
178cccbf9e Fix use of infra image to clarify default
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2022-02-03 14:45:29 -05:00
Aditya R
49076ba871 ignition, machine: delegate cpu,io cgroup controllers to machine's default users
Makes sure that ignition setups up systemd config so cgroup controllers
like `cpu, io` are also delegated to `non-root` along with `memory,
pid`.

This allows general users of `podman` on `macOS` and `podman-remote` to
do operations which are dependent on `cpu, io` cgroup controllers.

[NO TESTS NEEDED]
[NO NEW TESTS NEEDED]
We don't have a CI infra to test this, please pull the tree and run
`podman info` inside the machine to confirm.

Signed-off-by: Aditya R <arajan@redhat.com>
2022-02-03 14:43:28 -05:00
Nalin Dahyabhai
0c9a8ac073 pkg/bindings/images.Build(): slashify "dockerfile" values, too
When the Dockerfile isn't in the root directory of the build context,
the client supplies its pathname to the server, but it needs to do so
using "/" as the path separator, not the client OS's path separator.

CI can't test Windows clients, so
[NO NEW TESTS NEEDED]

Signed-off-by: Nalin Dahyabhai <nalin@redhat.com>
2022-02-03 11:36:15 -05:00
OpenShift Merge Robot
1b544b7424
Merge pull request #12712 from flouthoc/volume_overlay_advanced
volume: add support for non-volatile `upperdir`,`workdir` for overlay volumes
2022-01-28 07:06:02 -05:00
Aditya Rajan
e64e6500d3
volume: add support for non-volatile upperdir,workdir for overlay volumes
Often users want their overlayed volumes to be `non-volatile` in nature
that means that same `upper` dir can be re-used by one or more
containers but overall of nature of volumes still have to be `overlay`
so work done is still on a overlay not on the actual volume.

Following PR adds support for more advanced options i.e custom `workdir`
and `upperdir` for overlayed volumes. So that users can re-use `workdir`
and `upperdir` across new containers as well.

Usage
```console

$ podman run -it -v myvol:/data:O,upperdir=/path/persistant/upper,workdir=/path/persistant/work alpine sh

```

Signed-off-by: Aditya R <arajan@redhat.com>
2022-01-28 13:10:15 +05:30
Paul Holzinger
6961d91206
network create: allow multiple subnets
podman network create --subnet, --gateway and --ip-range can now be
specified multiple times to join the network to more than one subnet.
This is very useful if you want to use a dual stack network and assign a
fixed ipv4 and ipv6 subnet. The order of the options is important here,
the first --gateway/--ip-range will be assigned to the first subnet and
so on.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2022-01-27 16:38:39 +01:00
OpenShift Merge Robot
5659b0734c
Merge pull request #12867 from cdoern/scp
switch podman image scp from depending on machinectl to just os/exec
2022-01-27 07:48:50 -05:00
Giuseppe Scrivano
6336e1ff1e
rootless: drop permission check for devices
commit 350ede1eeb added the feature.

Do not check whether the device is usable by the rootless user before
adding to the container.

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

[NO NEW TESTS NEEDED] it requires changes on the host to test it

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2022-01-27 09:35:02 +01:00
cdoern
77cd38d40c switch podman image scp from depending on machinectl to just os/exec
machinectl does not propogate error messages and adds extra lines in the output, exec.Cmd is able to clear the env besides PATH and TERM,
and use the given UID and GID to execute the command properly.

machinectl is still used to create a user session. Ubuntu support is limited by this.

Signed-off-by: cdoern <cdoern@redhat.com>
2022-01-26 14:40:44 -05:00
Jhon Honce
44a87229b6 Update godoc, swagger using wrong struct
Documentation for API volume list, pointed to a different struct
than the code.

[NO NEW TESTS NEEDED]

Fixes #12987

Signed-off-by: Jhon Honce <jhonce@redhat.com>
2022-01-25 10:05:51 -07:00
OpenShift Merge Robot
6d03146a8c
Merge pull request #12974 from kolyshkin/typo
pkg/specgen/generate/security: fix error message text
2022-01-25 07:19:43 -05:00
OpenShift Merge Robot
95db13d342
Merge pull request #12969 from rhatdan/remote
Fix handling of duplicate matches on id expansion
2022-01-25 00:01:41 -05:00
Kir Kolyshkin
98739237ee pkg/specgen/generate/security: fix error message
This should be Network Namespace, not Host Namespace.

[NO NEW TESTS NEEDED]

Fixes: 0d70df11
Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
2022-01-24 13:24:37 -08:00
Paul Holzinger
dbfe79757b
remote build: set rootless oci isolation correctly
When we run rootless buildah needs to have IsolationOCIRootless set
otherwise it will run code which cannot be used as rootless user.
Podman should use the buildah default if possible and change it to
rootless mode if needed.

[NO NEW TESTS NEEDED] Should be covered by existing tests once we have
podman-remote rootless tests.

Fixes #12989

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2022-01-24 19:51:59 +01:00
Daniel J Walsh
80a5295d42
Fix handling of duplicate matches on id expansion
Fixes: https://github.com/containers/podman/issues/12963

[NO NEW TESTS NEEDED] I don't know how to create two
containers with the same first digit of the digest,
which I could them attempt to remove.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2022-01-24 13:19:16 -05:00
Jakub Guzik
7938f32c53 Remove unused param and clean API handlers
This commit removes error message string from utils.Error in pkg/api.
Param was not used inside a function for quite a long time
[NO NEW TESTS NEEDED]

Signed-off-by: Jakub Guzik <jguzik@redhat.com>
2022-01-22 00:31:18 +01:00
OpenShift Merge Robot
d847ad598d
Merge pull request #12961 from rhatdan/codespell
Run codespell
2022-01-21 14:55:26 -05:00