docker - 通过 Apache Airflow 在 Python 子进程中运行 docker 命令的权限问题
问题描述
知道为什么我不能使用 Airflow 运行 docker 吗?
使用运行气流的用户,相同的 docker 命令可以从终端正常运行。所以Linux端没有权限问题。
但是当把它放入 Airflow dag 时,它会抱怨
docker:在尝试连接到 unix:///var/run/docker.sock 的 Docker 守护程序套接字时获得权限被拒绝:发布 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 操作符。
请注意,这与问题不同:当组权限似乎正确时,如何修复“dial unix /var/run/docker.sock: connect: permission denied”?
这是一个 linux 权限问题,因为它无法运行该docker run
命令。我认为,这里的问题更多在于气流。
解决方案
面临类似的问题。通过将 airflow.cfg 中的 default_owner(default=airflow) 更改为有权访问 docker 的用户(即属于 docker 组的用户名)来修复它。
有趣的是,在 DAG 定义中的“default_args”中传递所有者似乎不起作用
推荐阅读
- c# - 无法将类型“System.DateTime”隐式转换为“LearnScan.LearnUser.NullableDateTime”
- c# - 如何设置 .gitignore 文件以在版本控制中排除 bin/obj 文件
- vba - 使用 ADO 从 Access VBA 中检索用户成员资格以执行 LDAP 查询
- c# - 如何从 Outlook 获得正确的别名?
- swift - 隐式可选仅在 iPad 模拟器中崩溃。意外发现零
- dart - 如何动态对齐卡片中的文本?
- android - 如何在 Android Studio 中更新项目
- c# - 如何在 C# 桌面应用程序中从图像(Base64ToImage)转换 pdf 文件
- button - 希望制作一个不可见的按钮来放置响应式图像。我在#56065709 中找到了部分答案
- powershell - 为什么我们在这个例子中需要括号?