2017-04-13 110 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

你应该是好去!