Commit Graph

3680 Commits

Author SHA1 Message Date
Nalin Dahyabhai 4521d4b19c Only configure networking when creating a net ns
When joining an existing namespace, don't default to configuring a
loopback interface in that namespace.

Its creator should have done that, and we don't want to fail to create
the container when we don't have sufficient privileges to configure the
network namespace.

Signed-off-by: Nalin Dahyabhai <nalin@redhat.com>
2018-04-11 13:28:19 -04:00
Filipe Brandenburger 0e16bd9b53 Detect whether Delegate is available on both slices and scopes
Starting with systemd 237, in preparation for cgroup v2, delegation is
only now available for scopes, not slices.

Update libcontainer code to detect whether delegation is available on
both and use that information when creating new slices.

Signed-off-by: Filipe Brandenburger <filbranden@google.com>
2018-04-10 11:42:55 -07:00
Michael Crosby 3cbb2fa3c4
Merge pull request #1772 from filbranden/systemd1
Fix systemd.Apply() to check for DBus error before waiting on a channel.
2018-04-10 14:14:48 -04:00
Filipe Brandenburger 8ab251f298 Fix systemd.Apply() to check for DBus error before waiting on a channel.
The channel was introduced in #1683 to work around a race condition.
However, the check for error in StartTransientUnit ignores the error for
an already existing unit, and in that case there will be no notification
from DBus (so waiting on the channel will make it hang.)

Later PR #1754 added a timeout, which worked around the issue, but we
can fix this correctly by only waiting on the channel when there is no
error. Fix the code to do so.

The timeout handling was kept, since there might be other cases where
this situation occurs (https://bugzilla.redhat.com/show_bug.cgi?id=1548358
mentions calling this code from inside a container, it's unclear whether
an existing container was in use or not, so not sure whether this would
have fixed that bug as well.)

Signed-off-by: Filipe Brandenburger <filbranden@google.com>
2018-04-09 11:51:59 -07:00
Mrunal Patel cc4307ab66
Merge pull request #1771 from sboeuf/fix_exec
libcontainer: Don't set container state to running when exec'ing
2018-04-03 11:26:54 -07:00
Sebastien Boeuf 985628dda0 libcontainer: Don't set container state to running when exec'ing
There is no reason to set the container state to "running" as a
temporary value when exec'ing a process on a container in "created"
state. The problem doing this is that consumers of the libcontainer
library might use it by keeping pointers in memory. In this case,
the container state will indicate that the container is running, which
is wrong, and this will end up with a failure on the next action
because the check for the container state transition will complain.

Fixes #1767

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2018-03-30 09:29:18 -07:00
Akihiro Suda 73f3dc6389 libcontainer: allow setgroup in rootless mode
Signed-off-by: Akihiro Suda <suda.akihiro@lab.ntt.co.jp>
2018-03-27 17:42:05 +09:00
Akihiro Suda ed58366cc8 libcontainer: fix Boolmsg alignment
Signed-off-by: Akihiro Suda <suda.akihiro@lab.ntt.co.jp>
2018-03-26 14:44:03 +09:00
Michael Crosby ec9bf50586
Merge pull request #1762 from tamalsaha/patch-1
Fix error message
2018-03-22 11:49:12 -04:00
Tamal Saha 58415b4b12 Fix error message
Signed-off-by: Tamal Saha <tamal@appscode.com>
2018-03-21 20:52:09 -07:00
Mrunal Patel 4e3f25b953
Merge pull request #1760 from cyphar/rootless-xdg-sticky-bit
rootless: set sticky bit if using XDG_RUNTIME_DIR
2018-03-20 14:07:01 -07:00
Mrunal Patel 07ab54fd6d
Merge pull request #1750 from avagin/test-kmod
tests: allow to load kernel modules from a test container
2018-03-20 14:03:31 -07:00
Aleksa Sarai 4f4af7bfde
rootless: set sticky bit if using XDG_RUNTIME_DIR
According to the XDG specification[1], in order to avoid the possibility of
our container states being auto-pruned every 6 hours we need to set the
sticky bit. Rather than handling all of the users of --root, we just
create the directory and set the sticky bit during detection, as it's
not expensive.

