Commit Graph

644 Commits

Author SHA1 Message Date
Giuseppe Scrivano
825506d8f8 spec: move cgo stuff to their own file
so it can build without cgo since seccomp requires it.

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2019-07-02 16:41:03 +02:00
Giuseppe Scrivano
35ab2184a3 rootless: allow to build without cgo
unfortunately rootless won't work without cgo, as most of the
implementation is in C, but at least allow to build libpod.

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2019-07-02 16:41:02 +02:00
Giuseppe Scrivano
4b176d4f45 rootless: do not join namespace if it has already euid == 0
do not attempt to join the rootless namespace if it is running already
with euid == 0.

Closes: https://github.com/containers/libpod/issues/3463

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2019-07-01 21:58:33 +02:00
OpenShift Merge Robot
150778820f Merge pull request #3324 from marcov/detach-keys-configurable
libpod: specify a detach keys sequence in libpod.conf
2019-07-01 15:54:27 +02:00
OpenShift Merge Robot
5e42bf0717 Merge pull request #3397 from giuseppe/fix-reboot
rootless: enable linger if /run/user/UID not exists
2019-06-28 16:00:55 +02:00
Danila Kiver
7ea7754e4a Exclude SIGTERM from blocked signals for pause process.
Currently pause process blocks all signals which may cause its
termination, including SIGTERM. This behavior hangs init(1) during
system shutdown, until pause process gets SIGKILLed after some grace
period. To avoid this hanging, SIGTERM is excluded from list of blocked
signals.

Fixes #3440

Signed-off-by: Danila Kiver <danila.kiver@mail.ru>
2019-06-28 00:18:13 +03:00
Giuseppe Scrivano
7255468e65 rootless: enable linger if /run/user/UID not exists
at least on Fedora 30 it creates the /run/user/UID directory for the
user logged in via ssh.

This needs to be done very early so that every other check when we
create the default configuration file will point to the correct
location.

Closes: https://github.com/containers/libpod/issues/3410

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2019-06-27 16:34:35 +02:00
OpenShift Merge Robot
0906b32087 Merge pull request #3442 from baude/removelibpodfrommainphase2
libpod removal from main (phase 2)
2019-06-27 16:01:45 +02:00
baude
8561b99644 libpod removal from main (phase 2)
this is phase 2 for the removal of libpod from main.

Signed-off-by: baude <bbaude@redhat.com>
2019-06-27 07:56:24 -05:00
OpenShift Merge Robot
c06d9898f9 Merge pull request #3420 from ashley-cui/remoteconf
Fix crash for when remote host IP or Username is not set in conf file…
2019-06-26 22:25:34 +02:00
Giuseppe Scrivano
1778bfa5fe pkg, cgroups: add initial support for cgroup v2
This is an initial implementation of cgroup v2 support for
pkg/cgroups.  It currently works with crun, with this patch:
https://github.com/giuseppe/crun/pull/49).

It adds the pieces for:

- set PID limit to 1
- retrieve stats so that "podman stats" work.

the only missing part is the support for reading per
CPU stats (that is cpuacct.usage_percpu on cgroup v1), so for now it
always returns an empty result.

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2019-06-26 13:17:05 +02:00
Giuseppe Scrivano
5d25a4793d util: drop IsCgroup2UnifiedMode and use it from cgroups
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2019-06-26 13:17:04 +02:00
Giuseppe Scrivano
72cf0c81e8 libpod: use pkg/cgroups instead of containerd/cgroups
use the new implementation for dealing with cgroups.

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2019-06-26 13:17:02 +02:00
Giuseppe Scrivano
fa18693813 pkg: new package cgroups
provide a package for managing cgroups.  This is not supposed to be a
complete implementation with all the features supported by cgroups,
but it is a minimal implementation designed around what libpod needs
and it is currently using.

For example, it is currently possible to Apply only the pids limit,
as it is used by libpod for stopping containers, any other Apply will
just fail.

The main goal here is to have a minimal library where we have full
control, so we can start playing with cgroup v2.

When the need arises, we can add more features.

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2019-06-26 13:17:01 +02:00
Marco Vedovati
7e3f1c21b0 libpod: specify a detach keys sequence in libpod.conf
Add the ability of specifying a detach keys sequence in libpod.conf

Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2019-06-26 10:12:34 +02:00
Ashley Cui
bf5686739c Fix crash for when remote host IP or Username is not set in conf file & conf file exists.
When Host IP is not set in podman-remote.conf, error is printed out.
When Username is not set in podman-remote.conf, default username is used.

