提问者:小点点

通过Apache Airflow在Python子进程中运行docker命令的权限问题


知道为什么我不能使用气流运行docker吗?

使用运行气流的用户,相同的docker命令可以从终端正常运行。因此,Linux端没有权限问题。

但当把它放进气流dag时,它会抱怨

docker:尝试连接到位于的docker守护程序套接字时,权限被拒绝unix:///var/run/docker.sock:邮递http:///var/run/docker.sock/v1.39/containers/create:拨打unix/var/run/docker。sock:连接:权限被拒绝。

这个命令就是docker run--rm-v/data:/data:ro-docker\u image-mycommand。它被包装在python子进程中,所以我不能使用docker操作符。

注意,这与以下问题不同:当组权限看起来正确时,如何修复“拨号unix/var/run/docker.sock:连接:权限被拒绝”?这是一个linux权限问题,因为它无法运行docker run命令。我认为,这里的问题更多的是气流。


共2个答案

匿名用户

面临类似问题。通过更改气流中的default\u owner(默认值=气流),将其修复。cfg给有权访问docker的用户(即属于docker组的用户名)。

有趣的是,在DAG定义中的“default\u args”中传递所有者似乎不起作用

匿名用户

原因似乎在/var/run/docker的访问权限中。短袜对于开发环境,您可以执行以下操作:

docker exec -ti -u root <container> bash
sudo chmod 777 /var/run/docker.sock