簡體   English   中英

使用 apache airflow docker 運算符和無根 Z05B6053C41A2130AFD66FC3B158BDA

[英]Using apache airflow docker operator with rootless docker

我正在開發一個項目,該項目使用 apache airflow 來安排不同的腳本。

Airflow 本身和設置 DAG 的腳本捆綁在一個 Dockerfile 中。 每個 DAG 的中心部分是一個 dockeroperator,它在主機系統上啟動相應的容器。
(注意:要求每個 airflow 及其調度的腳本每個都有一個 Dockerfile)

目前,主機系統上的 docker 具有此處建議的 root 權限。 在啟動我的 airflow 容器時,我使用-v /var/run/docker.sock:/var/run/docker.sock創建一個卷。 在此配置中,airflow 按預期啟動容器並且沒有問題。

However because running docker with root privileges seems unsafe I tried the rootless mode for docker ( https://docs.docker.com/engine/security/rootless/ ).

設置后,所有容器在主機上都可以正常工作。 只有當我運行 airflow 容器時,我才會遇到問題。

錯誤消息很長,所以我只發布最后一行: docker.errors.DockerException: Error while fetching server API version: ('Connection aborted.', PermissionError(13, 'Permission denied'))

此錯誤與我在整個設置的早期迭代中未創建上述卷時遇到的錯誤相同,因此該問題可能與 airflow 容器中的 docker 守護程序沒有正確的權限有關,但我沒有不知道如何解決這個問題。

您可以使用 docker compose 啟動整個設置。 A good starting point for the docker-compose file is the one given here: https://airflow.apache.org/docs/apache-airflow/stable/start/docker.html

您可以選擇默認 UID=50000 和 GID=0 或自定義 UID。 在主機上創建此 UID,創建一個 docker 組並將此用戶添加到該組。 然后將容器內的 airflow 用戶添加到該組中。 您可以通過添加在撰寫文件中執行此操作

group_add:
  - <docker GID>

筆記。 如果您使用自定義圖像並將用戶添加到 Dockerfile 中的 docker 組中,則它不起作用,因為這些設置被 docker compose startup.sh 覆蓋

此外,您必須將 docker.sock 文件掛載到容器中

volumes:
  - /var/run/docker.sock:/var/run/docker.sock

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM