【发布时间】:2021-07-10 08:04:08
【问题描述】:
我已经按照此处所述使用 docker-compose 设置了 Airflow。 https://airflow.apache.org/docs/apache-airflow/stable/start/docker.html
还有一个气流任务必须像执行 docker 命令一样
BashOperator(
task_id='my',
bash_command="""
docker run ..............
""",
dag=dag,
)
这意味着需要 Docker 包in the airflow docker image, but there is not。
所以,我尝试构建自己的airflow image based docker installed image。喜欢,
FROM apache/airflow:2.0.1 as airflow-image
SHELL ["/bin/bash", "-o", "pipefail", "-e", "-u", "-x", "-c"]
USER root
RUN apt-get update && apt-get --assume-yes install \
apt-transport-https \
ca-certificates \
curl \
gnupg \
lsb-release
RUN curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
RUN echo $(lsb_release -cs)
RUN echo \
"deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
RUN apt-get update
RUN apt-get --assume-yes install docker-ce docker-ce-cli containerd.io
使用上面 Dockerfile 的镜像,安装 docker 就像,
$ whereis docker
docker: /usr/bin/docker /usr/libexec/docker
$ whereis dockerd
dockerd: /usr/bin/dockerd
但是我不能让 docker 守护进程启动,所以气流任务可以执行docker run 命令。
在我看到这个 ENTRYPOINT 并测试了几件事之后, https://github.com/apache/airflow/blob/master/Dockerfile#L535
ENTRYPOINT ["/usr/bin/dumb-init", "--", "/entrypoint"]
我想知道我是否可以启动 docker daemon。
有什么建议吗? 我可以制作一个基于气流:2.0.1 并支持 docker commans 的 docker 映像吗?
【问题讨论】:
标签: docker dockerfile airflow