summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid <david0@users.noreply.github.com>2022-07-29 20:04:47 +0200
committerGitHub <noreply@github.com>2022-07-29 14:04:47 -0400
commitd69de54d7ce967ecd48db50ceecf1a700e84d7eb (patch)
treedeb9dab465f9da9642dcb515c48f6e02aa406474
parent1a4cacdfb63f0fbf2299962732c75484c24ad8b0 (diff)
downloaddocker-py-d69de54d7ce967ecd48db50ceecf1a700e84d7eb.tar.gz
api: add cgroupns option to container create (#2930)
Signed-off-by: David Otto <ottodavid@gmx.net>
-rw-r--r--docker/models/containers.py6
-rw-r--r--docker/types/containers.py6
-rw-r--r--tests/unit/models_containers_test.py2
3 files changed, 13 insertions, 1 deletions
diff --git a/docker/models/containers.py b/docker/models/containers.py
index 7769ed0..313d47d 100644
--- a/docker/models/containers.py
+++ b/docker/models/containers.py
@@ -553,6 +553,11 @@ class ContainerCollection(Collection):
``["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 @@ RUN_HOST_CONFIG_KWARGS = [
'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 f1b60b2..84df0f7 100644
--- a/docker/types/containers.py
+++ b/docker/types/containers.py
@@ -272,7 +272,8 @@ class HostConfig(dict):
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 @@ class HostConfig(dict):
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 e4ee074..101708e 100644
--- a/tests/unit/models_containers_test.py
+++ b/tests/unit/models_containers_test.py
@@ -39,6 +39,7 @@ class ContainerCollectionTest(unittest.TestCase):
cap_add=['foo'],
cap_drop=['bar'],
cgroup_parent='foobar',
+ cgroupns='host',
cpu_period=1,
cpu_quota=2,
cpu_shares=5,
@@ -135,6 +136,7 @@ class ContainerCollectionTest(unittest.TestCase):
'BlkioWeight': 2,
'CapAdd': ['foo'],
'CapDrop': ['bar'],
+ 'CgroupnsMode': 'host',
'CgroupParent': 'foobar',
'CpuPeriod': 1,
'CpuQuota': 2,