![](/img/trans.png)
[英]Can't pull image from private Azure Container Registry when using Az CLI to create a new Azure Container Instance
[英]Using Azure Container Registry creating new Azure Container Instance from C#
我創建了一個Azure容器注冊表,並將自定義ACI上傳到注冊表 - 沒問題 - 一切都按預期工作。 我嘗試使用Azure門戶從映像創建容器實例,並且沒有問題 - 但是 - 當我想使用Microsoft Azure管理容器實例Fluent API使用C#自動化時,我遇到問題,即使我感覺我已經遍布互聯網和設置,尋找隱藏的障礙物,我一直沒有找到太多的幫助。
我的代碼如下:
var azureCredentials = new AzureCredentials(new
ServicePrincipalLoginInformation
{
ClientId = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
ClientSecret = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}, "xxxxxxxxxxxxxxxxxxxxxxxxxxxx",
AzureEnvironment.AzureGlobalCloud);
var azure = Azure
.Configure()
.Authenticate(azureCredentials)
.WithSubscription("xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx");
IContainerGroup containerGroup = azure.ContainerGroups.Define("mytestgroup")
.WithRegion(Region.EuropeWest)
.WithExistingResourceGroup("mytest-rg")
.WithLinux()
.WithPrivateImageRegistry("mytestreg.azurecr.io", "mytestreg", "xxxxxxxxxxxxxx")
.WithoutVolume()
.DefineContainerInstance("mytestgroup")
.WithImage("mytestimage/latest")
.WithExternalTcpPort(5555)
.WithCpuCoreCount(.5)
.WithMemorySizeInGB(.5)
.Attach()
.Create();
上面的代碼一直給我一個例外:
Microsoft.Rest.Azure.CloudException: 'The image 'mytestimage/latest' in container group 'mytestgroup' is not accessible. Please check the image and registry credential.'
我嘗試了幾件事;
docker login
測試憑據 - 沒問題。 docker pull mytestreg.azurecr.io/mytestimage
拉圖像docker pull mytestreg.azurecr.io/mytestimage
- 沒問題。 WithPublicImageRegistryOnly
交換WithPrivateImageRegistry
並在WithImage
使用debian
按WithImage
工作 - 沒問題。 latest
標簽從圖像名稱中刪除 - 仍然不起作用。 我不知道為什么私有注冊表的憑據不起作用 - 我直接從Azure門戶復制/粘貼以避免拼寫錯誤,嘗試手動輸入等。
使用Fiddler檢查流量並未發現任何有趣的內容,除了上述異常消息直接從Azure Management API返回。
我遺失的顯而易見的事情是什么?
在過去幾周我遇到了同樣的問題,我終於找到了解決方案。 您應該在圖像名稱前添加azure注冊服務器名稱。 所以按照你的例子改變:
.WithImage("mytestimage/latest")
至:
.WithImage("mytestreg.azurecr.io/mytestimage:latest")
至少那個為我做了,我希望它可以幫助別人。
上面的答案(即使用完整的azure注冊服務器名稱):
.WithImage("mytestreg.azurecr.io/mytestimage:latest")
似乎是解決方案的一部分,但即使有了這種改變,我仍然看到了這個錯誤。 通過網頁上的其他示例( https://github.com/Azure-Samples/aci-dotnet-create-container-groups-using-private-registry/blob/master/Program.cs )查看我需要的內容,改變了我的azure身份驗證:
azure = Azure.Authenticate(authFilePath).WithDefaultSubscription();
至:
AzureCredentials credentials = SdkContext.AzureCredentialsFactory.FromFile(authFilePath);
azure = Azure
.Configure()
.WithLogLevel(HttpLoggingDelegatingHandler.Level.Basic)
.Authenticate(credentials)
.WithDefaultSubscription();
隨着這種變化,事情現在正在發揮作用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.