Signed-off-by: Ashley Cui <ashleycui16@gmail.com>
2019-06-25 16:10:42 -04:00
baude
dd81a44ccf remove libpod from main
the compilation demands of having libpod in main is a burden for the
remote client compilations.  to combat this, we should move the use of
libpod structs, vars, constants, and functions into the adapter code
where it will only be compiled by the local client.

this should result in cleaner code organization and smaller binaries. it
should also help if we ever need to compile the remote client on
non-Linux operating systems natively (not cross-compiled).

Signed-off-by: baude <bbaude@redhat.com>
2019-06-25 13:51:24 -05:00
OpenShift Merge Robot
54920601ae Merge pull request #3386 from baude/windowsbridge
add windows bridge format
2019-06-21 14:36:55 +02:00
Sascha Grunert
4bfbc355de Build cgo files with -Wall -Werror
To avoid unnecessary warnings and errors in the future I'd like to
propose building all cgo related sources with `-Wall -Werror`. This
commit fixes some warnings which came up in `shm_lock.c`, too.

Signed-off-by: Sascha Grunert <sgrunert@suse.com>
2019-06-21 10:14:19 +02:00
OpenShift Merge Robot
f446ccf0b0 Merge pull request #3379 from openSUSE/rootless-fix
Fix format specifiers in rootless_linux.c
2019-06-21 00:18:24 -07:00
OpenShift Merge Robot
f65ddc0991 Merge pull request #3380 from openSUSE/asprintf-fix
Handle possible asprintf failure in rootless_linux.c
2019-06-20 12:30:27 -07:00
baude
484b4a7c4b add windows bridge format
when using podman-remote on windows, the bridge format must account for
how windows deals with escape quoting.  in this case, it does not need
any.

also,  reduced duplicated code around generating the bridge endpoint for
the unix and windows platforms.

Signed-off-by: baude <bbaude@redhat.com>
2019-06-20 13:32:26 -05:00
Sascha Grunert
6e318a01a0 Fix execvp uage in rootless_linux.c
The second argument of `execlp` should be of type `char *`, so we need
to add an additional argument there.

Signed-off-by: Sascha Grunert <sgrunert@suse.com>
2019-06-20 15:07:01 +02:00
Sascha Grunert
fa1b0a2d89 Handle possible asprintf failure in rootless_linux.c
If `asprintf` fails we early exit now.

Signed-off-by: Sascha Grunert <sgrunert@suse.com>
2019-06-20 14:52:32 +02:00
Sascha Grunert
3cf3ccbd77 Fix format specifiers in rootless_linux.c
Format `%d` expects argument of type `int`, but the argument has a type
of `long int`.

Signed-off-by: Sascha Grunert <sgrunert@suse.com>
2019-06-20 12:03:04 +02:00
OpenShift Merge Robot
4d470c73ca Merge pull request #3369 from mheon/add_cached_delegated
Add support for cached, delegated mounts
2019-06-19 20:16:08 +02:00
Matthew Heon
30f24bb760 Add tests for cached and delegated mounts
Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2019-06-19 09:57:33 -04:00
Matthew Heon
8e5b294ac3 Allow (but ignore) Cached and Delegated volume options
These are only used on OS X Docker, and ignored elsewhere - but
since they are ignored, they're guaranteed to be safe everywhere,
and people are using them.

Fixes: #3340

Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2019-06-18 17:02:20 -04:00
Erik Sjölund
5c5262a24c Fix example in oci-hooks.5.md
Signed-off-by: Erik Sjölund <erik.sjolund@gmail.com>
2019-06-18 18:43:21 +02:00
OpenShift Merge Robot
90e3c9002b Merge pull request #3328 from mheon/storage_opts_for_cleanup
When creating exit command, pass storage options on
2019-06-15 00:18:53 +02:00
OpenShift Merge Robot
aa2992dec6 Merge pull request #3330 from mheon/remote_storage
Add --storage flag to 'podman rm' (local only)
2019-06-14 22:54:56 +02:00
OpenShift Merge Robot
4a450d55d9 Merge pull request #3334 from vrothberg/fix-3331
pkg/apparmor: fix when AA is disabled
2019-06-14 21:24:53 +02:00
OpenShift Merge Robot
4c849a79ea Merge pull request #3333 from jordemort/podman-commit-env-fix
Fix ENV parsing on `podman import`
2019-06-14 19:31:02 +02:00
OpenShift Merge Robot
5341ce802e Merge pull request #3252 from mtrmac/registries.conf-mirrors
Update containers/image to v2.0.0, and buildah to v1.8.4
2019-06-14 17:42:55 +02:00
Valentin Rothberg
e611176760 pkg/apparmor: fix when AA is disabled
Do not try to load the default profile when AppArmor is disabled on the
host.