[1]: https://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html

Signed-off-by: Aleksa Sarai <asarai@suse.de>
2018-03-19 11:02:31 +11:00
Aleksa Sarai fd3a6e6c83
libcontainer: handle unset oomScoreAdj corectly
Previously if oomScoreAdj was not set in config.json we would implicitly
set oom_score_adj to 0. This is not allowed according to the spec:

> If oomScoreAdj is not set, the runtime MUST NOT change the value of
> oom_score_adj.

Change this so that we do not modify oom_score_adj if oomScoreAdj is not
present in the configuration. While this modifies our internal
configuration types, the on-disk format is still compatible.

Signed-off-by: Aleksa Sarai <asarai@suse.de>
2018-03-17 13:53:42 +11:00
Aleksa Sarai 03e585985f
rootless: cgroup: treat EROFS as a skippable error
In some cases, /sys/fs/cgroups is mounted read-only. In rootless
containers we can consider this effectively identical to having cgroups
that we don't have write permission to -- because the user isn't
responsible for the read-only setup and cannot modify it. The rules are
identical to when /sys/fs/cgroups is not writable by the unprivileged
user.

An example of this is the default configuration of Docker, where cgroups
are mounted as read-only as a preventative security measure.

Reported-by: Vladimir Rutsky <rutsky@google.com>
Signed-off-by: Aleksa Sarai <asarai@suse.de>
2018-03-17 13:53:42 +11:00
Andrei Vagin 74e961e2e2 tests: allow to load kernel modules from a test container
CRIU needs to load a few modules to checkpoint/resume containers.

https://github.com/opencontainers/runc/issues/1745
Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
2018-03-13 01:20:12 +03:00
Mrunal Patel 69663f0bd4
Merge pull request #1756 from rhatdan/selinux1
Label the masked tmpfs with the mount label
2018-03-09 11:51:51 -08:00
Daniel J Walsh 43aea05946 Label the masked tmpfs with the mount label
Currently if a confined container process tries to list these directories
AVC's are generated because they are labeled with external labels.  Adding
the mountlabel will remove these AVC's.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2018-03-09 14:29:06 -05:00
Qiang Huang 9facb87f87
Merge pull request #1754 from vikaschoudhary16/add-timeout
Add timeout while waiting for StartTransinetUnit completion signal
2018-03-08 09:09:34 +08:00
Aleksa Sarai 108570c6e4
merge branch 'pr-1752'
cgroups/fs: fix NPE on Destroy than no cgroups are set

LGTMs: @crosbymichael @cyphar
Closes #1752
2018-03-08 09:00:18 +11:00
W. Trevor King 0aa6e4e5d3 libcontainer/specconv/spec_linux: Support empty 'type' for bind mounts
From the "Creating a bind mount" section of mount(2) [1]:

> If mountflags includes MS_BIND (available since Linux 2.4), then
> perform a bind mount...
>
> The filesystemtype and data arguments are ignored.

This commit adds support for configurations that leave the OPTIONAL
type [2] unset for bind mounts.  There's a related spec-example change
in flight with [3], although my personal preference would be a more
explicit spec for the whole mount structure [4].

[1]: http://man7.org/linux/man-pages/man2/mount.2.html
[2]: https://github.com/opencontainers/runtime-spec/blame/v1.0.1/config.md#L102
[3]: https://github.com/opencontainers/runtime-spec/pull/954
[4]: https://github.com/opencontainers/runtime-spec/pull/771

