You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Airflow DockerOperator使用mounts参数报意外关键字参数错误怎么解决

问题原因

这个报错和SSD挂载的业务逻辑无关,是依赖包版本不兼容导致的:
错误栈里的TypeError: __init__() got an unexpected keyword argument 'mounts'说明你Airflow运行环境安装的Docker Python SDK版本过低,旧版本的SDK中HostConfig构造函数不支持mounts参数,只有2.0及以上版本的Docker SDK才支持该参数。

解决方案

你可以选择以下任意一种方案解决:

方案1:升级Docker Python SDK

直接给Airflow对应的Python环境升级Docker SDK即可,执行命令:

pip install -U docker

注意你日志里显示Airflow运行在Python3.6环境下,需要确保升级的是该Python3.6环境下的docker包。升级完成后重新运行DAG即可,原代码不需要修改。

方案2:替换为旧版兼容的volumes参数

如果你无法升级依赖包,可以把mounts参数替换为旧版SDK支持的volumes参数,不需要导入docker.types.Mount,修改后的代码片段如下:

# 删掉原来的Mount对象定义,直接配置volumes参数
extract = DockerOperator(
api_version="auto",
task_id='docker_extract',
image='registry.gitlab.com/url/of/gitlab:a24a3f05',
container_name='extract-test',
# 替换mounts为volumes
volumes=['/media/filip/external-ssd:/external-ssd'],
auto_remove = True,
force_pull = False,
mount_tmp_dir=False,
command='python3 rgb_image_extraction.py --bagfile /external-ssd/2021-09-01-13-17-10.bag --output_dir /external-ssd/airflow --camera_topic /kirby1/vm0/stereo/left/color/image_rect --every_n_img 20 --timestamp_as_name',
docker_conn_id='gitlab_registry',
dag=dag
)

额外注意事项

解决版本兼容问题后,还需要确认Airflow运行的用户对/media/filip/external-ssd路径有读写权限,否则挂载后也会出现文件读写报错。

内容的提问来源于stack exchange,提问作者filip juric

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 21:48:03