使用Airflow官方docker-compose启动时触发FileNotFoundError报错
问题描述
在存放Apache Airflow官方标准未修改版docker-compose.yaml的目录下,执行docker-compose -f docker-compose.yaml up -d命令启动服务时,控制台输出报错,完整报错信息如下:
(base) ruslanpilipyuk@MacBook-Pro-Ruslan airflow-local % docker-compose -f docker-compose.yaml up -d WARNING: The AIRFLOW_UID variable is not set. Defaulting to a blank string. Traceback (most recent call last): File "urllib3/connectionpool.py", line 670, in urlopen File "urllib3/connectionpool.py", line 392, in _make_request File "http/client.py", line 1255, in request File "http/client.py", line 1301, in _send_request File "http/client.py", line 1250, in endheaders File "http/client.py", line 1010, in _send_output File "http/client.py", line 950, in send File "docker/transport/unixconn.py", line 43, in connect FileNotFoundError: [Errno 2] No such file or directory During handling of the above exception, another exception occurred: Traceback (most recent call last): File "requests/adapters.py", line 439, in send File "urllib3/connectionpool.py", line 726, in urlopen File "urllib3/util/retry.py", line 410, in increment File "urllib3/packages/six.py", line 734, in reraise File "urllib3/connectionpool.py", line 670, in urlopen File "urllib3/connectionpool.py", line 392, in _make_request File "http/client.py", line 1255, in request File "http/client.py", line 1301, in _send_request File "http/client.py", line 1250, in endheaders File "http/client.py", line 1010, in _send_output File "http/client.py", line 950, in send File "docker/transport/unixconn.py", line 43, in connect urllib3.exceptions.ProtocolError: ('Connection aborted.', FileNotFoundError(2, 'No such file or directory')) During handling of the above exception, another exception occurred: Traceback (most recent call last): File "docker/api/client.py", line 214, in _retrieve_server_version File "docker/api/daemon.py", line 181, in version File "docker/utils/decorators.py", line 46, in inner File "docker/api/client.py", line 237, in _get File "requests/sessions.py", line 543, in get File "requests/sessions.py", line 530, in request File "requests/sessions.py", line 643, in send File "requests/adapters.py", line 498, in send requests.exceptions.ConnectionError: ('Connection aborted.', FileNotFoundError(2, 'No such file or directory')) During handling of the above exception, another exception occurred: Traceback (most recent call last): File "docker-compose", line 3, in <module> File "compose/cli/main.py", line 81, in main File "compose/cli/main.py", line 200, in perform_command File "compose/cli/command.py", line 60, in project_from_options File "compose/cli/command.py", line 152, in get_project File "compose/cli/docker_client.py", line 41, in get_client File "compose/cli/docker_client.py", line 170, in docker_client File "docker/api/client.py", line 197, in __init__ File "docker/api/client.py", line 221, in _retrieve_server_version docker.errors.DockerException: Error while fetching server API version: ('Connection aborted.', FileNotFoundError(2, 'No such file or directory')) [2128] Failed to execute script docker-compose
故障原因
报错包含两个独立问题:
- 核心启动失败原因:本地Docker守护进程(Docker daemon)未启动,docker-compose无法通过本地Unix套接字连接Docker服务端,触发文件不存在、连接中断异常,最终拉取Docker服务端版本信息失败,脚本执行终止。
- 前置警告原因:Airflow官方docker-compose配置依赖
AIRFLOW_UID环境变量指定容器内运行用户的UID,当前执行环境未配置该变量,触发默认空值警告。
解决步骤
- 启动本地Docker服务:Mac设备直接启动Docker Desktop应用,等待顶部菜单栏的Docker图标停止加载动画、显示为稳定运行状态后,执行
docker info命令验证,若命令正常返回Docker版本、存储驱动等配置信息,说明Docker服务连接正常。 - 配置Airflow所需环境变量:在
docker-compose.yaml所在目录下执行以下命令,自动生成本地用户UID对应的环境变量配置文件,消除UID未设置的警告:echo -e "AIRFLOW_UID=$(id -u)" > .env - 重新执行启动命令:再次运行原启动命令即可正常拉起Airflow服务:
docker-compose -f docker-compose.yaml up -d
内容的提问来源于stack exchange,提问作者Ruslan Pylypyuk
相关产品推荐
相关产品推荐

