Skip to content

Commit a504a82

Browse files
authored
Add ipc_mode for DockerOperator (#27553)
1 parent bb6fce3 commit a504a82

File tree

2 files changed

+8
-0
lines changed

2 files changed

+8
-0
lines changed

airflow/providers/docker/operators/docker.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,7 @@ class DockerOperator(BaseOperator):
149149
:param log_opts_max_file: The maximum number of log files that can be present.
150150
If rolling the logs creates excess files, the oldest file is removed.
151151
Only effective when max-size is also set. A positive integer. Defaults to 1.
152+
:param ipc_mode: Set the IPC mode for the container.
152153
"""
153154

154155
template_fields: Sequence[str] = ("image", "command", "environment", "env_file", "container_name")
@@ -202,6 +203,7 @@ def __init__(
202203
device_requests: list[DeviceRequest] | None = None,
203204
log_opts_max_size: str | None = None,
204205
log_opts_max_file: str | None = None,
206+
ipc_mode: str | None = None,
205207
**kwargs,
206208
) -> None:
207209
super().__init__(**kwargs)
@@ -261,6 +263,7 @@ def __init__(
261263
self.device_requests = device_requests
262264
self.log_opts_max_size = log_opts_max_size
263265
self.log_opts_max_file = log_opts_max_file
266+
self.ipc_mode = ipc_mode
264267

265268
def get_hook(self) -> DockerHook:
266269
"""
@@ -332,6 +335,7 @@ def _run_image_with_mounts(self, target_mounts, add_tmp_variable: bool) -> list[
332335
privileged=self.privileged,
333336
device_requests=self.device_requests,
334337
log_config=LogConfig(config=docker_log_config),
338+
ipc_mode=self.ipc_mode,
335339
),
336340
image=self.image,
337341
user=self.user,

tests/providers/docker/operators/test_docker.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,7 @@ def test_execute(self):
152152
privileged=False,
153153
device_requests=[DeviceRequest(count=-1, capabilities=[["gpu"]])],
154154
log_config=LogConfig(config={"max-size": "10m", "max-file": "5"}),
155+
ipc_mode=None,
155156
)
156157
self.tempdir_mock.assert_called_once_with(dir="/host/airflow", prefix="airflowtmp")
157158
self.client_mock.images.assert_called_once_with(name="ubuntu:latest")
@@ -224,6 +225,7 @@ def test_execute_no_temp_dir(self):
224225
privileged=False,
225226
device_requests=None,
226227
log_config=LogConfig(config={}),
228+
ipc_mode=None,
227229
)
228230
self.tempdir_mock.assert_not_called()
229231
self.client_mock.images.assert_called_once_with(name="ubuntu:latest")
@@ -328,6 +330,7 @@ def test_execute_fallback_temp_dir(self):
328330
privileged=False,
329331
device_requests=None,
330332
log_config=LogConfig(config={}),
333+
ipc_mode=None,
331334
),
332335
call(
333336
mounts=[
@@ -345,6 +348,7 @@ def test_execute_fallback_temp_dir(self):
345348
privileged=False,
346349
device_requests=None,
347350
log_config=LogConfig(config={}),
351+
ipc_mode=None,
348352
),
349353
]
350354
)

0 commit comments

Comments
 (0)