¿Alguna idea de por qué no puedo ejecutar Docker usando Airflow?
El mismo comando docker funciona bien desde la terminal usando el usuario que ejecuta airflow. Por lo tanto, no hay problema de permisos en el lado de Linux.
Pero cuando lo pones en Airflow dag, se queja
docker: Obtuve el permiso denegado al intentar conectarme al socket del demonio Docker en unix:///var/run/docker.sock: Publicar http://%2Fvar%2Frun%2Fdocker.sock/v1.39/containers/create : marque unix /var/run/docker.sock: connect: permiso denegado.
El comando es simplemente docker run --rm -v /data:/data:ro docker_image mycommand . Está envuelto dentro de un subproceso de python, por lo que no puedo usar el operador de la ventana acoplable.
Tenga en cuenta que este no es el mismo problema con la pregunta: ¿Cómo solucionar "dial unix /var/run/docker.sock: connect: permiso denegado" cuando los permisos de grupo parecen correctos? Allí hay un problema de permiso de Linux, ya que no puede ejecutar el comando de ejecución de la docker run . Aquí el problema es más con Airflow, creo.
Enfrentó un problema similar. Lo solucioné cambiando el propietario_predeterminado (predeterminado = flujo de aire) en airflow.cfg al usuario que tiene permiso para acceder a la ventana acoplable (es decir, el nombre de usuario que pertenece al grupo de la ventana acoplable).
Curiosamente, pasar el propietario en 'default_args' en la definición de DAG no parecía funcionar
Parece que el motivo está en los derechos de acceso a /var/run/docker.sock. Para el entorno de desarrollo, puede hacer:
docker exec -ti -u root <container> bash sudo chmod 777 /var/run/docker.sock