diff --git a/docker/client.py b/docker/client.py index e4712c23c3..b038fb38ae 100644 --- a/docker/client.py +++ b/docker/client.py @@ -737,7 +737,7 @@ def start(self, container, binds=None, port_bindings=None, lxc_conf=None, dns=None, dns_search=None, volumes_from=None, network_mode=None, restart_policy=None, cap_add=None, cap_drop=None, devices=None, extra_hosts=None, read_only=None, pid_mode=None, ipc_mode=None, - security_opt=None, ulimits=None): + security_opt=None, ulimits=None, cgroup_parent=None): if utils.compare_version('1.10', self._version) < 0: if dns is not None: @@ -782,7 +782,8 @@ def start(self, container, binds=None, port_bindings=None, lxc_conf=None, cap_drop=cap_drop, volumes_from=volumes_from, devices=devices, network_mode=network_mode, restart_policy=restart_policy, extra_hosts=extra_hosts, read_only=read_only, pid_mode=pid_mode, - ipc_mode=ipc_mode, security_opt=security_opt, ulimits=ulimits + ipc_mode=ipc_mode, security_opt=security_opt, ulimits=ulimits, + cgroup_parent=cgroup_parent ) url = self._url("/containers/{0}/start".format(container)) diff --git a/docker/utils/utils.py b/docker/utils/utils.py index a714c97c4b..792025a605 100644 --- a/docker/utils/utils.py +++ b/docker/utils/utils.py @@ -390,7 +390,7 @@ def create_host_config( restart_policy=None, cap_add=None, cap_drop=None, devices=None, extra_hosts=None, read_only=None, pid_mode=None, ipc_mode=None, security_opt=None, ulimits=None, log_config=None, mem_limit=None, - memswap_limit=None + memswap_limit=None, cgroup_parent=None ): host_config = {} @@ -404,6 +404,9 @@ def create_host_config( memswap_limit = parse_bytes(memswap_limit) host_config['MemorySwap'] = memswap_limit + if cgroup_parent is not None: + host_config['CgroupParent'] = cgroup_parent + if pid_mode not in (None, 'host'): raise errors.DockerException( 'Invalid value for pid param: {0}'.format(pid_mode) diff --git a/tests/utils_test.py b/tests/utils_test.py index 1c8729ca00..b664a6e395 100644 --- a/tests/utils_test.py +++ b/tests/utils_test.py @@ -167,6 +167,10 @@ def test_logconfig_invalid_type(self): type=LogConfig.types.JSON, config='helloworld' )) + def test_set_cgroup_parent(self): + config = create_host_config(cgroup_parent="systemd.slice") + self.assertEqual("systemd.slice", config['CgroupParent']) + def test_resolve_repository_name(self): # docker hub library image self.assertEqual(