Signed-off-by: W. Trevor King <wking@tremily.us>
2018-03-07 10:23:42 -08:00
vikaschoudhary16 04e95b526d Add timeout while waiting for StartTransinetUnit completion signal from dbus
Signed-off-by: vikaschoudhary16 <choudharyvikas16@gmail.com>
2018-03-07 05:11:38 -05:00
Aleksa Sarai 0c743bb246
merge branch 'pr-1751'
Minor wording enhancement in readme

LGTMs: @crosbymichael @cyphar
Closes #1751
2018-03-07 19:54:53 +11:00
Denys Smirnov 3d26fc3fd7 cgroups/fs: fix NPE on Destroy than no cgroups are set
Currently Manager accepts nil cgroups when calling Apply, but it will panic then trying to call Destroy with the same config.

Signed-off-by: Denys Smirnov <denys@sourced.tech>
2018-03-06 23:31:31 +01:00
Alex Glikson e7e303ab9e Minor wording enhancement in readme
Clarifying a bit the explanation why fine-grained control is benefitial.

Signed-off-by: Alex Glikson <alex.glikson@gmail.com>
2018-03-02 13:39:28 -05:00
Michael Crosby ce80fa0a64
Merge pull request #1749 from vbatts/platform.1
libcontainer/user: platform dependent calls
2018-03-01 11:30:39 -05:00
Vincent Batts bf74951617
libcontainer/user: platform dependent calls
This rearranges a bit of the user and group lookup, such that only a
basic subset is exposed.

Signed-off-by: Vincent Batts <vbatts@hashbangbash.com>
2018-02-28 14:14:24 -05:00
Daniel, Dao Quang Minh aada2af1b2
Merge pull request #1748 from cyphar/makefile-release
makefile: make "release" PHONY
2018-02-28 15:43:01 +00:00
Michael Crosby 6f6bb35129
Merge pull request #1746 from tiborvass/fix-shell
Fix make shell
2018-02-28 10:33:21 -05:00
Aleksa Sarai 8d7b5731e5
makefile: make "release" PHONY
This just makes it nicer to do "make release" if you have to do builds
for more than one release.

Signed-off-by: Aleksa Sarai <asarai@suse.de>
2018-02-28 16:40:30 +11:00
Tibor Vass 10a4cde4b9 Fix make shell
The "shell" rule in the Makefile uses docker to run a bash session,
however it was depending on the "all" rule which assumes non-docker local
development. This commit fixes it by making it depend on the "runcimage" rule.

Signed-off-by: Tibor Vass <tibor@docker.com>
2018-02-28 05:23:03 +00:00
Aleksa Sarai 4bb1fe4ace
release v1.0.0~rc5
VERSION: back to development
  VERSION: bump to v1.0.0-rc5

Votes: +5 -0 #2
LGTMs: @crosbymichael @cyphar @dqminh @hqhq @mrunalp
Closes #1739
2018-02-28 03:47:26 +11:00
Michael Crosby d32757b0cf
Merge pull request #1711 from dqminh/update-build-dep
Update build dependencies in Dockerfile
2018-02-27 11:41:04 -05:00
Aleksa Sarai 442a6cff7e
VERSION: back to development
Signed-off-by: Aleksa Sarai <asarai@suse.de>
2018-02-27 12:25:04 +11:00
Aleksa Sarai 4fc53a81fb
VERSION: bump to v1.0.0-rc5
This is planned to be the last -rc release before 1.0.0.

Signed-off-by: Aleksa Sarai <asarai@suse.de>
2018-02-27 12:25:04 +11:00
Aleksa Sarai 757e78bebd
merge branch 'pr-1743'
The setupUserNamespace function is always called.

LGTMs: @crosbymichael @mrunalp @cyphar
Closes #1743
2018-02-27 12:22:52 +11:00
Michael Crosby 8aca07289d
Merge pull request #1736 from allencloud/fix-lint-warning
fix lint error in specconv
2018-02-26 14:21:26 -05:00
ynirk 2420eb1f4d The setupUserNamespace function is always called.
The function is called even if the usernamespace is not set.
This results having wrong uid/gid set on devices.

