当使用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
步骤:
- 通过cli
az login
登录到azure - 使用azure
docker login azure
对docker进行身份验证 - 在特定位置创建azure资源组
az group create -l uksouth -n test-aci-ctx-group
- 创建指定不同于资源组位置
docker context create aci aci-context-eastus --resource-group test-aci-ctx-group --location eastus
的位置的docker上下文 - 显示有关新上下文的信息。
docker context inspect aci-context-eastus
- 预期结果:绑定到为
docker context create
命令指定为--location
的位置的上下文,即eastus - 实际结果:绑定到与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"
创建资源组。