Fixes: #3331
Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2019-06-14 17:37:16 +02:00
Jordan Webb
d2d57517d7 Fix ENV parsing on podman import
Signed-off-by: Jordan Webb <jordemort@github.com>
2019-06-14 09:43:36 -05:00
Miloslav Trmač
2be01ea4fb Use the logical registry location instead of the physical one in (podman info)
Signed-off-by: Miloslav Trmač <mitr@redhat.com>
2019-06-14 15:46:17 +02:00
Miloslav Trmač
5fde3361da Update containers/image to v2.0.0, and buildah to v1.8.4
In c/image, this adds the the mirror-by-digest-only option to mirrors, and
moves the search order to an independent list.

A synchronized buildah update is necessary to deal with the c/image API change.

Signed-off-by: Miloslav Trmač <mitr@redhat.com>
2019-06-14 15:45:41 +02:00
Matthew Heon
49e696642d Add --storage flag to 'podman rm' (local only)
This flag switches to removing containers directly from c/storage
and is mostly used to remove orphan containers.

It's a superior solution to our former one, which attempted
removal from storage under certain circumstances and could, under
some conditions, not trigger.

Also contains the beginning of support for storage in `ps` but
wiring that in is going to be a much bigger pain.

Fixes #3329.

Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2019-06-13 17:02:20 -04:00
Matthew Heon
b2bdbf331e When creating exit command, pass storage options on
We made changes earlier that empty storage options when setting
storage driver explicitly. Unfortunately, this breaks rootless
cleanup commands, as they lose the fuse-overlayfs mount program
path.

Fix this by passing along the storage options to the cleanup
process.

Also, fix --syslog, which was broken a while ago (probably when
we broke up main to add main_remote).

Fixes #3326

Signed-off-by: Matthew Heon <mheon@redhat.com>
2019-06-13 15:19:17 -04:00
Giuseppe Scrivano
23efe4cb81 storage: support --mount type=bind,bind-nonrecursive
add support for not recursive bind mounts.

Closes: https://github.com/containers/libpod/issues/3314

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2019-06-13 15:32:45 +02:00
Giuseppe Scrivano
97f4818ce1 storage: fix typo
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2019-06-13 11:29:07 +02:00
OpenShift Merge Robot
a89d013b12 Merge pull request #3283 from haircommander/logging-play-kube-hotfix
Set a default log driver if none is specified
2019-06-10 20:19:33 +02:00
Peter Hunt
9313556591 only set log driver if it isn't empty
Now, not setting a log driver in a create config correctly takes the default (k8s-logging)

Signed-off-by: Peter Hunt <pehunt@redhat.com>
2019-06-08 17:46:17 -04:00
Cameron Nemo
8d2c7c269d Fix cgo includes for musl
closes #3284

Signed-off-by: Cameron Nemo <cnemo@tutanota.com>
2019-06-08 14:15:03 -07:00
OpenShift Merge Robot
39f5ea4c04 Merge pull request #3180 from mheon/inspect_volumes
Begin to break up pkg/inspect
2019-06-08 14:45:24 +02:00
OpenShift Merge Robot
bcc89e9d08 Merge pull request #3271 from giuseppe/rootless-skip-ns-resolution-on-old-kernels
rootless: skip NS_GET_PARENT on old kernels
2019-06-07 15:39:28 +02:00
OpenShift Merge Robot
346128792c Merge pull request #2272 from adrianreber/migration
Add support to migrate containers
2019-06-07 14:33:20 +02:00
Giuseppe Scrivano
4dca13e704 rootless: skip NS_GET_PARENT on old kernels
on old kernels the ioctl NS_GET_PARENT is not available.

Handle the error code and immediately return the same fd.  It should
be fine now that we use the namespace resolution using the conmon pid,
so the namespace parent resolution is just a safety measure.

Closes: https://github.com/containers/libpod/issues/2968

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2019-06-06 15:32:45 +02:00
OpenShift Merge Robot
3fb9669a63 Merge pull request #3231 from baude/remoteclientconf
podman-remote.conf enablement
2019-06-04 20:02:01 +02:00