You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Airflow结合Docker实现定时运行自定义镜像任务?

Airflow 搭配 Docker 运行自定义镜像实操步骤

1. 先搞定Airflow的Docker部署

如果还没部署Airflow,直接用官方的docker-compose配置:

  • 拉取配置文件:curl -LfO 'https://airflow.apache.org/docs/apache-airflow/stable/docker-compose.yaml'
  • 初始化Airflow:docker-compose up airflow-init
  • 启动所有服务:docker-compose up -d
    启动后访问 http://localhost:8080 就能打开Airflow WebUI,默认账号密码都是airflow。

2. 确认你的自定义镜像可访问

你已经做了打印"hi"的镜像,假设镜像名叫my-hi-image:latest:

  • 如果是本地构建的,确保和Airflow在同一个Docker环境下(不用额外操作,本地镜像直接能被Airflow容器拉取)
  • 如果是私有仓库的镜像,后续要在Airflow里配置仓库登录信息

3. 配置Airflow的Docker连接

让Airflow能调用Docker服务,得先配连接:

  • 打开Airflow WebUI,进入Admin > Connections
  • 点**+新建连接,连接类型选Docker**
  • 连接ID填docker_default(后面DAG里要对应这个ID)
  • Host填unix://var/run/docker.sock(本地环境下,这样能让Airflow容器访问宿主机的Docker服务)
  • 保存连接

4. 编写DAG文件

在Airflow的dags目录下新建hi_docker_dag.py,内容如下:

from airflow import DAG
from airflow.providers.docker.operators.docker import DockerOperator
from datetime import datetime, timedelta

default_args = {
    'owner': 'airflow',
    'depends_on_past': False,
    'start_date': datetime(2024, 1, 1),
    'email_on_failure': False,
    'email_on_retry': False,
    'retries': 1,
    'retry_delay': timedelta(minutes=5),
}

with DAG(
    'run_hi_docker_image',
    default_args=default_args,
    description='运行打印"hi"的自定义Docker镜像',
    schedule_interval='0 */5 * * *',  # 每隔5小时整点运行
    catchup=False,
    tags=['docker', '示例'],
) as dag:

    run_docker_task = DockerOperator(
        task_id='run_hi_image',
        image='my-hi-image:latest',  # 替换成你的镜像名和标签
        api_version='auto',
        auto_remove=True,  # 任务完成后自动删除容器
        docker_conn_id='docker_default',  # 对应前面配置的连接ID
        # 如果你的镜像Dockerfile里已经设置了CMD ["echo", "hi"],下面的command可以删掉
        command='echo "hi"',
        network_mode='bridge',
    )

    run_docker_task

5. 启动并验证DAG

  • 把DAG文件放到dags目录后,等待Airflow自动加载(或者在WebUI里点Refresh刷新DAG列表)
  • 找到run_hi_docker_image这个DAG,打开开关启用它
  • 可以手动触发测试:点DAG的Play按钮选Trigger DAG,然后去Graph视图看任务状态,日志里能看到打印的"hi"

注意事项

  • 检查官方docker-compose.yaml里,airflow-worker和airflow-scheduler服务是否挂载了/var/run/docker.sock:/var/run/docker.sock,没有的话要加上,不然Airflow容器访问不了Docker服务
  • 如果用私有镜像仓库,要在Docker连接里配置仓库的用户名和密码,或者在Airflow容器里提前执行docker login完成登录

内容的提问来源于stack exchange,提问作者ben par

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 10:25:14