From 9fedb3b40b5983372b2c2de29dfe321c6dfaadf4 Mon Sep 17 00:00:00 2001 From: William Hubbs Date: Tue, 1 Dec 2015 18:20:02 -0600 Subject: [PATCH] Add detection for docker containers --- etc/rc.conf.Linux | 1 + man/openrc-run.8 | 2 ++ src/librc/librc.c | 4 ++++ src/librc/rc.h.in | 1 + 4 files changed, 8 insertions(+) diff --git a/etc/rc.conf.Linux b/etc/rc.conf.Linux index f04f96ef..0865075b 100644 --- a/etc/rc.conf.Linux +++ b/etc/rc.conf.Linux @@ -3,6 +3,7 @@ # This is the subsystem type. Valid options on Linux: # "" - nothing special +# "docker" - Docker container manager # "lxc" - Linux Containers # "openvz" - Linux OpenVZ # "prefix" - Prefix diff --git a/man/openrc-run.8 b/man/openrc-run.8 index 12c1919b..9e0e7763 100644 --- a/man/openrc-run.8 +++ b/man/openrc-run.8 @@ -223,6 +223,8 @@ Same as -jail, but for VServer systems. Same as -jail, but for Xen DOM0 systems. .It Dv -xenu Same as -jail, but for Xen DOMU systems. +.It Dv -docker +Same as -jail, but for docker systems. .El .El .Pp 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"