【发布时间】:2019-11-08 22:40:07
【问题描述】:
知道为什么我不能使用 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 命令。我认为这里的问题更多在于气流。
【问题讨论】:
-
您能为此添加代码sn-p,也可以添加成功条件
-
@mchawre 提到的问题是 linux 权限问题。我遇到的问题是 Apache Airflow。
-
运行 Airflow 的用户无权访问
/var/run/docker.sock。有几种方法可以解决这个问题,但我建议在运行 docker 的 Airflow 操作上使用run_as_user模拟更高权限的用户:airflow.apache.org/security.html#impersonation -
@ArtGillespie Airflow 正在运行的用户有权运行 docker 命令。 Linux 端没有权限问题。