0

我将 docker 映像部署到 ACR,然后使用如下命令部署到 ACI:

az container create 
    --resource-group myrg
    --name myamazingacr 
    --image myamazingacr.azurecr.io/test3:v1 
    --cpu 1 
    --memory 1 
    --vnet myrg-vnet 
    --vnet-address-prefix 10.0.0.0/16 
    --subnet default 
    --subnet-address-prefix 10.0.0.0/24 
    --registry-login-server myamazingacr.azurecr.io 
    --registry-username xxx
    --registry-password xxx
    --ports 80

这一切都没有错误,ACI 的 IP 是 10.0.0.5 并且没有 FQDN,因为它是一个 VN。我认为这是有道理的。

当我在 Azure 之外运行映像时(即在我创建映像的本地计算机上),我可以成功访问这样的端点:

http://127.0.0.1/plot
http://127.0.0.1/predict_petal_length?petal_width=3

[127.0.0.1] 表示我在本地机器上运行镜像。

但是,这不起作用:

http://10.0.0.5/plot
http://10.0.0.5/predict_petal_length?petal_width=3

我得到:

This site can’t be reached10.0.0.5 took too long to respond.

请问有什么问题吗?

PS:

或许与此有关:

https://docs.microsoft.com/en-us/answers/questions/299493/azure-container-instance-does-not-resolve-name-wit.html

我不得不说我发现 Azure 真的很令人沮丧。似乎没有什么真正起作用。从 Azure ML 到 ACI...

PP:

这就是我们的 IT 所说的 - tbh 我不完全理解......

• 不支持私有端点,因此我们需要在资源组中创建一个 vnet,将其与当前的 dev vnet 对等,我们应该很好 • 我们基本上需要知道如何在现有 vnet 中使用网络创建 ACR不同的资源组。我正在努力寻找正确的方法来做到这一点。

4

2 回答 2

0

您的问题的可能原因是您为应用程序设置了错误的 IP 地址来侦听。IP 地址127.0.0.1是只能在机器内部使用的本地主机或环回 IP。看看这里。所以你可以尝试把IP改成0.0.0.0. 这个可以在外面访问。

于 2021-06-16T01:41:51.260 回答
0

由于您已将 ACI 部署到 Azure 虚拟网络中,因此您的容器可以与虚拟网络中的其他资源进行安全通信。因此,您可以访问 Azure vNet 中的 ACI 端点。

例如,您可以尝试将 VM 部署在 vNet 但与 ACI 不同的子网中,然后您可以尝试从 Azure VM 访问 ACI 终结点。

或者,您可以使用具有公共前端 IP 地址的应用程序网关公开容器组的静态 IP地址。

于 2021-06-08T06:30:39.037 回答