Airflow Docker 操作员删除容器或以附加模式启动容器
Airflow Docker Operator remove container or start container in attached mode
我在容器中安装了 Airflow 运行ning。
我使用Docker操作符创建了多个容器,运行一个脚本。
容器的名称是使用一些参数动态创建的,如果我列出容器以通过终端查看发生了什么,这对我来说很有意义。
比如容器名称叫做my_script_daily_A
如果脚本 运行 成功,容器将自动删除。
如果任务失败,我会重试。
如果脚本失败并且气流重试 运行:
就会出现问题
如果脚本失败,容器仍将处于退出状态,不会被删除。这使得它的名称已经分配,因此当 Airflow 运行 再次执行任务时,它会抛出错误“具有此名称的容器已存在”。
为了解决这个问题,我创建了一个脚本,每分钟 运行 在主机上运行一次:
for i in $(docker ps -aq --filter status=exited); do
echo 'Removing '; docker rm $i done
我对此不是很满意,我宁愿只有在失败时才触发这个脚本,如果我能检测到失败是否是由于名称冲突引起的,那就更好了。
我知道您可以使用“on_failure_callback”属性设置回调操作。
但是 运行只有当我 运行直接在主机上而不是在容器上使用 Airflow 时,我的脚本才能删除退出的容器。
对这里的操作有什么建议吗?
这已在 Docker Provider 1.0.1 中修复:
https://airflow.apache.org/docs/apache-airflow-providers-docker/stable/index.html#id9
之前当auto_remove设置为true时容器报错,确实没有去掉
只需升级到最新的 Docker 提供程序,问题应该得到解决。
我在容器中安装了 Airflow 运行ning。
我使用Docker操作符创建了多个容器,运行一个脚本。
容器的名称是使用一些参数动态创建的,如果我列出容器以通过终端查看发生了什么,这对我来说很有意义。
比如容器名称叫做my_script_daily_A
如果脚本 运行 成功,容器将自动删除。
如果任务失败,我会重试。 如果脚本失败并且气流重试 运行:
就会出现问题如果脚本失败,容器仍将处于退出状态,不会被删除。这使得它的名称已经分配,因此当 Airflow 运行 再次执行任务时,它会抛出错误“具有此名称的容器已存在”。
为了解决这个问题,我创建了一个脚本,每分钟 运行 在主机上运行一次:
for i in $(docker ps -aq --filter status=exited); do
echo 'Removing '; docker rm $i done
我对此不是很满意,我宁愿只有在失败时才触发这个脚本,如果我能检测到失败是否是由于名称冲突引起的,那就更好了。
我知道您可以使用“on_failure_callback”属性设置回调操作。
但是 运行只有当我 运行直接在主机上而不是在容器上使用 Airflow 时,我的脚本才能删除退出的容器。
对这里的操作有什么建议吗?
这已在 Docker Provider 1.0.1 中修复:
https://airflow.apache.org/docs/apache-airflow-providers-docker/stable/index.html#id9
之前当auto_remove设置为true时容器报错,确实没有去掉
只需升级到最新的 Docker 提供程序,问题应该得到解决。