当前位置: 首页 > 知识库问答 >
问题:

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

裘安阳
2023-03-14

知道为什么我不能使用气流运行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个答案

钱锦
2023-03-14

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

docker exec -ti -u root <container> bash
sudo chmod 777 /var/run/docker.sock
孙成化
2023-03-14

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

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

 类似资料:
  • 问题内容: 我试图打开从一个Linux盒到另一个Linux盒的SSH管道,运行一些shell命令,然后关闭SSH。 我无法控制任何一个盒子上的包装,所以像织物或paramiko之类的东西就不成问题了。 我很幸运使用下面的代码来运行一个bash命令,在本例中为“正常运行时间”,但不确定如何再发出一个命令。我期望的是: 我缺少子流程模块的哪一部分? 谢谢 问题答案: 基本上,如果您调用子进程,它将创建

  • 问题内容: 我正在尝试通过NodeJS子进程在Windows上运行命令: 当它调用时,它将其写入描述符,但是此时我如何触发响应?当您实际在命令提示符下键入命令时,如何发送“输入”键信号?目前我没有收到任何回应。 问题答案: 发送换行符将执行该命令。将退出外壳。 我在OSX上修改了该示例以使其与bash一起使用。 输出将是:

  • 问题内容: 如果我在bash中运行,结果将是两个命令都运行。但是,如果我使用子进程,则将运行第一个命令,打印出该行其余部分的全部内容。下面的代码回显而不是,我如何才能运行两个命令? 问题答案: 您必须在子进程中使用shell = True,而不能使用shlex.split: 返回:

  • 问题内容: 我一直在寻找通过Linux中的命令行查找具有相同名称的正在运行的进程数的最佳方法。例如,如果我想查找正在运行的bash进程数并获得“ 5”。目前,我有一个脚本执行’pidof’,然后对标记化字符串进行计数。这工作正常,但我想知道是否有更好的方法可以完全通过命令行来完成。在此先感谢您的帮助。 问题答案: 在可用的系统上,该选项返回与给定名称匹配的进程数的计数 请注意,这是-style匹配

  • 我正在使用python SDK包从python运行docker。下面是我试图使用python包运行的docker命令:

  • 一些注意事项: 1。我最初使用的TestNG jar来自java项目中的maven repo。下面的所有方法都是用maven testNG jar和新的TestNG6.9.12下载进行测试的。 2。我可以从Eclipse中运行这个文件。只有当我尝试从命令行运行时才有问题。 3。最终目标是通过javafx应用程序按钮触发命令行来运行测试。如果提供的解决方案避免在cmd中键入绝对路径,因为应用程序将在