Azure中az acr run与az container create命令有何区别
az acr run 和 az container create 核心差异 这俩命令虽然都能触发容器镜像执行,但分属ACR(Azure容器注册表)和ACI(Azure容器实例)两个完全独立的服务,设计目标根本不一样,只是刚好都具备运行容器的能力而已。
az acr run 定位:ACR内置的临时任务执行工具
这个命令属于ACR Tasks功能的快速触发入口,从设计之初就不是用来部署常驻服务的:
- 资源归属:容器运行在ACR托管的临时计算资源上,执行过程不会在你的Azure订阅下生成独立的、可单独管理的容器资源,不需要你提前规划资源组、网络配置
- 生命周期:属于一次性作业,命令执行完容器就会被直接销毁释放,没有常驻能力,也不支持配置公网IP、域名、持久化存储、重启策略这类服务化配置
- 适用场景:
- 镜像推送后的快速冒烟测试,验证镜像能不能正常启动、有没有启动报错,你贴的示例命令最后带
/dev/null就是最典型的用法:不需要传本地构建上下文,直接拉取ACR内的镜像跑一下看结果 - 执行短周期的一次性容器化作业,比如镜像安全扫描、批量数据处理、构建打包这类跑完就结束的任务
- 镜像推送后的快速冒烟测试,验证镜像能不能正常启动、有没有启动报错,你贴的示例命令最后带
- 限制:运行时长有明确配额限制,超时会被强制终止,完全不适合跑对外提供服务的业务。
az container create 定位:ACI服务的容器部署入口
这个命令是用来在ACI(Serverless容器计算服务)上创建正式的容器实例,核心目标是部署可长期运行的容器化负载:
- 资源归属:创建的容器实例是你订阅下的独立Azure资源,有独立的计算、网络配置,可单独管理、监控、配置权限
- 生命周期:默认是常驻运行的,除非你手动删除或者配置了失败终止策略,否则容器会持续运行,支持配置自动重启策略
- 能力范围:从你贴的示例就能看到它支持服务化配置:开放端口、绑定公网DNS标签、指定部署区域,除此之外还支持挂载持久化存储、注入环境变量/密钥、接入虚拟网络、配置CPU/内存配额等全套生产部署需要的能力
- 适用场景:
- 部署不需要K8s这类复杂编排的长期运行的容器化服务,比如简单Web应用、后台常驻处理程序
- 承载中长周期的事件驱动型作业,比ACR临时任务的时长限制宽松很多
- 快速搭建可对外访问的临时测试环境
快速选型参考
- 只是验证镜像可用性、跑个几分钟内能结束的一次性任务:选
az acr run,不需要提前准备其他资源,执行完自动清理,操作更轻量 - 要部署可长期运行、能对外提供访问能力、有独立生命周期的容器负载:选
az container create
AZ-204考点提示:注意别把ACR Tasks的能力和ACI搞混,
az acr run是手动触发的快速临时任务,同属ACR Tasks的az acr task create还能创建绑定Git提交、基础镜像更新触发的自动任务,这些都是ACR侧的构建、测试、作业能力,和ACI用来部署运行中服务的定位完全不同。
内容的提问来源于stack exchange,提问作者QQQ
相关产品推荐
相关产品推荐

