1 |
commit: 9fedb3b40b5983372b2c2de29dfe321c6dfaadf4 |
2 |
Author: William Hubbs <w.d.hubbs <AT> gmail <DOT> com> |
3 |
AuthorDate: Wed Dec 2 00:20:02 2015 +0000 |
4 |
Commit: William Hubbs <williamh <AT> gentoo <DOT> org> |
5 |
CommitDate: Wed Dec 2 16:20:15 2015 +0000 |
6 |
URL: https://gitweb.gentoo.org/proj/openrc.git/commit/?id=9fedb3b4 |
7 |
|
8 |
Add detection for docker containers |
9 |
|
10 |
etc/rc.conf.Linux | 1 + |
11 |
man/openrc-run.8 | 2 ++ |
12 |
src/librc/librc.c | 4 ++++ |
13 |
src/librc/rc.h.in | 1 + |
14 |
4 files changed, 8 insertions(+) |
15 |
|
16 |
diff --git a/etc/rc.conf.Linux b/etc/rc.conf.Linux |
17 |
index f04f96e..0865075 100644 |
18 |
--- a/etc/rc.conf.Linux |
19 |
+++ b/etc/rc.conf.Linux |
20 |
@@ -3,6 +3,7 @@ |
21 |
|
22 |
# This is the subsystem type. Valid options on Linux: |
23 |
# "" - nothing special |
24 |
+# "docker" - Docker container manager |
25 |
# "lxc" - Linux Containers |
26 |
# "openvz" - Linux OpenVZ |
27 |
# "prefix" - Prefix |
28 |
|
29 |
diff --git a/man/openrc-run.8 b/man/openrc-run.8 |
30 |
index 12c1919..9e0e776 100644 |
31 |
--- a/man/openrc-run.8 |
32 |
+++ b/man/openrc-run.8 |
33 |
@@ -223,6 +223,8 @@ Same as -jail, but for VServer systems. |
34 |
Same as -jail, but for Xen DOM0 systems. |
35 |
.It Dv -xenu |
36 |
Same as -jail, but for Xen DOMU systems. |
37 |
+.It Dv -docker |
38 |
+Same as -jail, but for docker systems. |
39 |
.El |
40 |
.El |
41 |
.Pp |
42 |
|
43 |
diff --git a/src/librc/librc.c b/src/librc/librc.c |
44 |
index 5e5de8d..cad8033 100644 |
45 |
--- a/src/librc/librc.c |
46 |
+++ b/src/librc/librc.c |
47 |
@@ -269,6 +269,8 @@ rc_sys(void) |
48 |
return RC_SYS_LXC; |
49 |
if (strcmp(systype, RC_SYS_SYSTEMD_NSPAWN) == 0) |
50 |
return RC_SYS_SYSTEMD_NSPAWN; |
51 |
+ if (strcmp(systype, RC_SYS_DOCKER) == 0) |
52 |
+ return RC_SYS_DOCKER; |
53 |
} |
54 |
if (exists("/proc/xen")) { |
55 |
if (file_regex("/proc/xen/capabilities", "control_d")) |
56 |
@@ -288,6 +290,8 @@ rc_sys(void) |
57 |
return RC_SYS_LXC; |
58 |
else if (file_regex("/proc/1/environ", "container=systemd-nspawn")) |
59 |
return RC_SYS_SYSTEMD_NSPAWN; |
60 |
+ else if (file_regex("/proc/1/environ", "container=docker")) |
61 |
+ return RC_SYS_DOCKER; |
62 |
#endif |
63 |
|
64 |
return NULL; |
65 |
|
66 |
diff --git a/src/librc/rc.h.in b/src/librc/rc.h.in |
67 |
index 141ecb9..360c26a 100644 |
68 |
--- a/src/librc/rc.h.in |
69 |
+++ b/src/librc/rc.h.in |
70 |
@@ -329,6 +329,7 @@ bool rc_service_daemons_crashed(const char *); |
71 |
/*! @name System types |
72 |
* OpenRC can support some special sub system types, normally virtualization. |
73 |
* Some services cannot work in these systems, or we do something else. */ |
74 |
+#define RC_SYS_DOCKER "DOCKER" |
75 |
#define RC_SYS_JAIL "JAIL" |
76 |
#define RC_SYS_OPENVZ "OPENVZ" |
77 |
#define RC_SYS_LXC "LXC" |