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

时间:2019-06-26 23:15:27

标签: docker airflow

有人知道为什么我不能使用Airflow运行docker吗?

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

但是将其放入Airflow dag时会抱怨

  

docker:尝试连接到Docker时获得的权限被拒绝   unix:///var/run/docker.sock上的守护程序套接字:发布   http://%2Fvar%2Frun%2Fdocker.sock/v1.39/containers/create:拨打Unix   /var/run/docker.sock:连接:权限被拒绝。

该命令就是docker run --rm -v /data:/data:ro docker_image mycommand。它包装在python子进程中,所以我不能使用docker运算符。

请注意,此问题与以下问题不同:How to fix "dial unix /var/run/docker.sock: connect: permission denied" when group permissions seem correct? 这是一个Linux权限问题,因为它无法运行docker run命令。我认为,这里的问题更多是与气流有关。

1 个答案:

答案 0 :(得分:2)

遇到类似问题。 通过将airflow.cfg中的default_owner(default = airflow)更改为有权访问docker(即属于docker组的用户名)的用户来解决此问题。

在DAG定义的“ default_args”中有趣地传递所有者似乎无效