diff options
author | Christian Poessinger <christian@poessinger.com> | 2022-11-05 19:47:42 +0100 |
---|---|---|
committer | Christian Poessinger <christian@poessinger.com> | 2022-11-05 19:47:42 +0100 |
commit | acf2c24f8eec0918ca419db68196c76dc827f197 (patch) | |
tree | a302febedc014a124b2d94b33830c5a79c77ef19 | |
parent | 6c0473efd27205d6f51ee1726b46f5898b723cd3 (diff) | |
download | vyos-1x-acf2c24f8eec0918ca419db68196c76dc827f197.tar.gz vyos-1x-acf2c24f8eec0918ca419db68196c76dc827f197.zip |
container: T4802: support per container shared-memory size configuration
Size of /dev/shm within a container can be defined via --shm-size when invoking
the container. Add corresponding CLI node.
-rw-r--r-- | interface-definitions/container.xml.in | 20 | ||||
-rwxr-xr-x | src/conf_mode/container.py | 5 |
2 files changed, 22 insertions, 3 deletions
diff --git a/interface-definitions/container.xml.in b/interface-definitions/container.xml.in index 51171d881..f84c94a40 100644 --- a/interface-definitions/container.xml.in +++ b/interface-definitions/container.xml.in @@ -111,7 +111,7 @@ </leafNode> <leafNode name="memory"> <properties> - <help>Constrain the memory available to a container</help> + <help>Memory (RAM) available to this container</help> <valueHelp> <format>u32:0</format> <description>Unlimited</description> @@ -127,6 +127,24 @@ </properties> <defaultValue>512</defaultValue> </leafNode> + <leafNode name="shared-memory"> + <properties> + <help>Shared memory available to this container</help> + <valueHelp> + <format>u32:0</format> + <description>Unlimited</description> + </valueHelp> + <valueHelp> + <format>u32:1-8192</format> + <description>Container memory in megabytes (MB)</description> + </valueHelp> + <constraint> + <validator name="numeric" argument="--range 0-8192"/> + </constraint> + <constraintErrorMessage>Container memory must be in range 0 to 8192 MB</constraintErrorMessage> + </properties> + <defaultValue>64</defaultValue> + </leafNode> <tagNode name="network"> <properties> <help>Attach user defined network to container</help> diff --git a/src/conf_mode/container.py b/src/conf_mode/container.py index 70d149f0d..8efeaed54 100755 --- a/src/conf_mode/container.py +++ b/src/conf_mode/container.py @@ -207,6 +207,7 @@ def verify(container): def generate_run_arguments(name, container_config): image = container_config['image'] memory = container_config['memory'] + shared_memory = container_config['shared_memory'] restart = container_config['restart'] # Add capability options. Should be in uppercase @@ -254,9 +255,9 @@ def generate_run_arguments(name, container_config): volume += f' -v {svol}:{dvol}' container_base_cmd = f'--detach --interactive --tty --replace {cap_add} ' \ - f'--memory {memory}m --memory-swap 0 --restart {restart} ' \ + f'--memory {memory}m --shm-size {shared_memory}m --memory-swap 0 --restart {restart} ' \ f'--name {name} {device} {port} {volume} {env_opt}' - + if 'allow_host_networks' in container_config: return f'{container_base_cmd} --net host {image}' |