我正在处理一个项目,使用Apache Airflow来调度不同的脚本。
Airflow本身和设置DAG的脚本都打包在一个Dockerfile中。每个DAG的核心部分是一个dockeroperator,它在主机系统上启动适当的容器。(注意:要求每个Airflow及其调度的脚本都有一个Dockerfile)
目前,在主机系统上运行的docker具有root权限,如此建议此处。在启动我的Airflow容器时,我使用-v /var/run/docker.sock:/var/run/docker.sock 创建了一个卷。在这个配置下,Airflow可以按预期且无误地启动容器。
然而,因为以root权限运行docker似乎不安全,所以我尝试了docker的rootless模式(https://docs.docker.com/engine/security/rootless/)。
在设置后,所有容器在主机上单独工作得非常好。只有在运行Airflow容器时才会出现问题。
错误消息很长,所以我只发布最后一行:
Airflow本身和设置DAG的脚本都打包在一个Dockerfile中。每个DAG的核心部分是一个dockeroperator,它在主机系统上启动适当的容器。(注意:要求每个Airflow及其调度的脚本都有一个Dockerfile)
目前,在主机系统上运行的docker具有root权限,如此建议此处。在启动我的Airflow容器时,我使用-v /var/run/docker.sock:/var/run/docker.sock 创建了一个卷。在这个配置下,Airflow可以按预期且无误地启动容器。
然而,因为以root权限运行docker似乎不安全,所以我尝试了docker的rootless模式(https://docs.docker.com/engine/security/rootless/)。
在设置后,所有容器在主机上单独工作得非常好。只有在运行Airflow容器时才会出现问题。
错误消息很长,所以我只发布最后一行:
docker.errors.DockerException: Error while fetching server API version: ('Connection aborted.', PermissionError(13, 'Permission denied'))
这个错误和之前我的整个设置的早期迭代中没有创建上面提到的卷时得到的错误相同,因此问题可能与Airflow容器中的docker守护程序没有正确权限有关,但我不知道如何修复它。