标签: azure-container-instances

可以使用触发器调用Azure容器实例吗?

我想使用Azure容器实例使用旧版应用程序运行长时间(10分钟)的分析测试。当某项出现在CosmosDB中时,我想触发新容器实例的启动。

容器将具有轻量级代理,它将从CosmosDB中提取数据,将数据写入容器文件系统,运行旧版应用程序,获取输出并将其推回CosmosDB。

宇宙只是一个例子。可能是blob或其他任何可以存储几Mb数据的东西。

是否可以通过这种方式触发新容器的创建?任何参考/示例代码?

triggers azure-functions azure-container-instances

5
推荐指数
1
解决办法
1359
查看次数

将ACI实例映射到Azure上的保留IP

是否有关于持续部署到Azure容器实例的最佳实践,以便保留公共IP?或者将Azure保留IP映射到ACI在部署时绑定的动态IP?

azure azure-container-service azure-container-instances

4
推荐指数
1
解决办法
638
查看次数

终止的ACI不会消失

我正在处理一个新的容器映像,它运行我的工作进程以排空Azure队列.一旦队列为空,我的应用程序退出,我希望ACI取消分配并被删除.我所看到的是ACI棒.它处于"终止"状态,重启次数为0,正如我所料(在Azure门户中看到),但为什么不完全从ACI列表中删除/删除?

我使用Azure cli创建这些实例,并指定restart never选项.这是我的命令行(减去图像特定的细节):

az container create --cpu 4 --memory 14 --restart-policy never --os-type windows --location eastus
Run Code Online (Sandbox Code Playgroud)

我当然也想知道结算停止的地方.一旦我看到终止状态,我希望结算已经停止.虽然目前尚不清楚.我当然可以手动删除ACI,它会立即消失,如果退出应用程序也一样吗?

azure-container-instances

4
推荐指数
1
解决办法
527
查看次数

部署 Azure 容器而不运行它们

我是在 Azure 中运行容器的新手,我对下面的用例感到困惑,如果您觉得我错误地使用了容器,请随时给我另一种方法。

核心问题:我无法/不知道如何通过命令行或 ARM 模板部署在“停止”状态下创建容器实例

长读用例:

我创建了一个运行 python 作业的 docker 映像。

该作业需要每天运行并通过数据工厂触发。数据工厂将确定环境、设置 docker 命令、更新容器映像,然后通过批处理帐户执行容器。该作业本身会执行 api 调用并将一些数据写入 sql。这部分工作正常,容器状态进入运行状态,然后停止(我关闭了自动重启)

在 Azure DevOps 中,我有一个管道来构建作业的映像并将其存储在 azure 存储库中。这很好用。

由于我需要一个容器实例作为我的资源组中的资源,因此我决定将它们放入我的基础 ARM 模板中。问题:当使用 DevOps / Arm 模板部署来部署容器时,它会部署并运行作业实例,这不太好,我希望在“停止”状态下创建容器。原因是该作业否则会将数据写入我们的数据库,这是不需要的。

我想知道什么是最好的方法/最好的指导方针是什么,我考虑了这两种情况,但对于这两种情况,我的直觉都说不。

场景 1:拥有一个始终运行的容器(让它执行 bin/bash)并使用“az container exec”传递命令。为什么我不想这样做:我目前每个环境都有一个图像,该图像具有该环境的确切工作,并且我没有看到让 3 个备用容器一直运行以每天触发一次的有用性

场景 2:不通过 DevOps 处理容器实例创建,而是忽略问题并使用数据工厂和批处理帐户创建它。这意味着,当触发作业时,它将创建(并因此运行容器)。随后,我可以在使用后将其删除。

为什么我不想这样做:我将容器实例视为基础设施的一部分(因为它是您在资源组内部署的东西,如果我的观点错误,请纠正我)因此从这个意义上说,通过管理资源计划的数据工厂作业看起来不太好,它是一种克服无法在停止状态下部署容器实例的问题的黑客方法。


# set base image (host OS)
FROM python:3.7-buster
# Argument for environment selection
ARG environment
ENV environment ${environment}
# set the working directory in the container
WORKDIR /

# copy the dependencies file to the working …
Run Code Online (Sandbox Code Playgroud)

containers azure docker azure-container-instances

4
推荐指数
1
解决办法
922
查看次数

在容器组的“imageRegistryCredentials”中找到重复的映像注册表“index.docker.io”

[PS C:\Source\VelocityAzurev0.10.0\credentialagent-docker-compose> docker compose up
[+] Running 0/1
 - Group credentialagent-docker-compose  Error                                                                                                                                                                                          1.7s
containerinstance.ContainerGroupsClient#CreateOrUpdate: Failure sending request: StatusCode=400 -- Original Error: Code="DuplicateImageRegistries" Message="Duplicate image registries 'index.docker.io' found in the 'imageRegistryCredentials' of container group 'credentialagent-docker-compose'."
PS C:\Source\VelocityAzurev0.10.0\credentialagent-docker-compose>]
Run Code Online (Sandbox Code Playgroud)

