aboutsummaryrefslogtreecommitdiff
path: root/src/librc
diff options
context:
space:
mode:
Diffstat (limited to 'src/librc')
-rw-r--r--src/librc/librc.c4
-rw-r--r--src/librc/rc.h.in1
2 files changed, 5 insertions, 0 deletions
diff --git a/src/librc/librc.c b/src/librc/librc.c
index 5e5de8d8..cad80333 100644
--- a/src/librc/librc.c
+++ b/src/librc/librc.c
@@ -269,6 +269,8 @@ rc_sys(void)
return RC_SYS_LXC;
if (strcmp(systype, RC_SYS_SYSTEMD_NSPAWN) == 0)
return RC_SYS_SYSTEMD_NSPAWN;
+ if (strcmp(systype, RC_SYS_DOCKER) == 0)
+ return RC_SYS_DOCKER;
}
if (exists("/proc/xen")) {
if (file_regex("/proc/xen/capabilities", "control_d"))
@@ -288,6 +290,8 @@ rc_sys(void)
return RC_SYS_LXC;
else if (file_regex("/proc/1/environ", "container=systemd-nspawn"))
return RC_SYS_SYSTEMD_NSPAWN;
+ else if (file_regex("/proc/1/environ", "container=docker"))
+ return RC_SYS_DOCKER;
#endif
return NULL;
diff --git a/src/librc/rc.h.in b/src/librc/rc.h.in
index 141ecb97..360c26a1 100644
--- a/src/librc/rc.h.in
+++ b/src/librc/rc.h.in
@@ -329,6 +329,7 @@ bool rc_service_daemons_crashed(const char *);
/*! @name System types
* OpenRC can support some special sub system types, normally virtualization.
* Some services cannot work in these systems, or we do something else. */
+#define RC_SYS_DOCKER "DOCKER"
#define RC_SYS_JAIL "JAIL"
#define RC_SYS_OPENVZ "OPENVZ"
#define RC_SYS_LXC "LXC"