Kaydet (Commit) 2ef02df2 authored tarafından Joffrey F's avatar Joffrey F Kaydeden (comit) GitHub

Merge pull request #1168 from docker/aiden0z-master

Support pids_limit in HostConfig
...@@ -623,7 +623,7 @@ def create_host_config(binds=None, port_bindings=None, lxc_conf=None, ...@@ -623,7 +623,7 @@ def create_host_config(binds=None, port_bindings=None, lxc_conf=None,
device_write_iops=None, oom_kill_disable=False, device_write_iops=None, oom_kill_disable=False,
shm_size=None, sysctls=None, version=None, tmpfs=None, shm_size=None, sysctls=None, version=None, tmpfs=None,
oom_score_adj=None, dns_opt=None, cpu_shares=None, oom_score_adj=None, dns_opt=None, cpu_shares=None,
cpuset_cpus=None, userns_mode=None): cpuset_cpus=None, userns_mode=None, pids_limit=None):
host_config = {} host_config = {}
...@@ -904,6 +904,13 @@ def create_host_config(binds=None, port_bindings=None, lxc_conf=None, ...@@ -904,6 +904,13 @@ def create_host_config(binds=None, port_bindings=None, lxc_conf=None,
raise host_config_value_error("userns_mode", userns_mode) raise host_config_value_error("userns_mode", userns_mode)
host_config['UsernsMode'] = userns_mode host_config['UsernsMode'] = userns_mode
if pids_limit:
if not isinstance(pids_limit, int):
raise host_config_type_error('pids_limit', pids_limit, 'int')
if version_lt(version, '1.23'):
raise host_config_version_error('pids_limit', '1.23')
host_config["PidsLimit"] = pids_limit
return host_config return host_config
......
...@@ -111,11 +111,12 @@ for example: ...@@ -111,11 +111,12 @@ for example:
CPU period. CPU period.
* cpu_shares (int): CPU shares (relative weight) * cpu_shares (int): CPU shares (relative weight)
* cpuset_cpus (str): CPUs in which to allow execution (0-3, 0,1) * cpuset_cpus (str): CPUs in which to allow execution (0-3, 0,1)
* blkio_weight: Block IO weight (relative weight), accepts a weight value between 10 and 1000. * blkio_weight: Block IO weight (relative weight), accepts a weight value
between 10 and 1000.
* blkio_weight_device: Block IO weight (relative device weight) in the form of: * blkio_weight_device: Block IO weight (relative device weight) in the form of:
`[{"Path": "device_path", "Weight": weight}]` `[{"Path": "device_path", "Weight": weight}]`
* device_read_bps: Limit read rate (bytes per second) from a device in the form of: * device_read_bps: Limit read rate (bytes per second) from a device in the
`[{"Path": "device_path", "Rate": rate}]` form of: `[{"Path": "device_path", "Rate": rate}]`
* device_write_bps: Limit write rate (bytes per second) from a device. * device_write_bps: Limit write rate (bytes per second) from a device.
* device_read_iops: Limit read rate (IO per second) from a device. * device_read_iops: Limit read rate (IO per second) from a device.
* device_write_iops: Limit write rate (IO per second) from a device. * device_write_iops: Limit write rate (IO per second) from a device.
...@@ -128,6 +129,7 @@ for example: ...@@ -128,6 +129,7 @@ for example:
* sysctls (dict): Kernel parameters to set in the container. * sysctls (dict): Kernel parameters to set in the container.
* userns_mode (str): Sets the user namespace mode for the container when user * userns_mode (str): Sets the user namespace mode for the container when user
namespace remapping option is enabled. Supported values are: `host` namespace remapping option is enabled. Supported values are: `host`
* pids_limit (int): Tune a container’s pids limit. Set -1 for unlimited.
**Returns** (dict) HostConfig dictionary **Returns** (dict) HostConfig dictionary
......
...@@ -185,6 +185,15 @@ class HostConfigTest(base.BaseTestCase): ...@@ -185,6 +185,15 @@ class HostConfigTest(base.BaseTestCase):
InvalidVersion, lambda: create_host_config( InvalidVersion, lambda: create_host_config(
version='1.20', kernel_memory=67108864)) version='1.20', kernel_memory=67108864))
def test_create_host_config_with_pids_limit(self):
config = create_host_config(version='1.23', pids_limit=1024)
self.assertEqual(config.get('PidsLimit'), 1024)
with pytest.raises(InvalidVersion):
create_host_config(version='1.22', pids_limit=1024)
with pytest.raises(TypeError):
create_host_config(version='1.22', pids_limit='1024')
class UlimitTest(base.BaseTestCase): class UlimitTest(base.BaseTestCase):
def test_create_host_config_dict_ulimit(self): def test_create_host_config_dict_ulimit(self):
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment