diff --git a/docker/utils/utils.py b/docker/utils/utils.py index 45adf3b9..823894c3 100644 --- a/docker/utils/utils.py +++ b/docker/utils/utils.py @@ -735,9 +735,9 @@ def create_host_config(binds=None, port_bindings=None, lxc_conf=None, host_config['ShmSize'] = shm_size - if pid_mode not in (None, 'host'): - raise host_config_value_error('pid_mode', pid_mode) - elif pid_mode: + if pid_mode: + if version_lt(version, '1.24') and pid_mode != 'host': + raise host_config_value_error('pid_mode', pid_mode) host_config['PidMode'] = pid_mode if ipc_mode: diff --git a/tests/integration/api_container_test.py b/tests/integration/api_container_test.py index a5be6e76..f09e75ad 100644 --- a/tests/integration/api_container_test.py +++ b/tests/integration/api_container_test.py @@ -361,13 +361,6 @@ class CreateContainerTest(BaseAPIIntegrationTest): host_config = inspect['HostConfig'] self.assertIn('MemorySwappiness', host_config) - def test_create_host_config_exception_raising(self): - self.assertRaises(TypeError, - self.client.create_host_config, mem_swappiness='40') - - self.assertRaises(ValueError, - self.client.create_host_config, pid_mode='40') - def test_create_with_environment_variable_no_value(self): container = self.client.create_container( BUSYBOX, diff --git a/tests/unit/utils_test.py b/tests/unit/utils_test.py index 9166ed91..19d52c9f 100644 --- a/tests/unit/utils_test.py +++ b/tests/unit/utils_test.py @@ -205,6 +205,19 @@ class HostConfigTest(unittest.TestCase): version='1.24', isolation={'isolation': 'hyperv'} ) + def test_create_host_config_pid_mode(self): + with pytest.raises(ValueError): + create_host_config(version='1.23', pid_mode='baccab125') + + config = create_host_config(version='1.23', pid_mode='host') + assert config.get('PidMode') == 'host' + config = create_host_config(version='1.24', pid_mode='baccab125') + assert config.get('PidMode') == 'baccab125' + + def test_create_host_config_invalid_mem_swappiness(self): + with pytest.raises(TypeError): + create_host_config(version='1.24', mem_swappiness='40') + class UlimitTest(unittest.TestCase): def test_create_host_config_dict_ulimit(self):