Skip to content

Commit 8924319

Browse files
committed
create_host_config: allow setting oom_kill_disable
Signed-off-by: Michael Schubert <[email protected]>
1 parent 881e24c commit 8924319

File tree

3 files changed

+17
-2
lines changed

3 files changed

+17
-2
lines changed

docker/utils/utils.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -470,7 +470,7 @@ def parse_bytes(s):
470470

471471

472472
def create_host_config(
473-
binds=None, port_bindings=None, lxc_conf=None,
473+
binds=None, port_bindings=None, lxc_conf=None, oom_kill_disable=False,
474474
publish_all_ports=False, links=None, privileged=False,
475475
dns=None, dns_search=None, volumes_from=None, network_mode=None,
476476
restart_policy=None, cap_add=None, cap_drop=None, devices=None,
@@ -511,6 +511,13 @@ def create_host_config(
511511
if privileged:
512512
host_config['Privileged'] = privileged
513513

514+
if oom_kill_disable:
515+
if not version_gte(version, '1.19'):
516+
raise errors.InvalidVersion(
517+
'oom_kill_disable param not supported for API version < 1.19'
518+
)
519+
host_config['OomKillDisable'] = oom_kill_disable
520+
514521
if publish_all_ports:
515522
host_config['PublishAllPorts'] = publish_all_ports
516523

docs/hostconfig.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ for example:
7171
* port_bindings (dict): Port bindings. See [Port bindings](port-bindings.md)
7272
for more information.
7373
* lxc_conf (dict): LXC config
74+
* oom_kill_disable (bool): Whether to disable OOM killer
7475
* publish_all_ports (bool): Whether to publish all ports to the host
7576
* links (dict or list of tuples): either as a dictionary mapping name to alias
7677
or as a list of `(name, alias)` tuples

tests/unit/utils_test.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313

1414
from docker.client import Client
1515
from docker.constants import DEFAULT_DOCKER_API_VERSION
16-
from docker.errors import DockerException
16+
from docker.errors import DockerException, InvalidVersion
1717
from docker.utils import (
1818
parse_repository_tag, parse_host, convert_filters, kwargs_from_env,
1919
create_host_config, Ulimit, LogConfig, parse_bytes, parse_env_file,
@@ -62,6 +62,13 @@ def test_create_host_config_with_cpu_period(self):
6262
config = create_host_config(version='1.20', cpu_period=1999)
6363
self.assertEqual(config.get('CpuPeriod'), 1999)
6464

65+
def test_create_host_config_with_oom_kill_disable(self):
66+
config = create_host_config(version='1.20', oom_kill_disable=True)
67+
self.assertEqual(config.get('OomKillDisable'), True)
68+
self.assertRaises(
69+
InvalidVersion, lambda: create_host_config(version='1.18.3',
70+
oom_kill_disable=True))
71+
6572

6673
class UlimitTest(base.BaseTestCase):
6774
def test_create_host_config_dict_ulimit(self):

0 commit comments

Comments
 (0)