diff --git a/docker/models/containers.py b/docker/models/containers.py index 7769ed091..313d47d6f 100644 --- a/docker/models/containers.py +++ b/docker/models/containers.py @@ -553,6 +553,11 @@ def run(self, image, command=None, stdout=True, stderr=False, ``["SYS_ADMIN", "MKNOD"]``. cap_drop (list of str): Drop kernel capabilities. cgroup_parent (str): Override the default parent cgroup. + cgroupns (str): Override the default cgroup namespace mode for the + container. One of: + - ``private`` the container runs in its own private cgroup + namespace. + - ``host`` use the host system's cgroup namespace. cpu_count (int): Number of usable CPUs (Windows only). cpu_percent (int): Usable percentage of the available CPUs (Windows only). @@ -1002,6 +1007,7 @@ def prune(self, filters=None): 'cap_add', 'cap_drop', 'cgroup_parent', + 'cgroupns', 'cpu_count', 'cpu_percent', 'cpu_period', diff --git a/docker/types/containers.py b/docker/types/containers.py index f1b60b2d2..84df0f7e6 100644 --- a/docker/types/containers.py +++ b/docker/types/containers.py @@ -272,7 +272,8 @@ def __init__(self, version, binds=None, port_bindings=None, volume_driver=None, cpu_count=None, cpu_percent=None, nano_cpus=None, cpuset_mems=None, runtime=None, mounts=None, cpu_rt_period=None, cpu_rt_runtime=None, - device_cgroup_rules=None, device_requests=None): + device_cgroup_rules=None, device_requests=None, + cgroupns=None): if mem_limit is not None: self['Memory'] = parse_bytes(mem_limit) @@ -646,6 +647,9 @@ def __init__(self, version, binds=None, port_bindings=None, req = DeviceRequest(**req) self['DeviceRequests'].append(req) + if cgroupns: + self['CgroupnsMode'] = cgroupns + def host_config_type_error(param, param_value, expected): error_msg = 'Invalid type for {0} param: expected {1} but found {2}' diff --git a/tests/unit/models_containers_test.py b/tests/unit/models_containers_test.py index e4ee074d8..101708ebb 100644 --- a/tests/unit/models_containers_test.py +++ b/tests/unit/models_containers_test.py @@ -39,6 +39,7 @@ def test_create_container_args(self): cap_add=['foo'], cap_drop=['bar'], cgroup_parent='foobar', + cgroupns='host', cpu_period=1, cpu_quota=2, cpu_shares=5, @@ -135,6 +136,7 @@ def test_create_container_args(self): 'BlkioWeight': 2, 'CapAdd': ['foo'], 'CapDrop': ['bar'], + 'CgroupnsMode': 'host', 'CgroupParent': 'foobar', 'CpuPeriod': 1, 'CpuQuota': 2,