"docker context create aci""--location"参



当使用docker compose将容器组部署到Azure容器实例时,在为aci创建docker上下文docker context create aci...时指定的--location参数似乎无效。

我按照以下azure说明使用docker compose和azure容器实例以及显示docker context create命令的附加参数的docker文档

重新生产的步骤

先决条件:

Azure CLI

λ az version
{
"azure-cli": "2.22.1",
"azure-cli-core": "2.22.1",
"azure-cli-telemetry": "1.0.6",
"extensions": {}
}

Docker

λ docker-compose --version
docker-compose version 1.29.0, build 07737305

Docker Compose

λ docker --version
Docker version 20.10.5, build 55c4c88

步骤:

  1. 通过cliaz login登录到azure
  2. 使用azuredocker login azure对docker进行身份验证
  3. 在特定位置创建azure资源组az group create -l uksouth -n test-aci-ctx-group
  4. 创建指定不同于资源组位置docker context create aci aci-context-eastus --resource-group test-aci-ctx-group --location eastus的位置的docker上下文
  5. 显示有关新上下文的信息。docker context inspect aci-context-eastus
  6. 预期结果:绑定到为docker context create命令指定为--location的位置的上下文,即eastus
  7. 实际结果:绑定到与azure资源组相同位置的上下文,即uksouth
λ docker context inspect aci-context-eastus
[
{
"Name": "aci-context-eastus",
"Metadata": {
"Description": "test-aci-ctx-group@uksouth",
"Type": "aci"
},
"Endpoints": {
"aci": {
"Location": "uksouth",
"ResourceGroup": "test-aci-ctx-group",
"SubscriptionID": "xxxxxxxxxxxxxxxxxxx"
},
"docker": {
"SkipTLSVerify": false
}
},
"TLSMaterial": {},
"Storage": {
"MetadataPath": "xxxx",
"TLSPath": "xxxx"
}
}
]

这个问题的最终表现是,我无法在azure中创建容器组,因为我在无法更改的资源组的上下文中工作,但该资源组所在的位置不支持azure容器实例。当我尝试在我认为我在支持azure容器实例的位置创建的aci上下文中发出docker-compose up命令时,我得到了一个不支持的位置错误,列出了资源组的位置,而不是我为docker aci上下文指定的位置。

我是否误解了--location参数的用途?

我知道可以在容器实例和资源组之间混合和匹配位置,因为我能够通过azure cli创建一个容器实例,其位置与链接到的资源组的位置不同。

您误解了步骤。参数需要这样使用:

docker context create aci --location "eastus"

因此,您不需要先创建资源组。执行此操作时,组已在某个位置创建,您无法使用docker compose命令对其进行更改。

你有两个选择。一种是创建具有您想要的位置的资源组,例如,位置";eastus";。或者使用不带名称的参数--location "eastus"创建资源组。

最新更新