This fix add a test to check if usernamespace is set befor calling
setupUserNamespace.

Fixes #1742

Signed-off-by: Julien Lavesque <julien.lavesque@gmail.com>
2018-02-26 14:27:11 +01:00
Daniel Dao 8be31629cf upgrade criu to v3.7
The current version of criu bundled in dockerfile failed to do checkpoint/restore test on my
system (v4.14.14). Upgrade to latest version v3.7 and also change the
repository name to point to the current official repo.

Signed-off-by: Daniel Dao <dqminh89@gmail.com>
2018-02-26 11:48:39 +00:00
Daniel Dao 121c7b458e upgrade to go 1.10 with debian stretch
This also remove jessie-backport version of libseccomp and just use
stretch bundled version

Signed-off-by: Daniel Dao <dqminh89@gmail.com>
2018-02-26 11:48:11 +00:00
Allen Sun 3f32e72963 fix lint error in specconv
Signed-off-by: Allen Sun <allensun.shl@alibaba-inc.com>
2018-02-26 15:39:54 +08:00
Qiang Huang b50fa98d9e
Merge pull request #1727 from pmorjan/update-console
Update console dependency to fix runc exec on BE
2018-02-22 15:40:44 +08:00
Qiang Huang e59b6d4b9b
Merge pull request #1729 from vsoch/patch-2
adding go get instruction to readme
2018-02-22 15:38:43 +08:00
vsoch 0f3d824550 adding go get instruction to readme
Signed-off-by: Vanessa Sochat <vsochat@stanford.edu>
2018-02-21 12:54:21 -08:00
Peter Morjan 59e5b61c5c Update console dependency to fix runc exec on BE
This fixes a bug in the console package for big-endian architectures.
When creating a new pty the returned path to the new pty slave was
wrong for the second und all subsequent ptys.
In runc the exec subcommand failed with an runtime error such as
`container_linux.go:265: starting container process caused "open
/dev/pts/4294967296: no such file or directory"`.
The number is shifted by 32.

Signed-off-by: Peter Morjan <peter.morjan@de.ibm.com>
2018-02-21 10:43:06 +01:00
Michael Crosby 595bea022f
Merge pull request #1722 from ravisantoshgudimetla/fix-systemd-path
fix systemd slice expansion so that it could be consumed by cAdvisor
2018-02-20 09:59:24 -05:00
Michael Crosby 6988afe05d
Merge pull request #1724 from wking/no-pid-for-capability-lookup
libcontainer/capabilities_linux: Drop os.Getpid() call
2018-02-20 09:40:33 -05:00
W. Trevor King 50dc7ee96c libcontainer/capabilities_linux: Drop os.Getpid() call
gocapability has supported 0 as "the current PID" since
syndtr/gocapability@5e7cce49 (Allow to use the zero value for pid to
operate with the current task, 2015-01-15, syndtr/gocapability#2).
libcontainer was ported to that approach in 444cc298 (namespaces:
allow to use pid namespace without mount namespace, 2015-01-27,
docker/libcontainer#358), but the change was clobbered by 22df5551
(Merge branch 'master' into api, 2015-02-19, docker/libcontainer#388)
which landed via 5b73860e (Merge pull request #388 from docker/api,
2015-02-19, docker/libcontainer#388).  This commit restores the
changes from 444cc298.

Signed-off-by: W. Trevor King <wking@tremily.us>
2018-02-19 15:47:42 -08:00
ravisantoshgudimetla 7019e1de7b fix systemd slice expansion so that it could be consumed by cAdvisor
Signed-off-by: ravisantoshgudimetla <ravisantoshgudimetla@gmail.com>
2018-02-18 21:32:39 -05:00
Michael Crosby a618ab5a01
Merge pull request #1695 from Taeung/fix-console-man
man: Fix manpages related to console
2018-02-08 10:28:41 -05:00