直到今天早上,这对我来说一直有效,没有明显的 YAML 更改。如果我调整 YAML 以使用本地与 azure 资源并使用本地 Docker 上下文,则组合可以工作。先前成功的运行已通过“compose down”删除。我仔细检查了 Azure 订阅,资源组中似乎不存在容器实例或组。

我似乎找不到与 Code="DuplicateImageRegistries" 有关的此特定错误的任何相关问题/解决方案。

docker docker-compose azure-container-instances

4
推荐指数
1
解决办法
926
查看次数

删除子网失败

我通过 Azure CLI 创建了一个具有新 vnet 和子网的新 Azure 容器实例 (ACI)

我从 Azure 门户中删除了 ACI,现在我尝试删除子网,但出现以下错误:

无法删除子网“SubnetNAme”。错误:子网 SubnetNAme 正被 aci-network-profile-VNETNAME-SubnetNAme/eth0/ipconfigprofile 使用,无法删除。要删除子网,请删除子网内的所有资源。请参见 aka.ms/deletesubnet。

如果我尝试访问 aci-network-profile-VNETNAME-SubnetNAme/eth0/ipconfigprofile,它会告诉我不存在此资源:

详细信息 未找到资源,可能已被删除。如果这是从仪表板上的固定磁贴启动的,则应将其删除。

azure azure-virtual-network azure-container-instances

3
推荐指数
1
解决办法
2245
查看次数

Azure逻辑应用程序:等待ACI容器终止以获取其日志

我有一个 Azure 逻辑应用程序,可以正确创建 Azure 容器实例。容器启动、完成其工作并终止。我需要使用适当的连接器收集其日志并将其写入天蓝色的 blob。

我已准备就绪,但我不知道在使用“获取容器日志”连接器收集日志之前如何等待容器终止。

如果容器作业将持续可预测的时间,我可以在获取日志之前使用延迟连接器,这就足够了(我已经尝试过短作业并且效果很好)。但我的工作可能会持续几个小时,这取决于一些外部因素,所以延迟技术不起作用。

我尝试使用“直到”连接器,以及延迟和“获取容器组的属性”容器来等待容器的状态不“终止”,但没有成功(也许我做错了)。无论如何,这可能相当昂贵,因为每张“支票”都要收费。

在询问其日志之前如何等待容器终止?

谢谢。

azure docker azure-logic-apps azure-container-instances

3
推荐指数
1
解决办法
2340
查看次数

Azure 容器实例上的 CPU 使用率图表

在 ACI 上运行简单的 Linux 容器时,门户中“图形化”的 CPU 使用率与在容器本身中运行“top”的 CPU 使用率之间存在巨大差异。

我可以看到我的进程在“top”运行,CPU 使用率保持在 5% 左右,机器上的负载低于 0.10,但门户报告使用率约为 60%。它是一个单处理器容器。

在较重的负载下,我看到 CPU 使用率为 300-400%,这感觉像是与处理器数量相关的问题,但即使这样也不能累加,并且如前所述,它是一个单处理器容器

有什么想法吗 ??

docker azure-container-instances

3
推荐指数
1
解决办法
1916
查看次数

Vnet 内的负载平衡 ACI

我在 vnet 中有 Azure 容器实例,我想实现负载平衡,但想不出可行的解决方案。对于上下文,它将是一组联系负载平衡资源的虚拟机,该资源会将请求定向到其中一个 ACI。

到目前为止,我尝试过的有 Azure 负载均衡器(不适用于 ACI)和 Azure 流量管理器(不能位于 vnet 内)。我认为应用程序网关也不是一个可行的解决方案。我想知道是否有人以前遇到过这种情况,他们是如何克服的,或者是否有人有我可以测试的潜在解决方案?

load-balancing azure azure-container-instances

3
推荐指数
1
解决办法
1173
查看次数

错误:使用 Postman API 测试时套接字挂起

我们已经部署了一些 API(很少使用 Node.js/Express.js 开发,其他使用 Python Quart 开发)。我们的所有 API 均使用 Azure 容器化实例进行部署。我们通过 Postman 设置了定期 API 监控。API 在大约 20% 的情况下会失败,并出现错误:套接字挂起。我们在开发区域或通过浏览器访问 API 时从未遇到过此问题。什么可能导致此套接字挂起问题以及我们如何克服它?

我们的 Node.js API Dockerfile 设置如下:

FROM node:16

WORKDIR /app

COPY package*.json ./
RUN npm install
COPY . .
RUN rm -rf .env
RUN mv production.env .env

#ENV PORT=5000
EXPOSE 5000

CMD ["npm", "run", "prod"]
Run Code Online (Sandbox Code Playgroud)

Python Quart API Dockerfile 设置如下:

FROM continuumio/miniconda3

COPY . /api/

WORKDIR /api/src

RUN conda env create -f /api/environment.yml
COPY entrypoint.sh ./
RUN chmod +x ./entrypoint.sh

ENTRYPOINT …
Run Code Online (Sandbox Code Playgroud)

azure node.js postman azure-container-instances quart

3
推荐指数
1
解决办法
3万
查看次数