在码头工人里面的气流运行码头工人容器

时间:2017-04-13 07:24:17

标签: docker airflow

我在EC2实例上运行了气流,我正在安排一些启动Docker容器的任务。我怎么做?我需要在我的气流容器上安装docker吗?接下来的步骤是什么?我有一个yaml文件,我用它来旋转容器,它来自puckel / airflow Docker图像

3 个答案:

答案 0 :(得分:4)

终于解决了

我的EC2设置正在运行unbuntu Xenial 16.04并使用正在运行气流的puckel / airflow docker镜像修改

您需要在Dockerfile中更改的内容

在Dockerfile顶部添加USER root

USER root

安装docker bin对我不起作用,所以我不得不安装

docker binary in my docker container

从Docker Inc.存储库安装Docker。

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

在互联网上搜索wrapdocker文件。将其复制到Dockerfile所在文件夹的scripts目录中。这将启动airflow docker中的docker守护程序

安装魔术包装

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

将气流作为用户添加到泊坞窗组,以便气流可以运行泊坞窗作业

RUN usermod -aG docker airflow

切换到气流用户

USER airflow

Docker将文件或命令行参数组合到docker run

将docker air flow从docker airflow安装到刚刚安装的docker镜像

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

你应该好好去!

答案 1 :(得分: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命令时获得的错误消息,它将指示您需要附加的内容。

您的气流容器将可以完全访问在主机上运行的Docker。 因此,如果启动docker容器,它们将在运行气流容器的主机上运行。

答案 2 :(得分:1)

我有一个更简单的解决方案,它只需要一个短的Dockerfile即可构建派生映像:​​

FROM puckel/docker-airflow

USER root
RUN groupadd --gid 999 docker \
    && usermod -aG docker airflow
USER airflow

然后

docker build -t airflow_image .
docker run -v /var/run/docker.sock:/var/run/docker.sock:ro \
    -v /usr/bin/docker:/bin/docker:ro \
    -v /usr/lib/x86_64-linux-gnu/libltdl.so.7:/usr/lib/x86_64-linux-gnu/libltdl.so.7:ro \
    -d airflow_image