2017-04-13 104 views
1

我在EC2實例上運行氣流,並且正在安排啓動碼頭集裝箱的一些任務。我怎麼做?我需要在我的氣流容器上安裝碼頭嗎?下一步是什麼?我有一個yaml文件,用於旋轉容器,它來自於puckel/airflow泊塢窗圖片運行碼頭集裝箱的泊塢窗內的氣流

+0

我認爲在碼頭集裝箱內部安裝碼頭是一點點啓始。我認爲如果可能的話,最好使用ECS或Lambda或無服務器。 – Davos

回答

1

您可以通過將卷附加到容器中,從氣流泊塢窗容器中旋轉泊塢窗容器。

例子:

docker run -v /var/run/docker.sock:/var/run/docker.sock:ro -v /path/to/bin/docker:/bin/docker:ro your_airflow_image 

您可能還需要附上由碼頭工人所需的一些庫。這取決於您運行Docker的系統。只需閱讀在容器中運行docker命令時獲得的錯誤消息,它就會指示您需要附加的東西。

您的氣流容器將擁有對主機上運行的Docker的完全訪問權限。 因此,如果您啓動碼頭集裝箱,它們將運行在運行氣流容器的主機上。

+0

感謝您的回覆。我有一個添加更多的東西 - 當我有一個完整的解決方案時,我會追加答案。我在運行Ubuntu Xenial的EC2實例上運行它。我的碼頭容器是建立在debian之上的。概率。出於這個原因,我不得不在我的Dockerfile中添加docker二進制文件並啓動守護進程。我現在正在獲得權限被拒絕的錯誤,所以下一步就是將氣流作爲用戶添加到嵌套的docker實例,以便它可以觸發docker run。 –

+1

@AshishMarkanday您不能將docker二進制文件從主機附加到容器,而不是將其添加到Dockerfile中? –

+0

絕對將其添加到主機或其他容器業務流程(如ECS或Kubernetes)。不要在docker中運行docker – Davos

2

終於解決

我的EC2設置運行unbuntu Xenial 16.04和使用運行氣流

事情修改puckel /氣流泊塢窗映像,您需要在Dockerfile改變

添加在Dockerfile

USER root

安裝基座的頂部USER根爾濱是不是爲我工作,所以我不得不安裝

docker binary in my docker container

從泊塢公司倉庫安裝泊塢窗。

RUN curl -sSL https://get.docker.com/ | sh

搜索在互聯網上wrapdocker文件。將其複製到Dockerfile所在文件夾中的腳本目錄中。這將啓動氣流泊塢窗

內泊塢窗守護程序安裝魔力包裝

ADD ./script/wrapdocker /usr/local/bin/wrapdocker RUN chmod +x /usr/local/bin/wrapdocker

爲用戶添加氣流泊塢窗組,以便氣流可以運行碼頭工人的工作

RUN usermod -aG docker airflow

切換到氣流用戶

USER airflow

碼頭工人組成的文件或命令行參數來運行泊塢窗

從泊塢窗氣流泊塢窗圖像

山泊塢窗插座剛剛安裝

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

你應該是好去!